diff --git a/rse/plugins/org.eclipse.rse.logging/HelpContexts.xml b/rse/plugins/org.eclipse.rse.logging/HelpContexts.xml
index 44abfd5c409..b3c46def8db 100644
--- a/rse/plugins/org.eclipse.rse.logging/HelpContexts.xml
+++ b/rse/plugins/org.eclipse.rse.logging/HelpContexts.xml
@@ -12,15 +12,18 @@ Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
Contributors:
-{Name} (company) - description of contribution.
+Michael Berger (IBM Canada) - 148434 Better user assistance for logging preference page.
-->
-
-
- Settings for the logging of messages.
-
-
+
+
+This is the RSE Logging preference page.
+You can specify what severity of messages you wish to log - from informational messages, to warnings, to errors.
+The debug setting provides the most detail.
+Messages are logged to the .log file in the .metadata folder of the workspace.
+
+
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.logging/META-INF/MANIFEST.MF b/rse/plugins/org.eclipse.rse.logging/META-INF/MANIFEST.MF
index 64c8e13e842..b4b50377adf 100644
--- a/rse/plugins/org.eclipse.rse.logging/META-INF/MANIFEST.MF
+++ b/rse/plugins/org.eclipse.rse.logging/META-INF/MANIFEST.MF
@@ -9,5 +9,6 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime
Eclipse-LazyStart: true
Export-Package: org.eclipse.rse.logging,
- org.eclipse.rse.logging.performance
+ org.eclipse.rse.logging.performance,
+ org.eclipse.rse.logging.ui
Bundle-Vendor: Eclipse.org
diff --git a/rse/plugins/org.eclipse.rse.logging/build.properties b/rse/plugins/org.eclipse.rse.logging/build.properties
index 7ec1cc0eea6..125d3f96f42 100644
--- a/rse/plugins/org.eclipse.rse.logging/build.properties
+++ b/rse/plugins/org.eclipse.rse.logging/build.properties
@@ -1,5 +1,4 @@
bin.includes = HelpContexts.xml,\
- RemoteSystemsLogging.properties,\
plugin.properties,\
plugin.xml,\
style/,\
diff --git a/rse/plugins/org.eclipse.rse.logging/plugin.xml b/rse/plugins/org.eclipse.rse.logging/plugin.xml
index 0a291c6a8f3..4f743c2cecd 100644
--- a/rse/plugins/org.eclipse.rse.logging/plugin.xml
+++ b/rse/plugins/org.eclipse.rse.logging/plugin.xml
@@ -31,7 +31,7 @@ Contributors:
-
+
diff --git a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/internal/logging/LoggerController.java b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/internal/logging/LoggerController.java
deleted file mode 100644
index 5e66d53a317..00000000000
--- a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/internal/logging/LoggerController.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2002, 2006 IBM Corporation. All rights reserved.
- * This program and the accompanying materials are made available under the terms
- * of the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Initial Contributors:
- * The following IBM employees contributed to the Remote System Explorer
- * component that contains this file: David McKnight, Kushal Munir,
- * Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
- * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
- *
- * Contributors:
- * {Name} (company) - description of contribution.
- ********************************************************************************/
-
-package org.eclipse.rse.internal.logging;
-
-import java.util.Hashtable;
-
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.rse.logging.Logger;
-
-public class LoggerController {
-
- private static Hashtable pluginTable = new Hashtable();
-
- /**
- * Return an previously cached Logger instance.
- * It will return null if no Logger instance has been created
- * for this plugin before.
- */
- public static Logger getInst(Plugin plugin) {
- if (pluginTable.containsKey(plugin))
- return (Logger) pluginTable.get(plugin);
- else
- return null;
- }
-
- public static void registerInst(Plugin plugin, Logger logger) {
- pluginTable.put(plugin, logger);
- return;
- }
-
- public static void freeInst(Plugin plugin) {
- // get cached instance if one exists.
- Logger logger = getInst(plugin);
- // no luck, this means we have an incorrect free, do nothing.
- if (logger == null)
- return;
- logger.freeResources();
- pluginTable.remove(plugin);
- return;
-
- }
-
-}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/LoggingPreferenceInitializer.java b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/internal/logging/LoggingPreferenceInitializer.java
similarity index 63%
rename from rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/LoggingPreferenceInitializer.java
rename to rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/internal/logging/LoggingPreferenceInitializer.java
index ff06d0c574d..20d1ce88335 100644
--- a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/LoggingPreferenceInitializer.java
+++ b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/internal/logging/LoggingPreferenceInitializer.java
@@ -14,26 +14,30 @@
* {Name} (company) - description of contribution.
********************************************************************************/
-package org.eclipse.rse.logging;
+package org.eclipse.rse.internal.logging;
+import org.eclipse.core.runtime.Preferences;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.rse.logging.IRemoteSystemsLogging;
+import org.eclipse.rse.logging.RemoteSystemsLoggingPlugin;
/**
* This class initializes logging preferences.
*/
public class LoggingPreferenceInitializer extends AbstractPreferenceInitializer {
- /**
- * Constructor.
- */
- public LoggingPreferenceInitializer() {
- super();
- }
+ /**
+ * Constructor.
+ */
+ public LoggingPreferenceInitializer() {
+ super();
+ }
- /**
- * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
- */
- public void initializeDefaultPreferences() {
- RemoteSystemsLoggingPlugin.getDefault().initializeDefaultPreferences();
- }
+ /**
+ * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
+ */
+ public void initializeDefaultPreferences() {
+ Preferences prefs = RemoteSystemsLoggingPlugin.getDefault().getPluginPreferences();
+ prefs.setDefault(IRemoteSystemsLogging.DEBUG_LEVEL, IRemoteSystemsLogging.LOG_ERROR);
+ }
}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/Activator.java b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/Activator.java
deleted file mode 100644
index 4f9eaa3bd8a..00000000000
--- a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/Activator.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2006 IBM Corporation. All rights reserved.
- * This program and the accompanying materials are made available under the terms
- * of the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Initial Contributors:
- * The following IBM employees contributed to the Remote System Explorer
- * component that contains this file: David McKnight, Kushal Munir,
- * Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
- * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
- *
- * Contributors:
- * {Name} (company) - description of contribution.
- ********************************************************************************/
-
-package org.eclipse.rse.logging;
-
-import org.eclipse.core.runtime.Plugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class Activator extends Plugin {
-
- //The shared instance.
- private static Activator plugin;
-
- /**
- * The constructor.
- */
- public Activator() {
- plugin = this;
- }
-
- /**
- * This method is called upon plug-in activation
- */
- public void start(BundleContext context) throws Exception {
- super.start(context);
- }
-
- /**
- * This method is called when the plug-in is stopped
- */
- public void stop(BundleContext context) throws Exception {
- super.stop(context);
- plugin = null;
- }
-
- /**
- * Returns the shared instance.
- */
- public static Activator getDefault() {
- return plugin;
- }
-
-}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/IRemoteSystemsLogging.java b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/IRemoteSystemsLogging.java
index 44e19560d5f..ae4d3f32de0 100644
--- a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/IRemoteSystemsLogging.java
+++ b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/IRemoteSystemsLogging.java
@@ -21,59 +21,39 @@ package org.eclipse.rse.logging;
*/
public interface IRemoteSystemsLogging {
-
- // All attributes here are static final.
/**
* Name of the key that controls the logging level.
*/
- String PLUGIN_ID = "org.eclipse.rse.logging";
+ public static final String PLUGIN_ID = "org.eclipse.rse.logging";
/**
* Name of the key that controls the logging level.
* (value is "debug_level").
*/
- String DEBUG_LEVEL = "debug_level";
-
- /**
- * Name of the key that controls the log location.
- * (value is "log_location").
- */
- String LOG_LOCATION = "log_location";
+ public static final String DEBUG_LEVEL = "debug_level";
/**
* Set debug_level to this value to get Error messages.
* (value is 0).
*/
- int LOG_ERROR = 0;
+ public static final int LOG_ERROR = 0;
/**
* Set debug_level to this value to get Warning messages.
* (value is 1).
*/
- int LOG_WARNING = 1;
+ public static final int LOG_WARNING = 1;
/**
* Set debug_level to this value to get Information messages.
* (value is 2).
*/
- int LOG_INFO = 2;
+ public static final int LOG_INFO = 2;
/**
* Set debug_level to this value to get Debug messages.
* (value is 3).
*/
- int LOG_DEBUG = 3;
-
- /**
- * Set log_location to this value to log to a file.
- * (value is "Log_To_File").
- */
- String LOG_TO_FILE = "Log_To_File";
-
- /**
- * Set log_location to this value to log to a Std out.
- * (value is "Log_To_StdOut").
- */
- String LOG_TO_STDOUT = "Log_To_StdOut";
+ public static final int LOG_DEBUG = 3;
}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/Logger.java b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/Logger.java
index 3cf0f6522a4..6ab0e701917 100644
--- a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/Logger.java
+++ b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/Logger.java
@@ -19,15 +19,11 @@ package org.eclipse.rse.logging;
import org.eclipse.core.runtime.ILog;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Plugin;
import org.eclipse.core.runtime.Preferences;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
-import org.eclipse.rse.internal.logging.RemoteSystemLogListener;
-import org.osgi.framework.Bundle;
-
/**
* Generic Logger class for handling Remote Systems logging and tracing.
@@ -59,10 +55,9 @@ import org.osgi.framework.Bundle;
* out.logInfo("loading myPlugin class.");
* //out.logWarning("This is a warning message.");
* //out.logError("This is an error.", new Exception());
- * //if (Logger.DEBUG)
- * // out.logDebugMessage(
- * // "myPlugin",
- * // "this is a debug message from class myPlugin.");
+ * //out.logDebugMessage(
+ * // "myPlugin",
+ * // "this is a debug message from class myPlugin.");
* ......
* ......
* }
@@ -77,70 +72,42 @@ import org.osgi.framework.Bundle;
*/
public class Logger implements IPropertyChangeListener {
- public static final String Copyright =
- "(C) Copyright IBM Corp. 2002, 2003. All Rights Reserved.";
-
- /**
- * This SHOULD be set to false in production.
- * Used to compile out developement debug messages.
- */
- public final static boolean DEBUG = false;
-
- // Cashed workbenchPlugin Log, LogListener instances
private ILog systemsPluginLog = null;
private RemoteSystemLogListener logListener = null;
-
- // Cashed Plugin ID, and plugin
private String pluginId = null;
- Plugin systemPlugin = null;
+ private Plugin systemPlugin = null;
+ private int debug_level = IRemoteSystemsLogging.LOG_ERROR;
- // Controls logging level
- private int debug_level = 0;
-
- // Captures initialization errors
- private boolean init_ok = true;
-
- protected Logger(Plugin systemPlugin) {
+ /**
+ * Creates a new Logger. Invoked by the LoggerFactory.
+ * @param systemPlugin The preferences for this plugin will determine the detail
+ * logged by this logger. This allows different levels of detail to be logged in the
+ * workbench.
+ * @see LoggerFactory#getInst(Plugin);
+ */
+ Logger(Plugin systemPlugin) {
this.systemPlugin = systemPlugin;
this.pluginId = systemPlugin.getBundle().getSymbolicName();
initialize();
}
+ /**
+ * Initialize the Logger. The logger uses an ILog from the platform for this particular plugin, and
+ * establishes a listener on that log to format the items placed in the log.
+ */
private void initialize() {
- try {
-
- systemsPluginLog = systemPlugin.getLog();
- if (logListener == null)
- logListener = new RemoteSystemLogListener(systemPlugin);
- systemsPluginLog.addLogListener(logListener);
-
- // get the debug level from plugin Preference store.
- // note: logListener must be initialized before calling getPreference store!
- Preferences store = systemPlugin.getPluginPreferences();
- debug_level = store.getInt(IRemoteSystemsLogging.DEBUG_LEVEL);
-
- store.addPropertyChangeListener(this);
- store.addPropertyChangeListener(logListener);
-
- } catch (Exception e) {
- // Errors occured during initialize, disable logging.
- // should never be here. Use Platform logger instead.
- Bundle bundle = Platform.getBundle(Platform.PI_RUNTIME);
- Platform.getLog(bundle).log(
- new Status(
- IStatus.ERROR,
- IRemoteSystemsLogging.PLUGIN_ID,
- IStatus.OK,
- "could not create Logger for " + pluginId,
- e));
- init_ok = false;
- }
+ systemsPluginLog = systemPlugin.getLog();
+ logListener = new RemoteSystemLogListener(systemPlugin);
+ systemsPluginLog.addLogListener(logListener);
+ Preferences store = systemPlugin.getPluginPreferences();
+ debug_level = store.getInt(IRemoteSystemsLogging.DEBUG_LEVEL);
+ store.addPropertyChangeListener(this);
+ store.addPropertyChangeListener(logListener);
}
/**
- * Log a Debug message. This is intended to be wrapped as follows:
- * if (Logger.DEBUG)
- * Logger.logDebugMessage("someClassName", "someMessage");
+ * Log a Debug message. This is intended to be used as follows:
+ * Logger.logDebugMessage("someClassName", "someMessage");
*
* and the output will be:
*
@@ -153,16 +120,10 @@ public class Logger implements IPropertyChangeListener {
* Note that since this message is only for developer debugging, it does not
* need to be localized to proper local.
*/
-
- public synchronized void logDebugMessage(
- String className,
- String message) {
- if ((init_ok) && (debug_level >= IRemoteSystemsLogging.LOG_DEBUG)) {
- // ie: print all INFO, WARNING and ERROR messages
- MultiStatus debugStatus =
- new MultiStatus(pluginId, IStatus.OK, className, null);
- Status infoStatus =
- new Status(IStatus.OK, pluginId, IStatus.OK, message, null);
+ public synchronized void logDebugMessage(String className, String message) {
+ if (debug_level >= IRemoteSystemsLogging.LOG_DEBUG) {
+ MultiStatus debugStatus = new MultiStatus(pluginId, IStatus.OK, className, null);
+ Status infoStatus = new Status(IStatus.OK, pluginId, IStatus.OK, message, null);
debugStatus.add(infoStatus);
systemsPluginLog.log(debugStatus);
}
@@ -173,16 +134,11 @@ public class Logger implements IPropertyChangeListener {
* be localized to proper local.
* ie: Resource.getString() should already have been called
*/
-
public synchronized void logError(String message, Throwable ex) {
- if ((init_ok) && (debug_level >= IRemoteSystemsLogging.LOG_ERROR)) {
- // ie: print only ERROR messages
- if (message == null)
- message = "";
- Status errorStatus =
- new Status(IStatus.ERROR, pluginId, IStatus.OK, message, ex);
+ if (debug_level >= IRemoteSystemsLogging.LOG_ERROR) {
+ if (message == null) message = "";
+ Status errorStatus = new Status(IStatus.ERROR, pluginId, IStatus.OK, message, ex);
systemsPluginLog.log(errorStatus);
-
}
}
@@ -191,28 +147,21 @@ public class Logger implements IPropertyChangeListener {
* be localized to proper local.
* ie: Resource.getString() should already have been called
*/
- public synchronized void logInfo(String message)
- {
+ public synchronized void logInfo(String message) {
logInfo(message, null);
}
-
+
/**
* Log an Information message. Note that the message should already
* be localized to proper local.
* ie: Resource.getString() should already have been called
*/
-
public synchronized void logInfo(String message, Throwable ex) {
- if ((init_ok) && (debug_level >= IRemoteSystemsLogging.LOG_INFO)) {
- if (message == null)
- message = "";
- // ie: print all INFO, WARNING and ERROR messages
- Status infoStatus =
- new Status(IStatus.INFO, pluginId, IStatus.OK, message, ex);
+ if (debug_level >= IRemoteSystemsLogging.LOG_INFO) {
+ if (message == null) message = "";
+ Status infoStatus = new Status(IStatus.INFO, pluginId, IStatus.OK, message, ex);
systemsPluginLog.log(infoStatus);
-
}
-
}
/**
@@ -220,8 +169,7 @@ public class Logger implements IPropertyChangeListener {
* be localized to proper local.
* ie: Resource.getString() should already have been called
*/
- public synchronized void logWarning(String message)
- {
+ public synchronized void logWarning(String message) {
logWarning(message, null);
}
@@ -231,26 +179,17 @@ public class Logger implements IPropertyChangeListener {
* ie: Resource.getString() should already have been called
*/
public synchronized void logWarning(String message, Throwable ex) {
- if ((init_ok) && (debug_level >= IRemoteSystemsLogging.LOG_WARNING)) {
- if (message == null)
- message = "";
- // ie: print all WARNING and ERROR messages
- Status warningStatus =
- new Status(
- IStatus.WARNING,
- pluginId,
- IStatus.OK,
- message,
- ex);
+ if (debug_level >= IRemoteSystemsLogging.LOG_WARNING) {
+ if (message == null) message = "";
+ Status warningStatus = new Status(IStatus.WARNING, pluginId, IStatus.OK, message, ex);
systemsPluginLog.log(warningStatus);
}
-
}
public synchronized void setDebugLevel(int level) {
debug_level = level;
}
-
+
public synchronized int getDebugLevel() {
return debug_level;
}
@@ -260,10 +199,9 @@ public class Logger implements IPropertyChangeListener {
}
/**
- * Handle changes from Preferences page.
+ * Handle changes from a Preferences page.
*/
public synchronized void propertyChange(PropertyChangeEvent event) {
- // refresh the debug level from plugin Preference store
Preferences prefs = systemPlugin.getPluginPreferences();
debug_level = prefs.getInt(IRemoteSystemsLogging.DEBUG_LEVEL);
}
diff --git a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/LoggerFactory.java b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/LoggerFactory.java
index f2e6d248dcd..4ed32d2c7eb 100644
--- a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/LoggerFactory.java
+++ b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/LoggerFactory.java
@@ -16,8 +16,8 @@
package org.eclipse.rse.logging;
+import java.util.Hashtable;
import org.eclipse.core.runtime.Plugin;
-import org.eclipse.rse.internal.logging.LoggerController;
/**
* Factory class for creating Logger instances.
@@ -27,39 +27,31 @@ import org.eclipse.rse.internal.logging.LoggerController;
*/
public class LoggerFactory {
+ private static Hashtable pluginTable = new Hashtable();
/**
- * Returns a Logger instance for the given plugin.
Note that there is only
- * a singelton instance of the Logger class per plugin. You are guarenteed the
- * same instance if one has previously been created.
+ * Returns the Logger instance for a given plugin. There is only
+ * one instance of the Logger class per plugin.
*/
- public static Logger getInst(Plugin plugin) {
-
- // get cached instance from controller if one exists.
- Logger inst = LoggerController.getInst(plugin);
- // no luck, create it and register it with the controller, and create
- // preference page.
- if (inst == null) {
- inst = new Logger(plugin);
- LoggerController.registerInst(plugin, inst);
- // Check to see if the Logging plugin out instance has been created yet.
- // If it has, use it to log
- if (RemoteSystemsLoggingPlugin.out != null)
- RemoteSystemsLoggingPlugin.out.logInfo(
- "Created Logger instance for "
- + plugin.getBundle().getSymbolicName());
+ public static Logger getLogger(Plugin plugin) {
+ Logger logger = (Logger) pluginTable.get(plugin);
+ if (logger == null) {
+ logger = new Logger(plugin);
+ pluginTable.put(plugin, logger);
}
-
- return inst;
+ return logger;
}
/**
- * Frees resources used by the Logger instance for the given plugin.
- * This methods must be called as part of the the plugin shutdown life cycle.
- */
- public static void freeInst(Plugin plugin) {
- // delegate to controller
- LoggerController.freeInst(plugin);
+ * Frees resources used by the Logger instance for the given plugin.
+ * This methods must be called as part of the the plugin shutdown life cycle.
+ */
+ public static void freeLogger(Plugin plugin) {
+ Logger logger = (Logger) pluginTable.get(plugin);
+ if (logger != null) {
+ logger.freeResources();
+ pluginTable.remove(plugin);
+ }
}
}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/internal/logging/RemoteSystemLogListener.java b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/RemoteSystemLogListener.java
similarity index 69%
rename from rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/internal/logging/RemoteSystemLogListener.java
rename to rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/RemoteSystemLogListener.java
index ab09585cc3c..bbd335999c3 100644
--- a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/internal/logging/RemoteSystemLogListener.java
+++ b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/RemoteSystemLogListener.java
@@ -14,7 +14,7 @@
* {Name} (company) - description of contribution.
********************************************************************************/
-package org.eclipse.rse.internal.logging;
+package org.eclipse.rse.logging;
import java.io.BufferedWriter;
import java.io.File;
@@ -26,27 +26,22 @@ import org.eclipse.core.runtime.ILogListener;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.Preferences;
import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
-import org.eclipse.rse.logging.IRemoteSystemsLogging;
/**
* Log Listener is a sink for messages coming from Logger.
*/
-public class RemoteSystemLogListener implements ILogListener, IPropertyChangeListener {
+class RemoteSystemLogListener implements ILogListener, IPropertyChangeListener {
private PrintWriter log = null;
private File outputFile = null;
- private boolean log_to_stdout = false;
- private Plugin plugin = null;
/**
* Create a new log listener for a plugin.
* @param plugin The plugin for which to create a log listener.
*/
public RemoteSystemLogListener(Plugin plugin) {
- this.plugin = plugin;
IPath path = plugin.getStateLocation().addTrailingSeparator().append(".log");
outputFile = path.toFile();
if ((outputFile != null) && (outputFile.exists())) {
@@ -61,13 +56,8 @@ public class RemoteSystemLogListener implements ILogListener, IPropertyChangeLis
*/
private void initialize() {
try {
- Preferences store = plugin.getPluginPreferences();
- String log_location = store.getString(IRemoteSystemsLogging.LOG_LOCATION);
- if ((log_location != null) && (log_location.equalsIgnoreCase(IRemoteSystemsLogging.LOG_TO_STDOUT))) {
- doLogToView();
- } else {
- doLogToFile();
- }
+ freeResources();
+ log = new PrintWriter(new BufferedWriter(new FileWriter(outputFile.toString(), true)), true);
} catch (Exception e) {
log = null;
System.err.println("Exception in RemoteSystemLogListener.initialize(): " + e.getMessage());
@@ -75,35 +65,11 @@ public class RemoteSystemLogListener implements ILogListener, IPropertyChangeLis
}
}
- /**
- * Logs to standard output.
- */
- private void doLogToView() {
- // make sure we free resources first
- freeResources();
- // log
- log = new PrintWriter(System.out, true);
- // cach last state
- log_to_stdout = true;
- }
-
- private void doLogToFile() throws Exception {
- // make sure we free resources first
- freeResources();
- // log
- log =
- new PrintWriter(
- new BufferedWriter(new FileWriter(outputFile.toString(), true)),
- true);
- // cache last state
- log_to_stdout = false;
- }
-
public void logging(IStatus status) {
if (log == null)
return;
else {
- // Need a to string here, because we need to be able to compate dates.
+ // Need a to string here, because we need to be able to compare dates.
String date = new Date().toString();
log.println(date);
int severity = status.getSeverity();
@@ -119,17 +85,14 @@ public class RemoteSystemLogListener implements ILogListener, IPropertyChangeLis
log.print(" ");
log.print(status.getPlugin());
- // removed for now because we do not use Error codes.
- //log.print(" ");
- //log.print(status.getCode());
log.print(" ");
log.println(status.getMessage());
- if (status.getException() != null)
- status.getException().printStackTrace(log);
+ if (status.getException() != null) status.getException().printStackTrace(log);
if (status.isMultiStatus()) {
IStatus[] children = status.getChildren();
- for (int i = 0; i < children.length; i++)
+ for (int i = 0; i < children.length; i++) {
loggingChild(children[i]);
+ }
}
log.println("--------------------------------------------");
}
@@ -149,8 +112,7 @@ public class RemoteSystemLogListener implements ILogListener, IPropertyChangeLis
else {
log.print("\t\t");
log.println(status.getMessage());
- if (status.getException() != null)
- status.getException().printStackTrace(log);
+ if (status.getException() != null) status.getException().printStackTrace(log);
if (status.isMultiStatus()) {
IStatus[] children = status.getChildren();
for (int i = 0; i < children.length; i++)
@@ -168,14 +130,7 @@ public class RemoteSystemLogListener implements ILogListener, IPropertyChangeLis
}
public void freeResources() {
- if (log == null)
- return;
-
- // make sure to not close std_out. A closed stream can *not*
- // br re-opened!
- if (log_to_stdout)
- return;
-
+ if (log == null) return;
log.flush();
log.close();
log = null;
diff --git a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/RemoteSystemsLoggingPlugin.java b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/RemoteSystemsLoggingPlugin.java
index 81eee3703ed..9f488e13b9e 100644
--- a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/RemoteSystemsLoggingPlugin.java
+++ b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/RemoteSystemsLoggingPlugin.java
@@ -24,23 +24,15 @@ import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.Preferences;
import org.osgi.framework.BundleContext;
-
/**
* Remote Systems Logging plugin.
*/
public class RemoteSystemsLoggingPlugin extends Plugin {
-
- //The shared instance.
- private static RemoteSystemsLoggingPlugin inst;
-
- //Resource bundle.
+ private static RemoteSystemsLoggingPlugin singleton;
private ResourceBundle resourceBundle;
-
- // The cached Logger inst.
public static Logger out = null;
/**
@@ -48,17 +40,14 @@ public class RemoteSystemsLoggingPlugin extends Plugin {
*/
public RemoteSystemsLoggingPlugin() {
super();
-
- if (inst == null) {
- inst = this;
- }
+ singleton = this;
}
/**
* Returns the shared plugin instance.
*/
public static RemoteSystemsLoggingPlugin getDefault() {
- return inst;
+ return singleton;
}
/**
@@ -79,47 +68,33 @@ public class RemoteSystemsLoggingPlugin extends Plugin {
* Returns the plugin's resource bundle.
*/
public ResourceBundle getResourceBundle() {
-
- if (resourceBundle == null) {
-
- try {
- IPath path = new Path("$nl$/RemoteSystemsLogging.properties");
- URL url = FileLocator.find(getBundle(), path, null);
- resourceBundle = new PropertyResourceBundle(url.openStream());
- } catch (Exception x) {
- resourceBundle = null;
- out.logInfo("RemoteSystemsLoggingPlugin - unable to log resourcebundle");
- }
- }
-
+ if (resourceBundle == null) {
+ try {
+ IPath path = new Path("$nl$/RemoteSystemsLogging.properties");
+ URL url = FileLocator.find(getBundle(), path, null);
+ resourceBundle = new PropertyResourceBundle(url.openStream());
+ } catch (Exception x) {
+ resourceBundle = null;
+ out.logInfo("RemoteSystemsLoggingPlugin - unable to log resourcebundle");
+ }
+ }
return resourceBundle;
}
- /**
- * Sets default preference values.
+ /* (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext)
*/
- public void initializeDefaultPreferences() {
- Preferences prefs = getPluginPreferences();
- prefs.setDefault(IRemoteSystemsLogging.DEBUG_LEVEL, IRemoteSystemsLogging.LOG_ERROR);
- prefs.setDefault(IRemoteSystemsLogging.LOG_LOCATION, IRemoteSystemsLogging.LOG_TO_FILE);
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ out = LoggerFactory.getLogger(this);
+ out.logInfo("loading RemoteSystemsLoggingPlugin class.");
}
- /**
- * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
- */
- public void start(BundleContext context) throws Exception {
- super.start(context);
-
- // don't need a preference page for this plugin.
- out = LoggerFactory.getInst(this);
- out.logInfo("loading RemoteSystemsLoggingPlugin class.");
- }
-
- /**
- * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
- */
- public void stop(BundleContext context) throws Exception {
- LoggerFactory.freeInst(this);
- super.stop(context);
- }
+ /* (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ LoggerFactory.freeLogger(this);
+ super.stop(context);
+ }
}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/performance/PerformanceLogger.java b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/performance/PerformanceLogger.java
index a4e58fad24c..2413a4a8a33 100644
--- a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/performance/PerformanceLogger.java
+++ b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/performance/PerformanceLogger.java
@@ -46,672 +46,674 @@ import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
-
/**
-* A performance measurement class for benchmarking.
-* This performance framework provides stopwatch functions
-* for calculating elapsed time for an operation.
-*
-* Usuage example
-* Method_A {
-* String key = PerformanceLogger.register("RSE","WDSC","5120");
-* PerformanceLogger.start(key, "OP1"); //CallerID is OP1
-* Method_B();
-* PerformanceLogger.stop(key);
-* }
-*
-* Method_B {
-* PerformanceLogger.start("RSE"); //"RSE" component, CalleID="class.method"
-* // Do something
-* PerformanceLogger.stop("RSE");
-* }
-*
-* Method_C {
-* PerformanceLogger.start(); //Use the default component for recording
-* // Do something
-* PerformanceLogger.stop();
-* }
-*/
+ * A performance measurement class for benchmarking.
+ * This performance framework provides stopwatch functions
+ * for calculating elapsed time for an operation.
+ *
+ * Usuage example
+ * Method_A {
+ * String key = PerformanceLogger.register("RSE","WDSC","5120");
+ * PerformanceLogger.start(key, "OP1"); //CallerID is OP1
+ * Method_B();
+ * PerformanceLogger.stop(key);
+ * }
+ *
+ * Method_B {
+ * PerformanceLogger.start("RSE"); //"RSE" component, CalleID="class.method"
+ * // Do something
+ * PerformanceLogger.stop("RSE");
+ * }
+ *
+ * Method_C {
+ * PerformanceLogger.start(); //Use the default component for recording
+ * // Do something
+ * PerformanceLogger.stop();
+ * }
+ */
-public class PerformanceLogger
-{
-
- public final static boolean _ENABLE_PERFORMANCE_LOGGING_IBM_INTERNAL_ = false;
+public class PerformanceLogger {
- public final static int OPTION_GET_ALL = 1;
- public final static int OPTION_GET_FEATURE = 2;
- public final static int OPTION_GET_VERSION = 3;
-
-
-
- final static String ELEMENT_TASK = "Task";
- final static String ATTRIBUTE_NAME_TASKID = "CallerID";
- final static String DEFAULT_COMPONENT = "_PERFORMANCELOGGER_";
-
- static boolean ENABLE_PERFORMANCE_LOGGING = false; /*for user logging enabling*/
- //static long currentAssignedID = -1;
- static long samplingTime = -1; /* Elapsed time for normalization operatin */
- static boolean _initialized = false;
- static HashMap perfLogRegistry = new HashMap();
+ public final static boolean _ENABLE_PERFORMANCE_LOGGING_IBM_INTERNAL_ = false;
- /*
- * Static initializer to normalize this logger.
- */
- static {
- normalize();
+ public final static int OPTION_GET_ALL = 1;
+
+ public final static int OPTION_GET_FEATURE = 2;
+
+ public final static int OPTION_GET_VERSION = 3;
+
+ final static String ELEMENT_TASK = "Task";
+
+ final static String ATTRIBUTE_NAME_TASKID = "CallerID";
+
+ final static String DEFAULT_COMPONENT = "_PERFORMANCELOGGER_";
+
+ static boolean ENABLE_PERFORMANCE_LOGGING = false; /*for user logging enabling*/
+
+ //static long currentAssignedID = -1;
+ static long samplingTime = -1; /* Elapsed time for normalization operatin */
+
+ static boolean _initialized = false;
+
+ static HashMap perfLogRegistry = new HashMap();
+
+ /*
+ * Static initializer to normalize this logger.
+ */
+ static {
+ normalize();
+ }
+
+ static class StartData {
+ long startTime = -1;
+
+ long stopTime = -1;
+
+ String userID = null;
+
+ String startThread = null;
+
+ String startMethod = null;
+
+ String stopThread = null;
+
+ String stopMethod = null;
+
+ Element node = null;
+ }
+
+ class ComponentData {
+ String component = null;
+
+ String timeStamp = null;
+
+ String feature = null;
+
+ String version = null;
+
+ String XMLFileID = null;
+
+ File XMLFile = null;
+
+ Document doc = null;
+
+ Stack taskStack = new Stack();
+
+ ComponentData(String comp_id) {
+ component = comp_id;
}
-
- static class StartData
- {
- long startTime = -1;
- long stopTime = -1;
- String userID = null;
- String startThread = null;
- String startMethod = null;
- String stopThread = null;
- String stopMethod = null;
- Element node = null;
- }
- class ComponentData
- {
- String component = null;
- String timeStamp = null;
- String feature = null;
- String version = null;
- String XMLFileID = null;
- File XMLFile = null;
- Document doc = null;
- Stack taskStack = new Stack();
- ComponentData(String comp_id) {
- component = comp_id;
- }
- }
-
- /**
- * public static void enablePerformanceLogging(boolean enable) : enable performance logging
- * @param
- * enable : true or false
- * @return
- * The flag ENABLE_PERFORMANCE_LOGGING is enable(true or false)
- */
- public static void enablePerformanceLogging(boolean enable){
- if (enable)
- ENABLE_PERFORMANCE_LOGGING = true;
- else
- ENABLE_PERFORMANCE_LOGGING = false;
- }
-
- /**
- * public static boolean isPerformanceLoggingEnabled() : check if logging enabled
- * @return
- * boolean ENABLE_PERFORMANCE_LOGGING
- */
- public static boolean isPerformanceLoggingEnabled(){
- return ENABLE_PERFORMANCE_LOGGING;
- }
-
- /* public static String register(String comp_id) : registering a component using default
- * @parm
- * - comp_id: Component to be registered
- * @return
- * compont comp_id registered with no product info
- */
- public static String register(String comp_id) {
- return register(comp_id,"","");
- }
-
- /* public static String register(String feature, String version) : method for registering a component using default
- * @parm
- * - feature: Identifier for Product Feature attribute in XML
- * - version: Identifier for Product Version attribute in XML
- * @return
- * - return default component key
- * - Default component XML file created
- *
- */
- public static String register(String feature, String version) {
- return register(DEFAULT_COMPONENT,feature,version);
- }
-
- /**
- * public static String register(String comp_id, String feature, String version) : Registering a component
- * @parm
- * - comp_id: Component to be registered
- * - feature: Identifier for Product Feature attribute in XML
- * - version: Identifier for Product Version attribute in XML
- * @return
- * - comp_id as the registered key
- * - An XML file is created by concatenating comp_id, feature and version with time stamp appended
- */
- public static String register(String comp_id, String feature, String version){
-
- if ( (comp_id == null) || (comp_id.length() == 0) ) {
- System.out.println("PerformanceLogger:register(): Cannot register null component id.");
- return comp_id;
- }
-
- if (perfLogRegistry.containsKey(comp_id)) {
- System.out.println("PerformanceLogger:register(): component \"" + comp_id + "\" already registered");
- return comp_id;
- }
-
- ComponentData compData = new PerformanceLogger().new ComponentData(comp_id);
-
- Calendar time = Calendar.getInstance();
- compData.timeStamp = time.getTime().toString();
- String userID = System.getProperty("user.name");
- compData.XMLFileID = comp_id+"_" + userID + "_" + feature.replace(' ', '_') + "_"+version.replace(' ', '_') + "_perf." + compData.timeStamp.replace(' ', '_').replace(':', '_') + ".xml";
- compData.XMLFile = new File(compData.XMLFileID);
- compData.feature = feature;
- compData.version = version;
- generateXMLFile(compData);
- compData.taskStack = new Stack();
- perfLogRegistry.put(comp_id, compData);
- _initialized = true;
- System.out.println("SystemPerformanceLogger: XML file created is \"" + compData.XMLFile.getAbsolutePath() + "\".");
+ }
+
+ /**
+ * public static void enablePerformanceLogging(boolean enable) : enable performance logging
+ * @param
+ * enable : true or false
+ * @return
+ * The flag ENABLE_PERFORMANCE_LOGGING is enable(true or false)
+ */
+ public static void enablePerformanceLogging(boolean enable) {
+ if (enable)
+ ENABLE_PERFORMANCE_LOGGING = true;
+ else
+ ENABLE_PERFORMANCE_LOGGING = false;
+ }
+
+ /**
+ * public static boolean isPerformanceLoggingEnabled() : check if logging enabled
+ * @return
+ * boolean ENABLE_PERFORMANCE_LOGGING
+ */
+ public static boolean isPerformanceLoggingEnabled() {
+ return ENABLE_PERFORMANCE_LOGGING;
+ }
+
+ /* public static String register(String comp_id) : registering a component using default
+ * @parm
+ * - comp_id: Component to be registered
+ * @return
+ * compont comp_id registered with no product info
+ */
+ public static String register(String comp_id) {
+ return register(comp_id, "", "");
+ }
+
+ /* public static String register(String feature, String version) : method for registering a component using default
+ * @parm
+ * - feature: Identifier for Product Feature attribute in XML
+ * - version: Identifier for Product Version attribute in XML
+ * @return
+ * - return default component key
+ * - Default component XML file created
+ *
+ */
+ public static String register(String feature, String version) {
+ return register(DEFAULT_COMPONENT, feature, version);
+ }
+
+ /**
+ * public static String register(String comp_id, String feature, String version) : Registering a component
+ * @parm
+ * - comp_id: Component to be registered
+ * - feature: Identifier for Product Feature attribute in XML
+ * - version: Identifier for Product Version attribute in XML
+ * @return
+ * - comp_id as the registered key
+ * - An XML file is created by concatenating comp_id, feature and version with time stamp appended
+ */
+ public static String register(String comp_id, String feature, String version) {
+
+ if ((comp_id == null) || (comp_id.length() == 0)) {
+ System.out.println("PerformanceLogger:register(): Cannot register null component id.");
return comp_id;
}
- /**
- * public static void deRegister(): De-register the default component
- * @return
- * Default component "_PERFORMANCELOGGER_" removed
- * start() will be disabled
+ if (perfLogRegistry.containsKey(comp_id)) {
+ System.out.println("PerformanceLogger:register(): component \"" + comp_id + "\" already registered");
+ return comp_id;
+ }
+
+ ComponentData compData = new PerformanceLogger().new ComponentData(comp_id);
+
+ Calendar time = Calendar.getInstance();
+ compData.timeStamp = time.getTime().toString();
+ String userID = System.getProperty("user.name");
+ compData.XMLFileID = comp_id + "_" + userID + "_" + feature.replace(' ', '_') + "_" + version.replace(' ', '_') + "_perf." + compData.timeStamp.replace(' ', '_').replace(':', '_') + ".xml";
+ compData.XMLFile = new File(compData.XMLFileID);
+ compData.feature = feature;
+ compData.version = version;
+ generateXMLFile(compData);
+ compData.taskStack = new Stack();
+ perfLogRegistry.put(comp_id, compData);
+ _initialized = true;
+ System.out.println("SystemPerformanceLogger: XML file created is \"" + compData.XMLFile.getAbsolutePath() + "\".");
+ return comp_id;
+ }
+
+ /**
+ * public static void deRegister(): De-register the default component
+ * @return
+ * Default component "_PERFORMANCELOGGER_" removed
+ * start() will be disabled
+ */
+ public static void deRegister() {
+ perfLogRegistry.remove(DEFAULT_COMPONENT);
+ System.out.println("SystemPerformanceLogger: default component de-registered");
+ }
+
+ /**
+ * public static void deRegister(String key): De-register a component
+ * @parm
+ * key : component to be removed
+ * @return
+ * component identified by key removed
+ * start(comp_id) will be disabled
+ */
+ public static void deRegister(String key) {
+ perfLogRegistry.remove(key);
+ System.out.println("SystemPerformanceLogger: component \"" + key + "\" de-registered");
+ }
+
+ /**
+ * Set the normalization unit for this run.based on a standard method for class instance initialization.
+ * @return a string containing the unit.
+ */
+ public static String normalize() {
+ /*
+ * Execute some standard code and time it to generate our normalization interval.
+ * Return the value to attempt to make it is not optimized by the compiler.
*/
- public static void deRegister() {
- perfLogRegistry.remove(DEFAULT_COMPONENT);
- System.out.println("SystemPerformanceLogger: default component de-registered");
- }
-
- /**
- * public static void deRegister(String key): De-register a component
- * @parm
- * key : component to be removed
- * @return
- * component identified by key removed
- * start(comp_id) will be disabled
+ long startTime = System.currentTimeMillis();
+ Double q = null;
+ int i = 0;
+ int n = 1000000;
+ for (i = 0; i < n; i++) {
+ Double dd = new Double(n);
+ Double dr = new Double(n + i);
+ q = new Double(dd.doubleValue() / dr.doubleValue());
+ }
+ double val = q.doubleValue() / i;
+ long stopTime = System.currentTimeMillis();
+ samplingTime = stopTime - startTime;
+ String result = "SystemPerformanceLogger::Normalization Elapsed time = " + samplingTime + " " + val;
+ return result;
+ }
+
+ /**
+ * public static long start(): start timer using default component
+ * The Task values will be recorded in the default component XML file
+ * @return
+ * - started time milliseconds
+ */
+ public static long start() {
+ if (_initialized == false) {
+ register(DEFAULT_COMPONENT, "", "");
+ }
+ /*Use the class method name for CallerID*/
+ /*
+ * Sample method name retruned by getMethodName():
+ * " com.ibm.etools.iseries.core.resources.ISeriesEditableSrcPhysicalFileMember.doDownload(ISeriesEditableSrcPhysicalFileMember.java:558)"
+ *
*/
- public static void deRegister(String key) {
- perfLogRegistry.remove(key);
- System.out.println("SystemPerformanceLogger: component \"" + key + "\" de-registered");
- }
+ String methodPath = getMethodName(true);
- /**
- * Set the normalization unit for this run.based on a standard method for class instance initialization.
- * @return a string containing the unit.
+ return start(DEFAULT_COMPONENT, methodPath);
+ }
+
+ /**
+ * public static long start(String comp_id): start timer for component comp_id using default TaskID
+ * @parm :
+ * comp_id : component registered previously by register(comp_id,..)
+ * @return
+ * - started time in milliseconds.
+ */
+ public static long start(String comp_id) {
+ String methodPath = getMethodName(true);
+ return start(comp_id, methodPath);
+
+ }
+
+ /**
+ * public long start(String comp_id, String call_id): start the timer for registered component comp_id
+ * @parm
+ * comp_id is the registered component
+ * call_id is the "CallID" attribute value for the XML tag "Task"
+ * @return
+ * - started time in milliseconds.
+ */
+ public static long start(String comp_id, String call_id) {
+
+ if (perfLogRegistry.containsKey(comp_id) == false) {
+ System.out.println("PerformanceLogger:start(): component \"" + comp_id + "\" not registered");
+ return -1;
+ }
+
+ ComponentData cd = (ComponentData) perfLogRegistry.get(comp_id);
+ StartData td = new StartData();
+
+ td.userID = call_id;
+ td.startThread = Thread.currentThread().toString();
+ td.startMethod = getMethodName(false);
+
+ /* Create the new Task Element in the DOC */
+ try {
+
+ //BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(cd.XMLFile), "UTF8"));
+ Element root = cd.doc.getDocumentElement();
+ Element task = cd.doc.createElement(ELEMENT_TASK);
+ task.setAttribute(ATTRIBUTE_NAME_TASKID, td.userID);
+ task.setAttribute("StartAt", td.startMethod);
+ task.setAttribute("StartThread", td.startThread);
+
+ td.node = task;
+
+ /* Check if start() is nested by checking if the TaskStack is empty */
+ if (cd.taskStack.isEmpty()) { /*Empty==>not a nested start()*/
+ root.appendChild(task);
+ } else { /*Not empty ==> this start() is nested*/
+
+ StartData sd = (StartData) cd.taskStack.peek(); /*Peek the parent CallID on the stack*/
+ sd.node.appendChild(task);
+ }
+ } catch (DOMException e) {
+ System.out.println("PerformanceLogger::updateXMLFileatStart DOM Error:" + e.toString());
+ }
+
+ /*Read the current time save it on stack */
+ td.startTime = System.currentTimeMillis();
+ cd.taskStack.push(td);
+ return td.startTime;
+ }
+
+ /**
+ * public static long stop(): stop timer for default component
+ * The Task values will be recorded in the default component XML file
+ * @return
+ * - started time milliseconds
+ */
+ public static long stop() {
+ return stop(DEFAULT_COMPONENT);
+ }
+
+ /**
+ * public long stop(String comp_id): Stopping the timer for component comp_id
+ * @return
+ * - stopped time in milliseconds.
+ */
+ public static long stop(String comp_id) {
+
+ long st = System.currentTimeMillis();
+ ComponentData cd = (ComponentData) perfLogRegistry.get(comp_id);
+ if (cd == null) {
+ System.out.println("SystemPerformanceLogger::stop(): invalid registration key");
+ return 0;
+ }
+ StartData td = null;
+ try {
+ td = (StartData) cd.taskStack.pop();
+ td.stopTime = st;
+ td.stopThread = Thread.currentThread().toString();
+ td.stopMethod = getMethodName(false);
+ updateXMLFileAtStop(cd, td);
+
+ //System.out.println("SystemPerformanceLogger::stop(): timer \"" + td.userID + "\" stopped. Elapsed time = " +
+ // (td.stopTime-td.startTime) + " millis.");
+ } catch (EmptyStackException e) {
+ System.out.println("SystemPerformanceLogger:: Probably too many stop() function calls. - " + e);
+ }
+ return td.stopTime;
+ }
+
+ /**
+ * private void generateXMLFile(ComponentData cd): create XML file
+ * @param
+ * cd is the component data for creating the XML
+ * @return
+ * - An XML file is created with "Product" and "System" tags.
+ */
+ private static void generateXMLFile(ComponentData cd) {
+ try {
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(cd.XMLFile), "UTF8"));
+ // DOMImplementation impl = new DOMImplementationImpl();
+ // cd.doc = impl.createDocument(null, "Benchmark", null);
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = null;
+ try {
+ builder = factory.newDocumentBuilder();
+ } catch (ParserConfigurationException e1) {
+ }
+ DOMImplementation impl = builder.getDOMImplementation();
+ cd.doc = impl.createDocument(null, "Benchmark", null);
+ // get root element and set attributes
+ Element root = cd.doc.getDocumentElement();
+ root.setAttribute("BenchmarkID", cd.XMLFileID);
+ root.setAttribute("TimeStamp", cd.timeStamp);
+
+ Element system = cd.doc.createElement("System");
+ Element product = cd.doc.createElement("Product");
+
+ product.setAttribute("Feature", cd.feature);
+ product.setAttribute("Version", cd.version);
+ root.appendChild(product);
+
+ system.setAttribute("OSName", System.getProperty("os.name"));
+ system.setAttribute("OSVersion", System.getProperty("os.version"));
+ system.setAttribute("JavaVersion", System.getProperty("java.version"));
+ system.setAttribute("JavaVMVersion", System.getProperty("java.vm.version"));
+ system.setAttribute("JavaClassPath", System.getProperty("java.class.path"));
+ system.setAttribute("JavaLibraryPath", System.getProperty("java.library.path"));
+ root.appendChild(system);
+
+ Element norm = cd.doc.createElement("_NORMALIZATION_VALUES");
+ Long ems = new Long(samplingTime);
+ norm.setAttribute("ElapsedTime", ems.toString());
+ root.appendChild(norm);
+
+ /* Insert comments for Task tag */
+ Comment cmt1 = cd.doc.createComment("Each Task element represents one start/stop timer operation");
+ Comment cmt2 = cd.doc.createComment("Time recorded is in milliseconds");
+ Comment cmt3 = cd.doc.createComment("NormalizedFactor is the performance indicator. A larger value than the previous run might indicate performance degradation.");
+ root.appendChild(cmt1);
+ root.appendChild(cmt2);
+ root.appendChild(cmt3);
+
+ try {
+ Source source = new DOMSource(cd.doc);
+ Result result = new StreamResult(writer);
+ Transformer t = TransformerFactory.newInstance().newTransformer();
+ t.setOutputProperty(OutputKeys.INDENT, "yes");
+ t.transform(source, result);
+ } catch (TransformerConfigurationException e2) {
+ } catch (TransformerFactoryConfigurationError e2) {
+ } catch (TransformerException e2) {
+ }
+
+ // OutputFormat fmt = new OutputFormat(cd.doc);
+ // fmt.setLineSeparator(LineSeparator.Windows);
+ // fmt.setIndenting(true);
+ // fmt.setPreserveSpace(false);
+ // //writer.flush();
+ // XMLSerializer serializer = new XMLSerializer(writer, fmt);
+ // serializer.serialize(cd.doc);
+ // writer.close();
+
+ } catch (java.io.IOException e) {
+ System.out.println("PerformanceLogger::updateXML IO Error:" + e.toString());
+ } catch (DOMException e) {
+ System.out.println("PerformanceLogger::updateXML DOM Error:" + e.toString());
+ }
+ }
+
+ /**
+ * private void updateXMLFileAtStop(ComponentData cd, StartData td): update XML file with performance measurement info
+ * @return
+ * - A "Task" tag is created in the XML file with the current start and stop timer information.
+ */
+ private static void updateXMLFileAtStop(ComponentData cd, StartData td) {
+
+ try {
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(cd.XMLFile), "UTF8"));
+ cd.doc.getDocumentElement();
+ Element task = td.node;
+
+ /* Construct Long class insatnce for string manipulation */
+ Long ems = new Long(td.stopTime - td.startTime);
+ Long sms = new Long(td.startTime);
+ Long tms = new Long(td.stopTime);
+ /*Calculate the normalization factor*/
+ String normalizedFactor = "invalid";
+ if (samplingTime > 0) {
+ Long sam = new Long(samplingTime);
+ Double val = new Double(ems.doubleValue() / sam.doubleValue());
+ normalizedFactor = val.toString();
+ }
+
+ /* Update the document */
+ task.setAttribute("ElapsedTime", ems.toString());
+ task.setAttribute("NormalizedFactor", normalizedFactor);
+ task.setAttribute("StartTime", sms.toString());
+ task.setAttribute("StopTime", tms.toString());
+ task.setAttribute("StartAt", td.startMethod);
+ task.setAttribute("StartThread", td.startThread);
+ task.setAttribute("StopAt", td.stopMethod);
+ task.setAttribute("StopThread", td.stopThread);
+
+ try {
+ Source source = new DOMSource(cd.doc);
+ Result result = new StreamResult(writer);
+ Transformer t = TransformerFactory.newInstance().newTransformer();
+ t.setOutputProperty(OutputKeys.INDENT, "yes");
+ t.transform(source, result);
+ } catch (TransformerConfigurationException e2) {
+ } catch (TransformerFactoryConfigurationError e2) {
+ } catch (TransformerException e2) {
+ }
+
+ /*Now save the DOM*/
+ // OutputFormat fmt = new OutputFormat(cd.doc);
+ // fmt.setLineSeparator(LineSeparator.Windows);
+ // fmt.setIndenting(true);
+ // fmt.setPreserveSpace(false);
+ // //writer.flush();
+ // XMLSerializer serializer = new XMLSerializer(writer, fmt);
+ // serializer.serialize(cd.doc);
+ // writer.close();
+ } catch (java.io.IOException e) {
+ System.out.println("PerformanceLogger::updateXMLFileAtStop IO Error:" + e.toString());
+ } catch (DOMException e) {
+ System.out.println("PerformanceLogger::updateXMLFileAtStop DOM Error:" + e.toString());
+ }
+
+ }
+
+ /**
+ * public String geCurrentProductInfo(int req, String comp_id) : retrieve the product information.
+ * @param
+ * req : OPTION_GET_FEATURE/OPTION_GET_VERSION
+ * comp_id : the component id
+ * @return
+ * "OPTION_GET_FEATURE":product feature as specified in register()
+ * "OPTION_GET_VERSION": product version as specified in register()
+ * no match: null
+ */
+ public static String getCurrentProductInfo(int req, String comp_id) {
+ ComponentData cd = (ComponentData) perfLogRegistry.get(comp_id);
+ if (cd == null) {
+ System.out.println("PerformanceLogger::getCurrentProductInfo invalid comp_id");
+ return null;
+ }
+
+ if (req == OPTION_GET_FEATURE)
+ return cd.feature;
+ else if (req == OPTION_GET_VERSION) return cd.version;
+ return null;
+ }
+
+ /**
+ * public String getXMLFileName(String comp_id) : get the XML file pathname
+ * @return
+ * The XML file fullpath name.
+ */
+ public static String getXMLFileName(String comp_id) {
+ ComponentData cd = (ComponentData) perfLogRegistry.get(comp_id);
+ return cd.XMLFile.getAbsolutePath();
+ }
+
+ /**
+ * public String getMethodName(boolean parsed) : get the method name
+ * @param
+ * parsed : true or false
+ * @return
+ * if true method name is returned as class.method.
+ */
+ private static String getMethodName(boolean parsed) {
+
+ String methodPath = null;
+ Throwable e = new Throwable();
+ StringWriter strwriter = new StringWriter(100);
+ e.printStackTrace(new java.io.PrintWriter(strwriter));
+ String stack = strwriter.toString();
+ java.util.StringTokenizer tokenizer = new java.util.StringTokenizer(stack, "\r\n");
+ /*
+ * Here to parse the exception string to get the caller which is the current method location
+ * to be obtained. The Exception stack should show the PerformanceLogger start() in the satck first:
+ * -java.lang.Exception
+ * -at com.ibm.etools.systems.logging.performance.PerformanceLogger.start(PerformanceLogger.java:151)
+ * -at com.ibm.etools.systems.logging.performance.PerformanceLogger.start(PerformanceLogger.java:135)
+ * Depending if the caller is using default task ID or not, so the caller is the 3rd or the 4th in the stack.
*/
- public static String normalize() {
- /*
- * Execute some standard code and time it to generate our normalization interval.
- * Return the value to attempt to make it is not optimized by the compiler.
- */
- long startTime = System.currentTimeMillis();
- Double q = null;
- int i = 0;
- int n = 1000000;
- for ( i = 0; i < n; i++) {
- Double dd = new Double(n);
- Double dr = new Double(n+i);
- q = new Double(dd.doubleValue() / dr.doubleValue());
- }
- double val = q.doubleValue() / i;
- long stopTime = System.currentTimeMillis();
- samplingTime = stopTime-startTime;
- String result = "SystemPerformanceLogger::Normalization Elapsed time = " + samplingTime + " " + val;
- return result;
- }
-
- /**
- * public static long start(): start timer using default component
- * The Task values will be recorded in the default component XML file
- * @return
- * - started time milliseconds
- */
- public static long start() {
- if (_initialized == false) {
- register(DEFAULT_COMPONENT,"","");
- }
- /*Use the class method name for CallerID*/
- /*
- * Sample method name retruned by getMethodName():
- * " com.ibm.etools.iseries.core.resources.ISeriesEditableSrcPhysicalFileMember.doDownload(ISeriesEditableSrcPhysicalFileMember.java:558)"
- *
- */
- String methodPath = getMethodName(true);
- return start(DEFAULT_COMPONENT, methodPath);
+ for (int i = 0; tokenizer.hasMoreTokens(); i++) {
+ methodPath = tokenizer.nextToken();
+ if ((methodPath.indexOf("java.lang.Throwable") == -1) && (methodPath.indexOf("logging.performance.PerformanceLogger") == -1)) break;
}
-
- /**
- * public static long start(String comp_id): start timer for component comp_id using default TaskID
- * @parm :
- * comp_id : component registered previously by register(comp_id,..)
- * @return
- * - started time in milliseconds.
- */
- public static long start(String comp_id) {
- String methodPath = getMethodName(true);
- return start(comp_id, methodPath);
-
- }
-
- /**
- * public long start(String comp_id, String call_id): start the timer for registered component comp_id
- * @parm
- * comp_id is the registered component
- * call_id is the "CallID" attribute value for the XML tag "Task"
- * @return
- * - started time in milliseconds.
- */
- public static long start(String comp_id, String call_id) {
-
- if (perfLogRegistry.containsKey(comp_id) == false) {
- System.out.println("PerformanceLogger:start(): component \"" + comp_id + "\" not registered");
- return -1;
- }
-
- ComponentData cd = (ComponentData)perfLogRegistry.get(comp_id);
- StartData td = new StartData();
-
- td.userID = call_id;
- td.startThread = Thread.currentThread().toString();
- td.startMethod = getMethodName(false);
-
- /* Create the new Task Element in the DOC */
+ methodPath = methodPath.substring(4);
+ if (parsed) {
try {
-
- //BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(cd.XMLFile), "UTF8"));
- Element root = cd.doc.getDocumentElement();
- Element task = cd.doc.createElement(ELEMENT_TASK);
- task.setAttribute(ATTRIBUTE_NAME_TASKID, td.userID);
- task.setAttribute("StartAt", td.startMethod);
- task.setAttribute("StartThread", td.startThread);
-
- td.node = task;
-
- /* Check if start() is nested by checking if the TaskStack is empty */
- if ( cd.taskStack.isEmpty() ) { /*Empty==>not a nested start()*/
- root.appendChild(task);
- }
- else { /*Not empty ==> this start() is nested*/
-
- StartData sd = (StartData)cd.taskStack.peek(); /*Peek the parent CallID on the stack*/
- sd.node.appendChild(task);
- }
- }
- catch (DOMException e)
- {
- System.out.println("PerformanceLogger::updateXMLFileatStart DOM Error:" + e.toString());
- }
-
- /*Read the current time save it on stack */
- td.startTime = System.currentTimeMillis();
- cd.taskStack.push(td);
- return td.startTime;
- }
-
- /**
- * public static long stop(): stop timer for default component
- * The Task values will be recorded in the default component XML file
- * @return
- * - started time milliseconds
- */
- public static long stop() {
- return stop(DEFAULT_COMPONENT);
- }
-
- /**
- * public long stop(String comp_id): Stopping the timer for component comp_id
- * @return
- * - stopped time in milliseconds.
- */
- public static long stop(String comp_id) {
-
- long st = System.currentTimeMillis();
- ComponentData cd = (ComponentData)perfLogRegistry.get(comp_id);
- if (cd == null) {
- System.out.println("SystemPerformanceLogger::stop(): invalid registration key");
- return 0;
- }
- StartData td = null;
- try {
- td = (StartData)cd.taskStack.pop();
- td.stopTime = st;
- td.stopThread = Thread.currentThread().toString();
- td.stopMethod = getMethodName(false);
- updateXMLFileAtStop(cd,td);
-
- //System.out.println("SystemPerformanceLogger::stop(): timer \"" + td.userID + "\" stopped. Elapsed time = " +
- // (td.stopTime-td.startTime) + " millis.");
- }
- catch (EmptyStackException e) {
- System.out.println("SystemPerformanceLogger:: Probably too many stop() function calls. - " + e);
- }
- return td.stopTime;
- }
-
-
- /**
- * private void generateXMLFile(ComponentData cd): create XML file
- * @param
- * cd is the component data for creating the XML
- * @return
- * - An XML file is created with "Product" and "System" tags.
- */
- private static void generateXMLFile(ComponentData cd){
- try {
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(cd.XMLFile), "UTF8"));
-// DOMImplementation impl = new DOMImplementationImpl();
-// cd.doc = impl.createDocument(null, "Benchmark", null);
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = null;
- try {
- builder = factory.newDocumentBuilder();
- } catch (ParserConfigurationException e1) {
- }
- DOMImplementation impl = builder.getDOMImplementation();
- cd.doc = impl.createDocument(null, "Benchmark", null);
- // get root element and set attributes
- Element root = cd.doc.getDocumentElement();
- root.setAttribute("BenchmarkID", cd.XMLFileID);
- root.setAttribute("TimeStamp", cd.timeStamp);
-
- Element system = cd.doc.createElement("System");
- Element product = cd.doc.createElement("Product");
-
- product.setAttribute("Feature", cd.feature);
- product.setAttribute("Version", cd.version);
- root.appendChild(product);
-
- system.setAttribute("OSName",System.getProperty("os.name"));
- system.setAttribute("OSVersion",System.getProperty("os.version"));
- system.setAttribute("JavaVersion",System.getProperty("java.version"));
- system.setAttribute("JavaVMVersion",System.getProperty("java.vm.version"));
- system.setAttribute("JavaClassPath",System.getProperty("java.class.path"));
- system.setAttribute("JavaLibraryPath",System.getProperty("java.library.path"));
- root.appendChild(system);
-
- Element norm = cd.doc.createElement("_NORMALIZATION_VALUES");
- Long ems = new Long(samplingTime);
- norm.setAttribute("ElapsedTime",ems.toString());
- root.appendChild(norm);
-
- /* Insert comments for Task tag */
- Comment cmt1 = cd.doc.createComment("Each Task element represents one start/stop timer operation");
- Comment cmt2 = cd.doc.createComment("Time recorded is in milliseconds");
- Comment cmt3 = cd.doc.createComment("NormalizedFactor is the performance indicator. A larger value than the previous run might indicate performance degradation.");
- root.appendChild(cmt1);
- root.appendChild(cmt2);
- root.appendChild(cmt3);
-
- try {
- Source source = new DOMSource(cd.doc);
- Result result = new StreamResult(writer);
- Transformer t = TransformerFactory.newInstance().newTransformer();
- t.setOutputProperty(OutputKeys.INDENT, "yes");
- t.transform(source, result);
- } catch (TransformerConfigurationException e2) {
- } catch (TransformerFactoryConfigurationError e2) {
- } catch (TransformerException e2) {
- }
-
-// OutputFormat fmt = new OutputFormat(cd.doc);
-// fmt.setLineSeparator(LineSeparator.Windows);
-// fmt.setIndenting(true);
-// fmt.setPreserveSpace(false);
-// //writer.flush();
-// XMLSerializer serializer = new XMLSerializer(writer, fmt);
-// serializer.serialize(cd.doc);
-// writer.close();
-
- }
- catch (java.io.IOException e)
- {
- System.out.println("PerformanceLogger::updateXML IO Error:" + e.toString());
- }
- catch (DOMException e)
- {
- System.out.println("PerformanceLogger::updateXML DOM Error:" + e.toString());
+ /* The method name obtained looks like this:
+ * " com.ibm.etools.iseries.core.resources.ISeriesEditableSrcPhysicalFileMember.doDownload(ISeriesEditableSrcPhysicalFileMember.java:558)"
+ */
+ int i = methodPath.indexOf('(');
+ if (i != -1) methodPath = methodPath.substring(0, i); //strip of the substring enclosed in ()
+ //Now we have "com.ibm.etools.systems.logging.performance.PerformanceLogger.start"
+ i = methodPath.lastIndexOf('.'); //Get the method name after the last period (.)
+ String methodName = methodPath.substring(i + 1); //Now we have the method name "start"
+ String className = methodPath.substring(0, i); //remove method name from the string
+ //We are left with "com.ibm.etools.systems.logging.performance.PerformanceLogger"
+ i = className.lastIndexOf('.');
+ if (i != -1) className = className.substring(i + 1); //Now we have the class name "PerformanceLogger"
+ methodPath = className + "." + methodName;
+ } catch (IndexOutOfBoundsException ex) {
+ System.out.println("PerformanceLogger:getMethodName exception" + ex.toString());
}
}
+ return methodPath; /*delete " at" in the beginning of the string */
+ }
- /**
- * private void updateXMLFileAtStop(ComponentData cd, StartData td): update XML file with performance measurement info
- * @return
- * - A "Task" tag is created in the XML file with the current start and stop timer information.
- */
- private static void updateXMLFileAtStop(ComponentData cd, StartData td ){
-
- try {
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(cd.XMLFile), "UTF8"));
- cd.doc.getDocumentElement();
- Element task = td.node;
+ /**
+ * public static void listSystemProfile(): retrieve the system information.
+ * @return
+ * These values will be retrieved and printed in stdout:
+ * java.version
+ * java.vm.version
+ * java.class.version
+ * java.class.path
+ * java.library.path
+ * os.name
+ * os.version
+ */
+ public static void listSystemProfile() {
+ System.out.println("java version : " + System.getProperty("java.version"));
+ System.out.println("OS name : " + System.getProperty("os.name"));
+ System.out.println("OS version : " + System.getProperty("os.version"));
+ System.out.println("working dir : " + System.getProperty("user.dir"));
+ System.out.println("home dir : " + System.getProperty("home.dir"));
+ }
- /* Construct Long class insatnce for string manipulation */
- Long ems = new Long(td.stopTime-td.startTime);
- Long sms = new Long(td.startTime);
- Long tms = new Long(td.stopTime);
- /*Calculate the normalization factor*/
- String normalizedFactor = "invalid";
- if (samplingTime > 0) {
- Long sam = new Long(samplingTime);
- Double val = new Double(ems.doubleValue()/sam.doubleValue());
- normalizedFactor = val.toString();
- }
+ /**
+ * public static void main() : This main is used for testing this PerformanceLogger functions.
+ * The objective is to check the XML output format for nested start() calls.
+ */
+ public static void main(String[] args) {
- /* Update the document */
- task.setAttribute("ElapsedTime",ems.toString());
- task.setAttribute("NormalizedFactor",normalizedFactor);
- task.setAttribute("StartTime",sms.toString());
- task.setAttribute("StopTime",tms.toString());
- task.setAttribute("StartAt", td.startMethod);
- task.setAttribute("StartThread", td.startThread);
- task.setAttribute("StopAt", td.stopMethod);
- task.setAttribute("StopThread", td.stopThread);
+ int i = 0;
- try {
- Source source = new DOMSource(cd.doc);
- Result result = new StreamResult(writer);
- Transformer t = TransformerFactory.newInstance().newTransformer();
- t.setOutputProperty(OutputKeys.INDENT, "yes");
- t.transform(source, result);
- } catch (TransformerConfigurationException e2) {
- } catch (TransformerFactoryConfigurationError e2) {
- } catch (TransformerException e2) {
- }
-
- /*Now save the DOM*/
-// OutputFormat fmt = new OutputFormat(cd.doc);
-// fmt.setLineSeparator(LineSeparator.Windows);
-// fmt.setIndenting(true);
-// fmt.setPreserveSpace(false);
-// //writer.flush();
-// XMLSerializer serializer = new XMLSerializer(writer, fmt);
-// serializer.serialize(cd.doc);
-// writer.close();
- }
- catch (java.io.IOException e)
- {
- System.out.println("PerformanceLogger::updateXMLFileAtStop IO Error:" + e.toString());
- }
- catch (DOMException e)
- {
- System.out.println("PerformanceLogger::updateXMLFileAtStop DOM Error:" + e.toString());
- }
-
- }
-
- /**
- * public String geCurrentProductInfo(int req, String comp_id) : retrieve the product information.
- * @param
- * req : OPTION_GET_FEATURE/OPTION_GET_VERSION
- * comp_id : the component id
- * @return
- * "OPTION_GET_FEATURE":product feature as specified in register()
- * "OPTION_GET_VERSION": product version as specified in register()
- * no match: null
- */
- public static String getCurrentProductInfo(int req, String comp_id) {
- ComponentData cd = (ComponentData)perfLogRegistry.get(comp_id);
- if (cd == null) {
- System.out.println("PerformanceLogger::getCurrentProductInfo invalid comp_id");
- return null;
- }
-
- if (req == OPTION_GET_FEATURE)
- return cd.feature;
- else if (req == OPTION_GET_VERSION)
- return cd.version;
- return null;
+ if (isPerformanceLoggingEnabled()) {
+ PerformanceLogger.start(); //Start timer using default component
}
-
- /**
- * public String getXMLFileName(String comp_id) : get the XML file pathname
- * @return
- * The XML file fullpath name.
- */
- public static String getXMLFileName(String comp_id) {
- ComponentData cd = (ComponentData)perfLogRegistry.get(comp_id);
- return cd.XMLFile.getAbsolutePath();
- }
-
- /**
- * public String getMethodName(boolean parsed) : get the method name
- * @param
- * parsed : true or false
- * @return
- * if true method name is returned as class.method.
- */
- private static String getMethodName(boolean parsed) {
-
- String methodPath = null;
- Throwable e = new Throwable();
- StringWriter strwriter = new StringWriter(100);
- e.printStackTrace(new java.io.PrintWriter(strwriter));
- String stack = strwriter.toString();
- java.util.StringTokenizer tokenizer = new java.util.StringTokenizer(stack, "\r\n");
- /*
- * Here to parse the exception string to get the caller which is the current method location
- * to be obtained. The Exception stack should show the PerformanceLogger start() in the satck first:
- * -java.lang.Exception
- * -at com.ibm.etools.systems.logging.performance.PerformanceLogger.start(PerformanceLogger.java:151)
- * -at com.ibm.etools.systems.logging.performance.PerformanceLogger.start(PerformanceLogger.java:135)
- * Depending if the caller is using default task ID or not, so the caller is the 3rd or the 4th in the stack.
- */
-
- for (int i = 0; tokenizer.hasMoreTokens(); i++)
- {
- methodPath = tokenizer.nextToken();
- if ( (methodPath.indexOf("java.lang.Throwable") == -1) &&
- (methodPath.indexOf("logging.performance.PerformanceLogger") == -1) )
- break;
- }
- methodPath = methodPath.substring(4);
- if (parsed) {
- try
- {
- /* The method name obtained looks like this:
- * " com.ibm.etools.iseries.core.resources.ISeriesEditableSrcPhysicalFileMember.doDownload(ISeriesEditableSrcPhysicalFileMember.java:558)"
- */
- int i = methodPath.indexOf('(');
- if ( i != -1)
- methodPath = methodPath.substring(0,i); //strip of the substring enclosed in ()
- //Now we have "com.ibm.etools.systems.logging.performance.PerformanceLogger.start"
- i = methodPath.lastIndexOf('.'); //Get the method name after the last period (.)
- String methodName =methodPath.substring(i+1); //Now we have the method name "start"
- String className = methodPath.substring(0,i); //remove method name from the string
- //We are left with "com.ibm.etools.systems.logging.performance.PerformanceLogger"
- i = className.lastIndexOf('.');
- if ( i != -1)
- className = className.substring(i+1); //Now we have the class name "PerformanceLogger"
- methodPath = className+"."+methodName;
- }
- catch ( IndexOutOfBoundsException ex )
- {
- System.out.println("PerformanceLogger:getMethodName exception" + ex.toString());
- }
- }
- return methodPath; /*delete " at" in the beginning of the string */
+ for (i = 0; i < 1000000; i++)
+ ;
+ if (isPerformanceLoggingEnabled()) {
+ PerformanceLogger.stop();
}
- /**
- * public static void listSystemProfile(): retrieve the system information.
- * @return
- * These values will be retrieved and printed in stdout:
- * java.version
- * java.vm.version
- * java.class.version
- * java.class.path
- * java.library.path
- * os.name
- * os.version
- */
- public static void listSystemProfile() {
- System.out.println("java version : " + System.getProperty("java.version"));
- System.out.println("OS name : " + System.getProperty("os.name"));
- System.out.println("OS version : " + System.getProperty("os.version"));
- System.out.println("working dir : " + System.getProperty("user.dir"));
- System.out.println("home dir : " + System.getProperty("home.dir"));
- }
-
- /**
- * public static void main() : This main is used for testing this PerformanceLogger functions.
- * The objective is to check the XML output format for nested start() calls.
- */
- public static void main(String[] args) {
-
- int i = 0;
-
- if (isPerformanceLoggingEnabled()) {
- PerformanceLogger.start(); //Start timer using default component
- }
- for ( i = 0; i < 1000000; i++);
- if (isPerformanceLoggingEnabled()) {
- PerformanceLogger.stop();
- }
-
- PerformanceLogger.enablePerformanceLogging(true);
- String key = PerformanceLogger.register("","WDSC","5120");
- key = PerformanceLogger.register("RSE","WDSC","5120");
- PerformanceLogger.deRegister("XXX"); //not registered key previously
- System.out.println("Product info : " +
- PerformanceLogger.getCurrentProductInfo(PerformanceLogger.OPTION_GET_FEATURE, key) +
- " " +
- PerformanceLogger.getCurrentProductInfo(PerformanceLogger.OPTION_GET_VERSION, key));
- PerformanceLogger.start(key, "NOT_NESTED_1");
- for ( i = 0; i < 1000000; i++);
- PerformanceLogger.stop(key);
-
- PerformanceLogger.start(key,"NESTED_ONE");
- for ( i = 0; i < 500; i++);
- PerformanceLogger.start(key,"NESTED_ONE_CHILD");
- for ( i = 0; i < 300; i++);
- PerformanceLogger.stop(key);
- PerformanceLogger.stop(key);
+ PerformanceLogger.enablePerformanceLogging(true);
+ String key = PerformanceLogger.register("", "WDSC", "5120");
+ key = PerformanceLogger.register("RSE", "WDSC", "5120");
+ PerformanceLogger.deRegister("XXX"); //not registered key previously
+ System.out.println("Product info : " + PerformanceLogger.getCurrentProductInfo(PerformanceLogger.OPTION_GET_FEATURE, key) + " "
+ + PerformanceLogger.getCurrentProductInfo(PerformanceLogger.OPTION_GET_VERSION, key));
+ PerformanceLogger.start(key, "NOT_NESTED_1");
+ for (i = 0; i < 1000000; i++)
+ ;
+ PerformanceLogger.stop(key);
- PerformanceLogger.start(key, "NOT_NESTED_2");
- for ( i = 0; i < 2000000; i++);
- PerformanceLogger.stop(key);
-
- PerformanceLogger.start(key, "NESTED_THREE");
- for ( i = 0; i < 300; i++);
- PerformanceLogger.start(key, "NESTED_TWO_CHILD1");
- PerformanceLogger.start(key, "NESTED_TWO_CHILD2");
- for ( i = 0; i < 4000; i++);
- PerformanceLogger.start(key, "NESTED_TWO_CHILD3");
- for ( i = 0; i < 6000; i++);
- PerformanceLogger.stop(key);
- PerformanceLogger.stop(key);
- PerformanceLogger.stop(key);
- PerformanceLogger.stop(key);
-
- PerformanceLogger.start("ABC"); //Expect error: not registered
- PerformanceLogger.start(key); //record timer in the previous registered component
- for ( i = 0; i < 3000000; i++);
- PerformanceLogger.stop(key);
- key = PerformanceLogger.register(key); // Expect error: already registered
- PerformanceLogger.deRegister(key);
- key = PerformanceLogger.register(key);
- }
-
-}
\ No newline at end of file
+ PerformanceLogger.start(key, "NESTED_ONE");
+ for (i = 0; i < 500; i++)
+ ;
+ PerformanceLogger.start(key, "NESTED_ONE_CHILD");
+ for (i = 0; i < 300; i++)
+ ;
+ PerformanceLogger.stop(key);
+ PerformanceLogger.stop(key);
+
+ PerformanceLogger.start(key, "NOT_NESTED_2");
+ for (i = 0; i < 2000000; i++)
+ ;
+ PerformanceLogger.stop(key);
+
+ PerformanceLogger.start(key, "NESTED_THREE");
+ for (i = 0; i < 300; i++)
+ ;
+ PerformanceLogger.start(key, "NESTED_TWO_CHILD1");
+ PerformanceLogger.start(key, "NESTED_TWO_CHILD2");
+ for (i = 0; i < 4000; i++)
+ ;
+ PerformanceLogger.start(key, "NESTED_TWO_CHILD3");
+ for (i = 0; i < 6000; i++)
+ ;
+ PerformanceLogger.stop(key);
+ PerformanceLogger.stop(key);
+ PerformanceLogger.stop(key);
+ PerformanceLogger.stop(key);
+
+ PerformanceLogger.start("ABC"); //Expect error: not registered
+ PerformanceLogger.start(key); //record timer in the previous registered component
+ for (i = 0; i < 3000000; i++)
+ ;
+ PerformanceLogger.stop(key);
+ key = PerformanceLogger.register(key); // Expect error: already registered
+ PerformanceLogger.deRegister(key);
+ key = PerformanceLogger.register(key);
+ }
+
+}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/internal/logging/LabelUtil.java b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/ui/LabelUtil.java
similarity index 99%
rename from rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/internal/logging/LabelUtil.java
rename to rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/ui/LabelUtil.java
index b990ebec946..4eb53e2f95b 100644
--- a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/internal/logging/LabelUtil.java
+++ b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/ui/LabelUtil.java
@@ -14,7 +14,7 @@
* {Name} (company) - description of contribution.
********************************************************************************/
-package org.eclipse.rse.internal.logging;
+package org.eclipse.rse.logging.ui;
import java.util.HashSet;
import java.util.Set;
diff --git a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/ui/LoggingPreferenceLabels.java b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/ui/LoggingPreferenceLabels.java
new file mode 100644
index 00000000000..ff81a062a3d
--- /dev/null
+++ b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/ui/LoggingPreferenceLabels.java
@@ -0,0 +1,30 @@
+/********************************************************************************
+ * Copyright (c) 2006 IBM Corporation. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * David Dykstal (IBM) - 148434 Better F1 help.
+ ********************************************************************************/
+package org.eclipse.rse.logging.ui;
+
+import org.eclipse.osgi.util.NLS;
+
+public class LoggingPreferenceLabels extends NLS {
+
+ private static String BUNDLE_NAME = "org.eclipse.rse.logging.ui.LoggingPreferenceLabels";//$NON-NLS-1$
+
+ public static String LOGGING_PREFERENCE_PAGE_TOPLABEL1;
+ public static String LOGGING_PREFERENCE_PAGE_TOPLABEL2;
+ public static String LOGGING_PREFERENCE_PAGE_ERRORS_ONLY;
+ public static String LOGGING_PREFERENCE_PAGE_WARNINGS_ERRORS;
+ public static String LOGGING_PREFERENCE_PAGE_INFO_DEBUG;
+ public static String LOGGING_PREFERENCE_PAGE_FULL_DEBUG;
+
+ static {
+ // load message values from bundle file
+ NLS.initializeMessages(BUNDLE_NAME, LoggingPreferenceLabels.class);
+ }
+
+}
diff --git a/rse/plugins/org.eclipse.rse.logging/RemoteSystemsLogging.properties b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/ui/LoggingPreferenceLabels.properties
similarity index 65%
rename from rse/plugins/org.eclipse.rse.logging/RemoteSystemsLogging.properties
rename to rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/ui/LoggingPreferenceLabels.properties
index 02c1b15ebc5..8719d721088 100644
--- a/rse/plugins/org.eclipse.rse.logging/RemoteSystemsLogging.properties
+++ b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/ui/LoggingPreferenceLabels.properties
@@ -21,12 +21,9 @@
# Preference Page
# ----------------
-LoggingPreferencePage.topLabel1 = Specify the logging options for {0}
-LoggingPreferencePage.topLabel2 = Logging Level:
-LoggingPreferencePage.errors_only = Errors only
-LoggingPreferencePage.warnings_errors = Warnings and errors
-LoggingPreferencePage.info_debug = Warnings, errors and information messages
-LoggingPreferencePage.full_debug = Full debug
-LoggingPreferencePage.logging_location = Logging Location:
-LoggingPreferencePage.log_to_file = Log to file (default)
-LoggingPreferencePage.log_to_stdout = Log to Standard Out
\ No newline at end of file
+LOGGING_PREFERENCE_PAGE_TOPLABEL1 = Specify the logging options for {0}
+LOGGING_PREFERENCE_PAGE_TOPLABEL2 = Logging Level:
+LOGGING_PREFERENCE_PAGE_ERRORS_ONLY = Errors only
+LOGGING_PREFERENCE_PAGE_WARNINGS_ERRORS = Warnings and errors
+LOGGING_PREFERENCE_PAGE_INFO_DEBUG = Warnings, errors and information messages
+LOGGING_PREFERENCE_PAGE_FULL_DEBUG = Full debug
diff --git a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/LoggingPreferencePage.java b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/ui/LoggingPreferencePage.java
similarity index 59%
rename from rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/LoggingPreferencePage.java
rename to rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/ui/LoggingPreferencePage.java
index 455bb9a6839..038795ede60 100644
--- a/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/LoggingPreferencePage.java
+++ b/rse/plugins/org.eclipse.rse.logging/src/org/eclipse/rse/logging/ui/LoggingPreferencePage.java
@@ -11,23 +11,20 @@
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
*
* Contributors:
+ * Michael Berger (IBM Canada) - 148434 Better F1 help.
* {Name} (company) - description of contribution.
********************************************************************************/
-package org.eclipse.rse.logging;
-
+package org.eclipse.rse.logging.ui;
import java.text.MessageFormat;
import java.util.Set;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Plugin;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.preference.PreferenceStore;
-import org.eclipse.rse.internal.logging.LabelUtil;
+import org.eclipse.rse.logging.IRemoteSystemsLogging;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -37,32 +34,21 @@ import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.help.WorkbenchHelp;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.Bundle;
-
/**
* An abstract preference page for all remote system logging.
* Use a subclass of this page if you need a preference page to control
* logging.
*/
-public abstract class LoggingPreferencePage extends PreferencePage implements IWorkbenchPreferencePage, IExecutableExtension {
-
+public abstract class LoggingPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
private Button radioButton0;
private Button radioButton1;
private Button radioButton2;
private Button radioButton3;
- private Button radioButtonLogFile;
- private Button radioButtonLogView;
-
- /**
- * This is the plugin instance who's preference store will be used
- * to control the settings on this page. Also, when this page is closed
- * the settings are restored in the preference store of the above plugin.
- */
- private Bundle bundle = null;
/**
* Creates composite control and sets the default layout data.
@@ -90,37 +76,28 @@ public abstract class LoggingPreferencePage extends PreferencePage implements IW
* Method declared on PreferencePage
*/
protected Control createContents(Composite parent) {
+ Bundle bundle = getBundle();
Composite composite_tab = createComposite(parent, 2);
- String bundleName = (String)(bundle.getHeaders().get(org.osgi.framework.Constants.BUNDLE_NAME));
- String topLabel1 = RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.topLabel1");
- topLabel1 = MessageFormat.format(topLabel1, new Object[] {bundleName});
+ String bundleName = (String) (bundle.getHeaders().get(org.osgi.framework.Constants.BUNDLE_NAME));
+ String topLabel1 = LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_TOPLABEL1;
+ topLabel1 = MessageFormat.format(topLabel1, new Object[] { bundleName });
createLabel(composite_tab, topLabel1);
forceSpace(composite_tab);
- String topLabel2 = RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.topLabel2");
+ String topLabel2 = LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_TOPLABEL2;
createLabel(composite_tab, topLabel2);
tabForward(composite_tab);
Composite composite1_radioButton = createComposite(composite_tab, 1);
- String text = RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.errors_only");
+ String text = LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_ERRORS_ONLY;
Set used = LabelUtil.usedFromString("ad"); // the mnemonics already used on preference page (in English)
radioButton0 = createRadioButton(composite1_radioButton, LabelUtil.assignMnemonic(text, used));
- text = RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.warnings_errors");
+ text = LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_WARNINGS_ERRORS;
radioButton1 = createRadioButton(composite1_radioButton, LabelUtil.assignMnemonic(text, used));
- text = RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.info_debug");
+ text = LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_INFO_DEBUG;
radioButton2 = createRadioButton(composite1_radioButton, LabelUtil.assignMnemonic(text, used));
- // now add debug stuff, that only shows up in a debug build.
- if (Logger.DEBUG) {
- radioButton3 = createRadioButton(composite1_radioButton, RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.full_debug"));
- Composite composite_tab2 = createComposite(parent, 2);
- Label label3 = createLabel(composite_tab2, RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.logging_location"));
- tabForward(composite_tab2);
- Composite composite_radioButton2 = createComposite(composite_tab2, 1);
- radioButtonLogFile = createRadioButton(composite_radioButton2, RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.log_to_file"));
- radioButtonLogView = createRadioButton(composite_radioButton2, RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.log_to_stdout"));
- WorkbenchHelp.setHelp(composite_tab2, "com.ibm.etools.systems.logging.pref0000");
- }
+ text = LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_FULL_DEBUG;
+ radioButton3 = createRadioButton(composite1_radioButton, LabelUtil.assignMnemonic(text, used));
initializeValues();
- RemoteSystemsLoggingPlugin.out.logInfo("created LoggingPreferencePage");
- WorkbenchHelp.setHelp(composite_tab, "com.ibm.etools.systems.logging.pref0000");
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, "com.ibm.etools.systems.logging.rsel0000");
return new Composite(parent, SWT.NULL);
}
@@ -162,24 +139,27 @@ public abstract class LoggingPreferencePage extends PreferencePage implements IW
*
*/
protected IPreferenceStore doGetPreferenceStore() {
-
+ Bundle bundle = getBundle();
if (bundle != null) {
AbstractUIPlugin plugin = getPlugin();
-
if (plugin != null) {
return plugin.getPreferenceStore();
- }
- else {
+ } else {
return new PreferenceStore();
}
- }
- else {
+ } else {
return new PreferenceStore();
}
}
-
+
protected abstract AbstractUIPlugin getPlugin();
+ private Bundle getBundle() {
+ Plugin plugin = getPlugin();
+ Bundle bundle = plugin.getBundle();
+ return bundle;
+ }
+
/**
* Method declared on IWorkbenchPreferencePage
*/
@@ -195,36 +175,24 @@ public abstract class LoggingPreferencePage extends PreferencePage implements IW
radioButton0.setSelection(false);
radioButton1.setSelection(false);
radioButton2.setSelection(false);
- if (null != radioButton3)
- radioButton3.setSelection(false);
- if (Logger.DEBUG) {
- radioButtonLogFile.setSelection(false);
- radioButtonLogView.setSelection(false);
- }
+ if (null != radioButton3) radioButton3.setSelection(false);
int choice = store.getInt(IRemoteSystemsLogging.DEBUG_LEVEL);
switch (choice) {
- case 0 :
- radioButton0.setSelection(true);
- break;
- case 1 :
- radioButton1.setSelection(true);
- break;
- case 2 :
- radioButton2.setSelection(true);
- break;
- case 3 :
- if (null != radioButton3)
- radioButton3.setSelection(true);
- else
- radioButton2.setSelection(true);
- break;
- }
- if (Logger.DEBUG) {
- String log_location = store.getString(IRemoteSystemsLogging.LOG_LOCATION);
- if (log_location.equalsIgnoreCase(IRemoteSystemsLogging.LOG_TO_STDOUT))
- radioButtonLogView.setSelection(true);
+ case 0:
+ radioButton0.setSelection(true);
+ break;
+ case 1:
+ radioButton1.setSelection(true);
+ break;
+ case 2:
+ radioButton2.setSelection(true);
+ break;
+ case 3:
+ if (null != radioButton3)
+ radioButton3.setSelection(true);
else
- radioButtonLogFile.setSelection(true);
+ radioButton2.setSelection(true);
+ break;
}
}
@@ -237,36 +205,24 @@ public abstract class LoggingPreferencePage extends PreferencePage implements IW
radioButton0.setSelection(false);
radioButton1.setSelection(false);
radioButton2.setSelection(false);
- if (null != radioButton3)
- radioButton3.setSelection(false);
- if (Logger.DEBUG) {
- radioButtonLogFile.setSelection(false);
- radioButtonLogView.setSelection(false);
- }
+ if (null != radioButton3) radioButton3.setSelection(false);
int choice = store.getDefaultInt(IRemoteSystemsLogging.DEBUG_LEVEL);
switch (choice) {
- case 0 :
- radioButton0.setSelection(true);
- break;
- case 1 :
- radioButton1.setSelection(true);
- break;
- case 2 :
- radioButton2.setSelection(true);
- break;
- case 3 :
- if (null != radioButton3)
- radioButton3.setSelection(true);
- else
- radioButton2.setSelection(true);
- break;
- }
- if (Logger.DEBUG) {
- String log_location = store.getDefaultString(IRemoteSystemsLogging.LOG_LOCATION);
- if (log_location.equalsIgnoreCase(IRemoteSystemsLogging.LOG_TO_STDOUT))
- radioButtonLogView.setSelection(true);
+ case 0:
+ radioButton0.setSelection(true);
+ break;
+ case 1:
+ radioButton1.setSelection(true);
+ break;
+ case 2:
+ radioButton2.setSelection(true);
+ break;
+ case 3:
+ if (null != radioButton3)
+ radioButton3.setSelection(true);
else
- radioButtonLogFile.setSelection(true);
+ radioButton2.setSelection(true);
+ break;
}
}
@@ -296,17 +252,8 @@ public abstract class LoggingPreferencePage extends PreferencePage implements IW
choice = 1;
else if (radioButton2.getSelection())
choice = 2;
- else if (null != radioButton3 && radioButton3.getSelection())
- choice = 3;
+ else if (null != radioButton3 && radioButton3.getSelection()) choice = 3;
store.setValue(IRemoteSystemsLogging.DEBUG_LEVEL, choice);
- if (Logger.DEBUG) {
- String log_location = "";
- if (radioButtonLogFile.getSelection())
- log_location = IRemoteSystemsLogging.LOG_TO_FILE;
- else
- log_location = IRemoteSystemsLogging.LOG_TO_STDOUT;
- store.setValue(IRemoteSystemsLogging.LOG_LOCATION, log_location);
- }
}
/**
@@ -336,17 +283,4 @@ public abstract class LoggingPreferencePage extends PreferencePage implements IW
data.horizontalSpan = 2;
label.setLayoutData(data);
}
-
- /**
- * This is needed to get to the plugin id, and then plugin instance.
- */
- public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException {
- try {
- String pluginName = config.getDeclaringExtension().getContributor().getName();
- this.bundle = Platform.getBundle(pluginName);
- } catch (Exception e) {
- RemoteSystemsLoggingPlugin.out.logError("Failed to create LoggingPreferencePage.", e);
- }
- }
-
}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/propertypages/SystemLoggingPreferencePage.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/propertypages/SystemLoggingPreferencePage.java
index 92070fc14e6..4279b28a7ba 100644
--- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/propertypages/SystemLoggingPreferencePage.java
+++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/propertypages/SystemLoggingPreferencePage.java
@@ -16,7 +16,7 @@
package org.eclipse.rse.ui.propertypages;
-import org.eclipse.rse.logging.LoggingPreferencePage;
+import org.eclipse.rse.logging.ui.LoggingPreferencePage;
import org.eclipse.rse.ui.RSEUIPlugin;
import org.eclipse.ui.plugin.AbstractUIPlugin;
diff --git a/rse/plugins/org.eclipse.rse.ui/filters/org/eclipse/rse/internal/filters/SystemFilterPoolManager.java b/rse/plugins/org.eclipse.rse.ui/filters/org/eclipse/rse/internal/filters/SystemFilterPoolManager.java
index 2e15ed7311c..eead5be78bd 100644
--- a/rse/plugins/org.eclipse.rse.ui/filters/org/eclipse/rse/internal/filters/SystemFilterPoolManager.java
+++ b/rse/plugins/org.eclipse.rse.ui/filters/org/eclipse/rse/internal/filters/SystemFilterPoolManager.java
@@ -1810,7 +1810,7 @@ public class SystemFilterPoolManager implements ISystemFilterPoolManager
*/
public void logDebugMessage(String prefix, String message)
{
- if ((Logger.DEBUG) && (logger!=null))
+ if ((logger!=null))
{
logger.logDebugMessage(prefix, message);
}
diff --git a/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/AbstractConnectorService.java b/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/AbstractConnectorService.java
index e226d73c158..1b1fc7d01c8 100644
--- a/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/AbstractConnectorService.java
+++ b/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/AbstractConnectorService.java
@@ -448,15 +448,13 @@ public abstract class AbstractConnectorService extends RSEModelObject implements
if (passwordInformation == null && oldUserId != null && !forcePrompt) {
SystemSignonInformation savedPasswordInformation = ppm.find(hostType, hostName, oldUserId);
if (savedPasswordInformation != null) {
- if (validator != null) {
- if (!validator.isValid(shell, savedPasswordInformation)) {
- passwordValid = false;
- clearPasswordCache();
- passwordInformation = null;
- } else {
- setPasswordInformation(savedPasswordInformation);
- passwordInformation = getPasswordInformation();
- }
+ if (validator == null || validator.isValid(shell, savedPasswordInformation)) {
+ setPasswordInformation(savedPasswordInformation);
+ passwordInformation = getPasswordInformation();
+ } else {
+ passwordValid = false;
+ clearPasswordCache();
+ passwordInformation = null;
}
}
}
@@ -1087,7 +1085,7 @@ public abstract class AbstractConnectorService extends RSEModelObject implements
}
private void logException(Throwable t) {
- Logger log = LoggerFactory.getInst(RSEUIPlugin.getDefault());
+ Logger log = LoggerFactory.getLogger(RSEUIPlugin.getDefault());
log.logError("Unexpected exception", t);
}
diff --git a/rse/plugins/org.eclipse.rse.ui/systems/org/eclipse/rse/core/SystemBasePlugin.java b/rse/plugins/org.eclipse.rse.ui/systems/org/eclipse/rse/core/SystemBasePlugin.java
index 1555533d42f..db01364bfb6 100644
--- a/rse/plugins/org.eclipse.rse.ui/systems/org/eclipse/rse/core/SystemBasePlugin.java
+++ b/rse/plugins/org.eclipse.rse.ui/systems/org/eclipse/rse/core/SystemBasePlugin.java
@@ -655,10 +655,7 @@ public abstract class SystemBasePlugin extends AbstractUIPlugin
*/
public static void logDebugMessage(String prefix, String message)
{
- if (Logger.DEBUG)
- {
- log.logDebugMessage(prefix, message);
- }
+ log.logDebugMessage(prefix, message);
}
/**
@@ -716,7 +713,7 @@ public abstract class SystemBasePlugin extends AbstractUIPlugin
// logger
if (log == null) {
- log = LoggerFactory.getInst(this);
+ log = LoggerFactory.getLogger(this);
log.logInfo("Loading " + this.getClass());
}
}
@@ -726,7 +723,7 @@ public abstract class SystemBasePlugin extends AbstractUIPlugin
*/
public void stop(BundleContext context) throws Exception {
logDebugMessage(this.getClass().getName(), "SHUTDOWN");
- LoggerFactory.freeInst(this);
+ LoggerFactory.freeLogger(this);
super.stop(context);
}