Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Watson2014-03-24 17:28:31 -0400
committerThomas Watson2014-03-24 17:28:31 -0400
commit8a83ca61091dc2825bf19d2b6c3ebebd1f90a556 (patch)
tree05874b88c809ddd833d4eb91c9a68fd0bdd5dc24
parent2a9e5783274435db23f903fe97350c75f4e0800a (diff)
downloadrt.equinox.framework-8a83ca61091dc2825bf19d2b6c3ebebd1f90a556.tar.gz
rt.equinox.framework-8a83ca61091dc2825bf19d2b6c3ebebd1f90a556.tar.xz
rt.equinox.framework-8a83ca61091dc2825bf19d2b6c3ebebd1f90a556.zip
Bug 431052 - Support DebugOptionsListener for framework trace optionsI20140325-0830
-rw-r--r--bundles/org.eclipse.osgi/.options18
-rw-r--r--bundles/org.eclipse.osgi/build.properties5
-rw-r--r--bundles/org.eclipse.osgi/container/src/org/eclipse/core/runtime/adaptor/EclipseStarter.java5
-rw-r--r--bundles/org.eclipse.osgi/container/src/org/eclipse/core/runtime/internal/adaptor/DefaultStartupMonitor.java5
-rw-r--r--bundles/org.eclipse.osgi/container/src/org/eclipse/core/runtime/internal/adaptor/EclipseAppLauncher.java3
-rw-r--r--bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleContainer.java14
-rw-r--r--bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java6
-rw-r--r--bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/debug/Debug.java13
-rw-r--r--bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/debug/EclipseDebugTrace.java9
-rw-r--r--bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/debug/FrameworkDebugOptions.java52
-rw-r--r--bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/framework/SystemBundleActivator.java8
-rw-r--r--bundles/org.eclipse.osgi/plugin.xml16
-rw-r--r--bundles/org.eclipse.osgi/systembundle.properties4
13 files changed, 99 insertions, 59 deletions
diff --git a/bundles/org.eclipse.osgi/.options b/bundles/org.eclipse.osgi/.options
index 9cc602ccc..86e00f286 100644
--- a/bundles/org.eclipse.osgi/.options
+++ b/bundles/org.eclipse.osgi/.options
@@ -56,24 +56,6 @@ org.eclipse.osgi/resolver/wiring = false
# Displays the resolution report information.
org.eclipse.osgi/resolver/report = false
-#### Profile settings
-org.eclipse.osgi/profile/startup = false
-org.eclipse.osgi/profile/benchmark = false
-org.eclipse.osgi/profile/debug = false
-
-# Override the default implemenation
-org.eclipse.osgi/profile/impl = org.eclipse.osgi.internal.profile.DefaultProfileLogger
-
-# Append all profile messages to the filename specified
-org.eclipse.osgi/defaultprofile/logfilename =
-
-# Output all profile log messages synchronously to the jvm console.
-# By default, all log messages are cached until the log buffer is
-# requested.
-org.eclipse.osgi/defaultprofile/logsynchronously = false
-
-# Specify the size of the default profile implementation log buffer.
-org.eclipse.osgi/defaultprofile/buffersize = 256
#### Monitoring settings
# monitor class loading
diff --git a/bundles/org.eclipse.osgi/build.properties b/bundles/org.eclipse.osgi/build.properties
index 89ec1bca2..d7eb3d8e9 100644
--- a/bundles/org.eclipse.osgi/build.properties
+++ b/bundles/org.eclipse.osgi/build.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2003, 2013 IBM Corporation and others.
+# Copyright (c) 2003, 2014 IBM Corporation and others.
# 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
@@ -15,7 +15,8 @@ bin.includes = .options,\
systembundle.properties,\
*.profile,\
profile.list,\
- about_files/
+ about_files/,\
+ plugin.xml
src.includes = about.html,\
about_files/
source.. = osgi/src,\
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/core/runtime/adaptor/EclipseStarter.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/core/runtime/adaptor/EclipseStarter.java
index 5a8c272f1..2e12c6fc7 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/core/runtime/adaptor/EclipseStarter.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/core/runtime/adaptor/EclipseStarter.java
@@ -26,6 +26,7 @@ import org.eclipse.osgi.container.namespaces.EquinoxModuleDataNamespace;
import org.eclipse.osgi.framework.log.FrameworkLog;
import org.eclipse.osgi.framework.log.FrameworkLogEntry;
import org.eclipse.osgi.framework.util.FilePath;
+import org.eclipse.osgi.internal.debug.Debug;
import org.eclipse.osgi.internal.framework.EquinoxConfiguration;
import org.eclipse.osgi.internal.framework.EquinoxContainer;
import org.eclipse.osgi.internal.location.EquinoxLocations;
@@ -343,7 +344,7 @@ public class EclipseStarter {
return Integer.parseInt(level);
} catch (NumberFormatException e) {
if (debug)
- System.out.println("Start level = " + level + " parsed. Using hardcoded default: 6"); //$NON-NLS-1$ //$NON-NLS-2$
+ Debug.println("Start level = " + level + " parsed. Using hardcoded default: 6"); //$NON-NLS-1$ //$NON-NLS-2$
}
return DEFAULT_INITIAL_STARTLEVEL;
}
@@ -582,7 +583,7 @@ public class EclipseStarter {
startBundles(startInitBundles, lazyInitBundles);
if (debug)
- System.out.println("Time to load bundles: " + (System.currentTimeMillis() - startTime)); //$NON-NLS-1$
+ Debug.println("Time to load bundles: " + (System.currentTimeMillis() - startTime)); //$NON-NLS-1$
return startInitBundles;
}
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/core/runtime/internal/adaptor/DefaultStartupMonitor.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/core/runtime/internal/adaptor/DefaultStartupMonitor.java
index 207f18100..7ea943a64 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/core/runtime/internal/adaptor/DefaultStartupMonitor.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/core/runtime/internal/adaptor/DefaultStartupMonitor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2012 IBM Corporation and others.
+ * Copyright (c) 2006, 2014 IBM Corporation and others.
* 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
@@ -12,6 +12,7 @@ package org.eclipse.core.runtime.internal.adaptor;
import java.lang.reflect.Method;
import org.eclipse.core.runtime.adaptor.EclipseStarter;
+import org.eclipse.osgi.internal.debug.Debug;
import org.eclipse.osgi.internal.framework.EquinoxConfiguration;
import org.eclipse.osgi.service.runnable.StartupMonitor;
@@ -61,7 +62,7 @@ public class DefaultStartupMonitor implements StartupMonitor {
if (EclipseStarter.debug) {
String timeString = equinoxConfig.getConfiguration("eclipse.startTime"); //$NON-NLS-1$
long time = timeString == null ? 0L : Long.parseLong(timeString);
- System.out.println("Application Started: " + (System.currentTimeMillis() - time)); //$NON-NLS-1$
+ Debug.println("Application Started: " + (System.currentTimeMillis() - time)); //$NON-NLS-1$
}
splashHandler.run();
}
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/core/runtime/internal/adaptor/EclipseAppLauncher.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/core/runtime/internal/adaptor/EclipseAppLauncher.java
index 5a812bf6a..35348c118 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/core/runtime/internal/adaptor/EclipseAppLauncher.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/core/runtime/internal/adaptor/EclipseAppLauncher.java
@@ -17,6 +17,7 @@ import java.util.concurrent.TimeUnit;
import org.eclipse.core.runtime.adaptor.EclipseStarter;
import org.eclipse.osgi.framework.log.FrameworkLog;
import org.eclipse.osgi.framework.log.FrameworkLogEntry;
+import org.eclipse.osgi.internal.debug.Debug;
import org.eclipse.osgi.internal.framework.EquinoxConfiguration;
import org.eclipse.osgi.internal.framework.EquinoxContainer;
import org.eclipse.osgi.internal.messages.Msg;
@@ -126,7 +127,7 @@ public class EclipseAppLauncher implements ApplicationLauncher {
if (EclipseStarter.debug) {
String timeString = equinoxConfig.getConfiguration("eclipse.startTime"); //$NON-NLS-1$
long time = timeString == null ? 0L : Long.parseLong(timeString);
- System.out.println("Starting application: " + (System.currentTimeMillis() - time)); //$NON-NLS-1$
+ Debug.println("Starting application: " + (System.currentTimeMillis() - time)); //$NON-NLS-1$
}
try {
// run the actual application on the current thread (main).
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleContainer.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleContainer.java
index f50f496dc..1feae3d6f 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleContainer.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleContainer.java
@@ -33,6 +33,7 @@ import org.eclipse.osgi.internal.messages.Msg;
import org.eclipse.osgi.report.resolution.ResolutionReport;
import org.eclipse.osgi.report.resolution.ResolutionReport.Entry;
import org.eclipse.osgi.service.debug.DebugOptions;
+import org.eclipse.osgi.service.debug.DebugOptionsListener;
import org.eclipse.osgi.util.NLS;
import org.osgi.framework.*;
import org.osgi.framework.namespace.*;
@@ -45,7 +46,7 @@ import org.osgi.service.resolver.ResolutionException;
* A container for installing, updating, uninstalling and resolve modules.
* @since 3.10
*/
-public final class ModuleContainer {
+public final class ModuleContainer implements DebugOptionsListener {
private final static SecureAction secureAction = AccessController.doPrivileged(SecureAction.createSecureAction());
/**
@@ -1364,6 +1365,11 @@ public final class ModuleContainer {
}
}
+ public void optionsChanged(DebugOptions options) {
+ moduleResolver.setDebugOptions();
+ frameworkStartLevel.setDebugOptions();
+ }
+
class ContainerStartLevel implements FrameworkStartLevel, EventDispatcher<Module, FrameworkListener[], Integer> {
static final int USE_BEGINNING_START_LEVEL = Integer.MIN_VALUE;
private static final int FRAMEWORK_STARTLEVEL = 1;
@@ -1372,8 +1378,12 @@ public final class ModuleContainer {
private final Object eventManagerLock = new Object();
private EventManager startLevelThread = null;
private final Object frameworkStartLevelLock = new Object();
- private final boolean debugStartLevel;
+ private boolean debugStartLevel = false;
{
+ setDebugOptions();
+ }
+
+ void setDebugOptions() {
DebugOptions options = getAdaptor().getDebugOptions();
debugStartLevel = options == null ? false : options.getBooleanOption(Debug.OPTION_DEBUG_STARTLEVEL, false);
}
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java
index 31152bb05..4269eca72 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java
@@ -54,7 +54,7 @@ final class ModuleResolver {
boolean DEBUG_WIRING = false;
boolean DEBUG_REPORT = false;
- private void setDebugOptions() {
+ void setDebugOptions() {
DebugOptions options = adaptor.getDebugOptions();
// may be null if debugging is not enabled
if (options == null)
@@ -937,7 +937,7 @@ final class ModuleResolver {
long startTime = 0;
if (DEBUG_ROOTS) {
startTime = System.currentTimeMillis();
- System.out.print("Resolver: Resolving root bundle: " + single); //$NON-NLS-1$
+ Debug.print("Resolver: Resolving root bundle: " + single); //$NON-NLS-1$
}
currentlyResolving = single;
currentlyResolvingMandatory = isMandatory;
@@ -967,7 +967,7 @@ final class ModuleResolver {
currentlyResolvingMandatory = false;
}
if (DEBUG_ROOTS) {
- System.out.println(" [" + (System.currentTimeMillis() - startTime) + "ms]"); //$NON-NLS-1$ //$NON-NLS-2$
+ Debug.println(" [" + (System.currentTimeMillis() - startTime) + "ms]"); //$NON-NLS-1$ //$NON-NLS-2$
}
}
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/debug/Debug.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/debug/Debug.java
index c14d12828..565ee1e1a 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/debug/Debug.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/debug/Debug.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2003, 2013 IBM Corporation and others.
+ * Copyright (c) 2003, 2014 IBM Corporation and others.
* 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
@@ -15,13 +15,14 @@ import java.io.PrintStream;
import org.eclipse.osgi.internal.framework.EquinoxContainer;
import org.eclipse.osgi.internal.util.SupplementDebug;
import org.eclipse.osgi.service.debug.DebugOptions;
+import org.eclipse.osgi.service.debug.DebugOptionsListener;
/**
* This class has debug constants which can be used by the Framework implementation
* and Adaptor implementations
* @since 3.1
*/
-public class Debug {
+public class Debug implements DebugOptionsListener {
/**
* Base debug option key (org.eclispe.osgi).
*/
@@ -151,9 +152,11 @@ public class Debug {
public boolean DEBUG_CACHED_MANIFEST = false;
public Debug(DebugOptions dbgOptions) {
- if (dbgOptions == null) {
- return;
- }
+ optionsChanged(dbgOptions);
+ }
+
+ @Override
+ public void optionsChanged(DebugOptions dbgOptions) {
DEBUG_GENERAL = dbgOptions.getBooleanOption(OPTION_DEBUG_GENERAL, false);
DEBUG_BUNDLE_TIME = dbgOptions.getBooleanOption(OPTION_DEBUG_BUNDLE_TIME, false) || dbgOptions.getBooleanOption("org.eclipse.core.runtime/timing/startup", false); //$NON-NLS-1$
DEBUG_LOADER = dbgOptions.getBooleanOption(OPTION_DEBUG_LOADER, false);
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/debug/EclipseDebugTrace.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/debug/EclipseDebugTrace.java
index 4bade0b4e..3a2fea17e 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/debug/EclipseDebugTrace.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/debug/EclipseDebugTrace.java
@@ -65,8 +65,6 @@ class EclipseDebugTrace implements DebugTrace {
private final static String NULL_VALUE = "<null>"; //$NON-NLS-1$
/** */
private final static SecureAction secureAction = AccessController.doPrivileged(SecureAction.createSecureAction());
- /** A lock object used to synchronize access to the trace file */
- private final static Object writeLock = new Object();
/******************* Tracing file attributes **************************/
/** The default size a trace file can grow before it is rotated */
@@ -92,8 +90,6 @@ class EclipseDebugTrace implements DebugTrace {
private String traceClass = null;
/** The symbolic name of the bundle being traced */
private String bundleSymbolicName = null;
- /** A flag to determine if the message being written is done to a new file (i.e. should the header information be written) */
- static boolean newSession = true;
/** DebugOptions are used to determine if the specified bundle symbolic name + option-path has debugging enabled */
private FrameworkDebugOptions debugOptions = null;
@@ -335,7 +331,7 @@ class EclipseDebugTrace implements DebugTrace {
private void writeRecord(final FrameworkDebugTraceEntry entry) {
if (entry != null) {
- synchronized (EclipseDebugTrace.writeLock) {
+ synchronized (debugOptions.getWriteLock()) {
final File tracingFile = debugOptions.getFile(); // the tracing file may be null if it has not been set
Writer traceWriter = null;
try {
@@ -343,9 +339,8 @@ class EclipseDebugTrace implements DebugTrace {
checkTraceFileSize(tracingFile, entry.getTimestamp());
// open the trace file
traceWriter = openWriter(tracingFile);
- if (EclipseDebugTrace.newSession) {
+ if (debugOptions.newSession()) {
writeSession(traceWriter, entry.getTimestamp());
- EclipseDebugTrace.newSession = false;
}
writeMessage(traceWriter, entry);
// flush the writer
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/debug/FrameworkDebugOptions.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/debug/FrameworkDebugOptions.java
index 7c6c13ed7..73b3147d9 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/debug/FrameworkDebugOptions.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/debug/FrameworkDebugOptions.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2003, 2013 IBM Corporation and others.
+ * Copyright (c) 2003, 2014 IBM Corporation and others.
* 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
@@ -35,6 +35,8 @@ public class FrameworkDebugOptions implements DebugOptions, ServiceTrackerCustom
/** The default name of the .options file if loading when the -debug command-line argument is used */
private static final String OPTIONS = ".options"; //$NON-NLS-1$
+ /** A lock object used to synchronize access to the trace file */
+ private final static Object writeLock = new Object();
/** monitor used to lock the options maps */
private final Object lock = new Object();
/** A current map of all the options with values set */
@@ -47,6 +49,8 @@ public class FrameworkDebugOptions implements DebugOptions, ServiceTrackerCustom
protected File outFile = null;
/** Is verbose debugging enabled? Changing this value causes a new tracing session to start. */
protected boolean verboseDebug = true;
+ /** A flag to determine if the message being written is done to a new file (i.e. should the header information be written) */
+ private boolean newSession = true;
private final EquinoxConfiguration environmentInfo;
private volatile BundleContext context;
private volatile ServiceTracker<DebugOptionsListener, DebugOptionsListener> listenerTracker;
@@ -346,7 +350,7 @@ public class FrameworkDebugOptions implements DebugOptions, ServiceTrackerCustom
if (options != null)
return;
// notify the trace that a new session is started
- EclipseDebugTrace.newSession = true;
+ this.newSession = true;
// enable platform debugging - there is no .options file
environmentInfo.setConfiguration(OSGI_DEBUG, ""); //$NON-NLS-1$
@@ -417,15 +421,30 @@ public class FrameworkDebugOptions implements DebugOptions, ServiceTrackerCustom
* (non-Javadoc)
* @see org.eclipse.osgi.service.debug.DebugOptions#setFile(java.io.File)
*/
- public synchronized void setFile(final File traceFile) {
-
- this.outFile = traceFile;
- if (this.outFile != null)
- environmentInfo.setConfiguration(PROP_TRACEFILE, this.outFile.getAbsolutePath());
- else
- environmentInfo.clearConfiguration(PROP_TRACEFILE);
- // the file changed so start a new session
- EclipseDebugTrace.newSession = true;
+ public void setFile(final File traceFile) {
+ synchronized (lock) {
+ this.outFile = traceFile;
+ if (this.outFile != null)
+ environmentInfo.setConfiguration(PROP_TRACEFILE, this.outFile.getAbsolutePath());
+ else
+ environmentInfo.clearConfiguration(PROP_TRACEFILE);
+ // the file changed so start a new session
+ this.newSession = true;
+ }
+ }
+
+ boolean newSession() {
+ synchronized (lock) {
+ if (newSession) {
+ this.newSession = false;
+ return true;
+ }
+ return false;
+ }
+ }
+
+ Object getWriteLock() {
+ return writeLock;
}
/*
@@ -445,11 +464,12 @@ public class FrameworkDebugOptions implements DebugOptions, ServiceTrackerCustom
* (non-Javadoc)
* @see org.eclipse.osgi.service.debug.DebugOptions#setVerbose(boolean)
*/
- public synchronized void setVerbose(final boolean verbose) {
-
- this.verboseDebug = verbose;
- // the verbose flag changed so start a new session
- EclipseDebugTrace.newSession = true;
+ public void setVerbose(final boolean verbose) {
+ synchronized (lock) {
+ this.verboseDebug = verbose;
+ // the verbose flag changed so start a new session
+ this.newSession = true;
+ }
}
/**
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/framework/SystemBundleActivator.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/framework/SystemBundleActivator.java
index fb305fe4c..0ae75bdf1 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/framework/SystemBundleActivator.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/framework/SystemBundleActivator.java
@@ -24,6 +24,7 @@ import org.eclipse.osgi.internal.permadmin.SecurityAdmin;
import org.eclipse.osgi.internal.url.EquinoxFactoryManager;
import org.eclipse.osgi.service.datalocation.Location;
import org.eclipse.osgi.service.debug.DebugOptions;
+import org.eclipse.osgi.service.debug.DebugOptionsListener;
import org.eclipse.osgi.service.environment.EnvironmentInfo;
import org.eclipse.osgi.service.localization.BundleLocalization;
import org.eclipse.osgi.service.urlconversion.URLConverter;
@@ -97,6 +98,13 @@ public class SystemBundleActivator implements BundleActivator {
register(bc, DocumentBuilderFactory.class, new ParsingService(false, setTccl), false, null);
bundle.getEquinoxContainer().getStorage().getExtensionInstaller().startExtensionActivators(bc);
+
+ // Add an options listener; we already read the options on initialization.
+ // Here we are just allowing the options to change
+ props.clear();
+ props.put(DebugOptions.LISTENER_SYMBOLICNAME, EquinoxContainer.NAME);
+ register(bc, DebugOptionsListener.class, bundle.getEquinoxContainer().getConfiguration().getDebug(), props);
+ register(bc, DebugOptionsListener.class, bundle.getModule().getContainer(), props);
}
private void installSecurityManager(EquinoxConfiguration configuration) throws BundleException {
diff --git a/bundles/org.eclipse.osgi/plugin.xml b/bundles/org.eclipse.osgi/plugin.xml
new file mode 100644
index 000000000..4ec5d0738
--- /dev/null
+++ b/bundles/org.eclipse.osgi/plugin.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.trace.traceComponents">
+ <component
+ id="org.eclipse.osgi.trace"
+ label="%trace.component.label">
+ <bundle
+ consumed="false"
+ name="org.eclipse.osgi">
+ </bundle>
+ </component>
+ </extension>
+
+</plugin>
diff --git a/bundles/org.eclipse.osgi/systembundle.properties b/bundles/org.eclipse.osgi/systembundle.properties
index deb9659bc..714c1227c 100644
--- a/bundles/org.eclipse.osgi/systembundle.properties
+++ b/bundles/org.eclipse.osgi/systembundle.properties
@@ -10,4 +10,6 @@
###############################################################################
systemBundle = OSGi System Bundle
eclipse.org = Eclipse.org - Equinox
-copyright = Copyright (c) 2003, 2004 IBM Corporation and others. 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
+copyright = Copyright (c) 2003, 2014 IBM Corporation and others. 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
+
+trace.component.label = Equinox OSGi Framework \ No newline at end of file

Back to the top