com.sun.jts.CosTransactions.Log Maven / Gradle / Ivy
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can
* obtain a copy of the License at
* https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/
//----------------------------------------------------------------------------
//
// Module: Log.java
//
// Description: Transaction state logger.
//
// Product: com.sun.jts.CosTransactions
//
// Author: Simon Holdsworth
//
// Date: March, 1997
//
// Copyright (c): 1995-1997 IBM Corp.
//
// The source code for this program is not published or otherwise divested
// of its trade secrets, irrespective of what has been deposited with the
// U.S. Copyright Office.
//
// This software contains confidential and proprietary information of
// IBM Corp.
//----------------------------------------------------------------------------
package com.sun.jts.CosTransactions;
// Import required classes.
import java.util.logging.Logger;
import java.util.logging.Level;
import com.sun.logging.LogDomains;
import com.sun.jts.utils.LogFormatter;
/**The Log class provides operations that control the physical log
* as an entity versus the individual LogFiles that form the log. It supports
* the initialisation, opening and termination of the log. Different physical
* logs can be placed on the system with only minor changes to the methods
* contained in this class.
*
* @version 0.01
*
* @author Simon Holdsworth, IBM Corporation
*
* @see
*/
//----------------------------------------------------------------------------
// CHANGE HISTORY
//
// Version By Change Description
// 0.01 SAJH Initial implementation.
//-----------------------------------------------------------------------------
class Log {
/**A reference to the LogControl object.
*/
private LogControl logControl = null;
/**The log path.
*/
// private static String logPath = null;
private String logPath = null;
/*
Logger to log transaction messages
*/
static Logger _logger = LogDomains.getLogger(Log.class, LogDomains.TRANSACTION_LOGGER);
/**Default Log constructor.
*
* @param
*
* @return
*
* @see
*/
Log() {
// We need to ensure that messaging is initialised as this may be called
// prior to SOMTR_Init.
// Initialise the instance variables.
logPath = LogControl.getLogPath();
}
Log(String logPath) {
this.logPath = logPath;
}
/**Initialises the log.
*
* @param
*
* @return
*
* @see
*/
boolean initialise() {
boolean result = true;
// Call the initialize operation for the log
logControl = new LogControl();
logControl.initLog(false,false,logPath);
return result;
}
/**Opens the log for the given server.
*
* The given LogSOS object, if any, will be called in the event of the log
* going short-on-storage. A LogFile object reference is returned that is used
* for operations on the specific portion of the log.
*
* @param serverName The name of the server whose log file is being opened.
* @param upcall The object which will handle upcalls from the log.
*
* @return The object representing the physical log file.
*
* @see
*/
LogFile open( String serverName,
LogUpcallTarget upcall ) {
LogFile logFile = null;
boolean[] newLog = new boolean[1]; newLog[0] = true;
// Open the log using the server name.
try {
LogHandle handle = logControl.openFile(serverName,upcall,null,newLog);
// Create a new LogFile object with the handle to represent the open log.
logFile = new LogFile(handle);
}
// If the log open failed, report the error.
catch( LogException le ) {
_logger.log(Level.SEVERE,"jts.log_error",le);
String msg = LogFormatter.getLocalizedMessage(_logger,"jts.log_error",
new java.lang.Object[] {le.toString()});
throw (org.omg.CORBA.INTERNAL) (new org.omg.CORBA.INTERNAL(msg)).initCause(le);
}
return logFile;
}
/**Terminates the log.
*
* @param
*
* @return
*
* @see
*/
boolean terminate() {
boolean result = true;
// No special action needed after the close for the logger
return result;
}
/**Determines whether a log file exists for the given server.
*
* This method may be used without initialising the Log object to determine
* whether recovery should be performed, without initialising the log or the OTS.
*
* @param String
*
* @return
*
* @see
*/
static boolean checkFileExists( String serverName ) {
// Check whether the file exists.
boolean exists = false;
if( serverName != null ) {
String logPath = LogControl.getLogPath();
exists = LogControl.checkFileExists(serverName,logPath);
}
return exists;
}
/**Dumps the state of the object.
*
* @param
*
* @return
*
* @see
*/
void dump() {
//! somtrDUMP_OBJECT_HEADER;
// Dump all of the instance variables in the LogFile object, without going
// any further down object references.
logControl.dump();
}
}