-/*******************************************************************************\r
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- * VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.message.internal;\r
-\r
-import java.io.File;\r
-import java.util.Hashtable;\r
-\r
-import org.eclipse.core.runtime.IPath;\r
-import org.eclipse.core.runtime.Plugin;\r
-import org.eclipse.osgi.framework.log.FrameworkLog;\r
-import org.osgi.framework.BundleContext;\r
-import org.osgi.framework.ServiceRegistration;\r
-import org.simantics.message.ILogListener;\r
-import org.simantics.message.ILogger;\r
-import org.simantics.message.IMessageSchemeManager;\r
-\r
-/**\r
- * The activator class controls the plug-in life cycle\r
- */\r
-@SuppressWarnings("restriction")\r
-public class Activator extends Plugin {\r
-\r
- private static final String DEFAULT_LOG_FILE_NAME = "messages.log";\r
-\r
- // The plug-in ID\r
- public static final String PLUGIN_ID = "org.simantics.message";\r
-\r
- private static final String LOGGER_NAME = "org.simantics.message.logger"; //$NON-NLS-1$\r
-\r
- // The shared instance\r
- private static Activator plugin;\r
- private BundleContext bundleContext;\r
-\r
- // The one and only message service instance\r
- private Messages messagesService;\r
- private MessageSchemeManager messageSchemeManagerService;\r
-\r
- @SuppressWarnings("rawtypes")\r
- private ServiceRegistration messages = null;\r
- @SuppressWarnings("rawtypes")\r
- private ServiceRegistration messageSchemeManager = null;\r
-\r
- private LogWriter platformLog = null;\r
- private FrameworkLog frameworkLog = null;\r
-\r
- /**\r
- * The constructor\r
- */\r
- public Activator() {\r
- }\r
-\r
- /*\r
- * (non-Javadoc)\r
- * \r
- * @see\r
- * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext\r
- * )\r
- */\r
- @SuppressWarnings({ "rawtypes", "unchecked" })\r
- @Override\r
- public void start(BundleContext context) throws Exception {\r
- super.start(context);\r
- this.bundleContext = context;\r
-\r
- messagesService = new Messages();\r
- messageSchemeManagerService = new MessageSchemeManager();\r
-\r
- messages = bundleContext.registerService(ILogger.class.getName(), messagesService, new Hashtable());\r
- messageSchemeManager = bundleContext.registerService(IMessageSchemeManager.class.getName(), messageSchemeManagerService, new Hashtable<String, Object>());\r
-\r
- // Attach a writer listener to the Messages ILog to actually get the logs stored on disk.\r
- // NOTE: This must be the first listener for this ILog, to guarantee that the log on disk\r
- // is always up-to-date if other ILogListeners want to read it. LogView does exactly this.\r
- FrameworkLog log = getFrameworkLog();\r
- if (log != null) {\r
- platformLog = new LogWriter(getFrameworkLog());\r
- addLogListener(platformLog);\r
- } else\r
- platformLog = null;\r
-\r
- plugin = this;\r
- }\r
-\r
- /*\r
- * (non-Javadoc)\r
- * \r
- * @see\r
- * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext\r
- * )\r
- */\r
- @Override\r
- public void stop(BundleContext context) throws Exception {\r
- if (platformLog != null)\r
- removeLogListener(platformLog);\r
- if (frameworkLog != null)\r
- frameworkLog.close();\r
-\r
- if (messageSchemeManager != null) {\r
- messageSchemeManager.unregister();\r
- messageSchemeManager = null;\r
- messageSchemeManagerService = null;\r
- }\r
-\r
- if (messages != null) {\r
- messages.unregister();\r
- messages = null;\r
- messagesService = null;\r
- }\r
-\r
- bundleContext = null;\r
- plugin = null;\r
- super.stop(context);\r
- }\r
-\r
- /**\r
- * Returns the shared instance\r
- * \r
- * @return the shared instance\r
- */\r
- public static Activator getDefault() {\r
- return plugin;\r
- }\r
-\r
- /**\r
- * Returns the shared Simantics ILogger service instance.\r
- * \r
- * @return the shared message service\r
- */\r
- public ILogger getMessages() {\r
- return messagesService;\r
- }\r
-\r
- /**\r
- * Add a listener to the Simantics platform ILogger service.\r
- */\r
- public void addLogListener(ILogListener listener) {\r
- getMessages().addLogListener(listener);\r
- }\r
-\r
- /**\r
- * Remove a listener from the Simantics platform ILogger service.\r
- */\r
- public void removeLogListener(ILogListener listener) {\r
- getMessages().removeLogListener(listener);\r
- }\r
-\r
- /**\r
- * @return\r
- */\r
- private FrameworkLog getFrameworkLog() {\r
- if (frameworkLog == null) {\r
- // TODO: make this a configurable preference, just like the osgi.logfile preference\r
- IPath logLocation = getStateLocation().append(DEFAULT_LOG_FILE_NAME);\r
- // TODO: need to clone EquinoxLogWriter and EquinoxLogFactory to this plugin\r
-// EquinoxLogWriter logWriter = new EclipseLogWriter(logLocation.toFile(), LOGGER_NAME, true);\r
-// LogServiceManager logServiceManager = new LogServiceManager(logWriter);\r
-// EquinoxLogFactory logFactory = new EquinoxLogFactory(logWriter, logServiceManager);\r
-// frameworkLog = logFactory.getService(getBundle(), null);\r
- }\r
- return frameworkLog;\r
- }\r
-\r
- /**\r
- * @return\r
- */\r
- public static File getLogFile() {\r
- return getDefault().getFrameworkLog().getFile();\r
- }\r
-\r
- /**\r
- * Returns the shared Simantics ILogger service instance.\r
- * \r
- * @return the shared message service\r
- */\r
- public IMessageSchemeManager getMessageSchemeManager() {\r
- return messageSchemeManagerService;\r
- }\r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * 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:
+ * VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.message.internal;
+
+import java.io.File;
+import java.util.Hashtable;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.osgi.framework.log.FrameworkLog;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+import org.simantics.message.ILogListener;
+import org.simantics.message.ILogger;
+import org.simantics.message.IMessageSchemeManager;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+@SuppressWarnings("restriction")
+public class Activator extends Plugin {
+
+ private static final String DEFAULT_LOG_FILE_NAME = "messages.log";
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.simantics.message";
+
+ private static final String LOGGER_NAME = "org.simantics.message.logger"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+ private BundleContext bundleContext;
+
+ // The one and only message service instance
+ private Messages messagesService;
+ private MessageSchemeManager messageSchemeManagerService;
+
+ @SuppressWarnings("rawtypes")
+ private ServiceRegistration messages = null;
+ @SuppressWarnings("rawtypes")
+ private ServiceRegistration messageSchemeManager = null;
+
+ private LogWriter platformLog = null;
+ private FrameworkLog frameworkLog = null;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext
+ * )
+ */
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ this.bundleContext = context;
+
+ messagesService = new Messages();
+ messageSchemeManagerService = new MessageSchemeManager();
+
+ messages = bundleContext.registerService(ILogger.class.getName(), messagesService, new Hashtable());
+ messageSchemeManager = bundleContext.registerService(IMessageSchemeManager.class.getName(), messageSchemeManagerService, new Hashtable<String, Object>());
+
+ // Attach a writer listener to the Messages ILog to actually get the logs stored on disk.
+ // NOTE: This must be the first listener for this ILog, to guarantee that the log on disk
+ // is always up-to-date if other ILogListeners want to read it. LogView does exactly this.
+ FrameworkLog log = getFrameworkLog();
+ if (log != null) {
+ platformLog = new LogWriter(getFrameworkLog());
+ addLogListener(platformLog);
+ } else
+ platformLog = null;
+
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext
+ * )
+ */
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ if (platformLog != null)
+ removeLogListener(platformLog);
+ if (frameworkLog != null)
+ frameworkLog.close();
+
+ if (messageSchemeManager != null) {
+ messageSchemeManager.unregister();
+ messageSchemeManager = null;
+ messageSchemeManagerService = null;
+ }
+
+ if (messages != null) {
+ messages.unregister();
+ messages = null;
+ messagesService = null;
+ }
+
+ bundleContext = null;
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Returns the shared Simantics ILogger service instance.
+ *
+ * @return the shared message service
+ */
+ public ILogger getMessages() {
+ return messagesService;
+ }
+
+ /**
+ * Add a listener to the Simantics platform ILogger service.
+ */
+ public void addLogListener(ILogListener listener) {
+ getMessages().addLogListener(listener);
+ }
+
+ /**
+ * Remove a listener from the Simantics platform ILogger service.
+ */
+ public void removeLogListener(ILogListener listener) {
+ getMessages().removeLogListener(listener);
+ }
+
+ /**
+ * @return
+ */
+ private FrameworkLog getFrameworkLog() {
+ if (frameworkLog == null) {
+ // TODO: make this a configurable preference, just like the osgi.logfile preference
+ IPath logLocation = getStateLocation().append(DEFAULT_LOG_FILE_NAME);
+ // TODO: need to clone EquinoxLogWriter and EquinoxLogFactory to this plugin
+// EquinoxLogWriter logWriter = new EclipseLogWriter(logLocation.toFile(), LOGGER_NAME, true);
+// LogServiceManager logServiceManager = new LogServiceManager(logWriter);
+// EquinoxLogFactory logFactory = new EquinoxLogFactory(logWriter, logServiceManager);
+// frameworkLog = logFactory.getService(getBundle(), null);
+ }
+ return frameworkLog;
+ }
+
+ /**
+ * @return
+ */
+ public static File getLogFile() {
+ return getDefault().getFrameworkLog().getFile();
+ }
+
+ /**
+ * Returns the shared Simantics ILogger service instance.
+ *
+ * @return the shared message service
+ */
+ public IMessageSchemeManager getMessageSchemeManager() {
+ return messageSchemeManagerService;
+ }
+
+}