[572117] Enable configurable debug trace at a global level in CDO client standalone mode
https://bugs.eclipse.org/bugs/show_bug.cgi?id=572117
diff --git a/features/org.eclipse.net4j-feature/feature.xml b/features/org.eclipse.net4j-feature/feature.xml
index 598ec2c..f6bb608 100644
--- a/features/org.eclipse.net4j-feature/feature.xml
+++ b/features/org.eclipse.net4j-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.net4j"
label="%featureName"
- version="4.13.0.qualifier"
+ version="4.13.1.qualifier"
provider-name="%providerName"
image="eclipse_update_120.jpg"
license-feature="org.eclipse.emf.cdo.license"
diff --git a/features/org.eclipse.net4j-feature/pom.xml b/features/org.eclipse.net4j-feature/pom.xml
index 7ccf378..007a407 100644
--- a/features/org.eclipse.net4j-feature/pom.xml
+++ b/features/org.eclipse.net4j-feature/pom.xml
@@ -25,7 +25,7 @@
<groupId>org.eclipse.emf.cdo.features</groupId>
<artifactId>org.eclipse.net4j</artifactId>
- <version>4.13.0-SNAPSHOT</version>
+ <version>4.13.1-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.net4j.db-feature/feature.xml b/features/org.eclipse.net4j.db-feature/feature.xml
index 250239b..81db26a 100644
--- a/features/org.eclipse.net4j.db-feature/feature.xml
+++ b/features/org.eclipse.net4j.db-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.net4j.db"
label="%featureName"
- version="4.13.0.qualifier"
+ version="4.13.1.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.cdo.license"
license-feature-version="0.0.0">
diff --git a/features/org.eclipse.net4j.db-feature/pom.xml b/features/org.eclipse.net4j.db-feature/pom.xml
index 3f7284c..e9aae6c 100644
--- a/features/org.eclipse.net4j.db-feature/pom.xml
+++ b/features/org.eclipse.net4j.db-feature/pom.xml
@@ -25,7 +25,7 @@
<groupId>org.eclipse.emf.cdo.features</groupId>
<artifactId>org.eclipse.net4j.db</artifactId>
- <version>4.13.0-SNAPSHOT</version>
+ <version>4.13.1-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.net4j.util-feature/feature.xml b/features/org.eclipse.net4j.util-feature/feature.xml
index 7a49641..8c3c178 100644
--- a/features/org.eclipse.net4j.util-feature/feature.xml
+++ b/features/org.eclipse.net4j.util-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.net4j.util"
label="%featureName"
- version="4.13.0.qualifier"
+ version="4.13.1.qualifier"
provider-name="%providerName"
image="eclipse_update_120.jpg"
license-feature="org.eclipse.emf.cdo.license"
diff --git a/features/org.eclipse.net4j.util-feature/pom.xml b/features/org.eclipse.net4j.util-feature/pom.xml
index a89c0cc..31368f3 100644
--- a/features/org.eclipse.net4j.util-feature/pom.xml
+++ b/features/org.eclipse.net4j.util-feature/pom.xml
@@ -25,7 +25,7 @@
<groupId>org.eclipse.emf.cdo.features</groupId>
<artifactId>org.eclipse.net4j.util</artifactId>
- <version>4.13.0-SNAPSHOT</version>
+ <version>4.13.1-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/features/org.eclipse.net4j.util.ui-feature/feature.xml b/features/org.eclipse.net4j.util.ui-feature/feature.xml
index cdcb3ad..7949c7a 100644
--- a/features/org.eclipse.net4j.util.ui-feature/feature.xml
+++ b/features/org.eclipse.net4j.util.ui-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.net4j.util.ui"
label="%featureName"
- version="4.13.0.qualifier"
+ version="4.13.1.qualifier"
provider-name="%providerName"
image="eclipse_update_120.jpg"
license-feature="org.eclipse.emf.cdo.license"
diff --git a/features/org.eclipse.net4j.util.ui-feature/pom.xml b/features/org.eclipse.net4j.util.ui-feature/pom.xml
index ba275e0..7a1b006 100644
--- a/features/org.eclipse.net4j.util.ui-feature/pom.xml
+++ b/features/org.eclipse.net4j.util.ui-feature/pom.xml
@@ -25,7 +25,7 @@
<groupId>org.eclipse.emf.cdo.features</groupId>
<artifactId>org.eclipse.net4j.util.ui</artifactId>
- <version>4.13.0-SNAPSHOT</version>
+ <version>4.13.1-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project>
diff --git a/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF b/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF
index bb409a4..f91d66d 100644
--- a/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.net4j.util;singleton:=true
-Bundle-Version: 3.14.0.qualifier
+Bundle-Version: 3.14.1.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -15,36 +15,36 @@
org.osgi.framework;version="[1.3.0,2.0.0)";resolution:=optional,
org.osgi.service.log;version="[1.3.0,2.0.0)";resolution:=optional,
org.osgi.util.tracker;version="[1.3.0,2.0.0)";resolution:=optional
-Export-Package: org.eclipse.net4j.internal.util.bundle;version="3.14.0";x-friends:="org.eclipse.net4j.util.ui,org.eclipse.net4j.tests",
- org.eclipse.net4j.internal.util.container;version="3.14.0";x-internal:=true,
- org.eclipse.net4j.internal.util.factory;version="3.14.0";x-internal:=true,
- org.eclipse.net4j.internal.util.om;version="3.14.0";x-internal:=true,
- org.eclipse.net4j.internal.util.om.pref;version="3.14.0";x-internal:=true,
- org.eclipse.net4j.internal.util.table;version="3.14.0";x-internal:=true,
- org.eclipse.net4j.internal.util.test;version="3.14.0";x-friends:="org.eclipse.net4j.tests",
- org.eclipse.net4j.util;version="3.14.0",
- org.eclipse.net4j.util.cache;version="3.14.0",
- org.eclipse.net4j.util.collection;version="3.14.0",
- org.eclipse.net4j.util.concurrent;version="3.14.0",
- org.eclipse.net4j.util.confirmation;version="3.14.0",
- org.eclipse.net4j.util.container;version="3.14.0",
- org.eclipse.net4j.util.container.delegate;version="3.14.0",
- org.eclipse.net4j.util.event;version="3.14.0",
- org.eclipse.net4j.util.factory;version="3.14.0",
- org.eclipse.net4j.util.fsm;version="3.14.0",
- org.eclipse.net4j.util.io;version="3.14.0",
- org.eclipse.net4j.util.lifecycle;version="3.14.0",
- org.eclipse.net4j.util.om;version="3.14.0",
- org.eclipse.net4j.util.om.job;version="3.14.0",
- org.eclipse.net4j.util.om.log;version="3.14.0",
- org.eclipse.net4j.util.om.monitor;version="3.14.0",
- org.eclipse.net4j.util.om.pref;version="3.14.0",
- org.eclipse.net4j.util.om.trace;version="3.14.0",
- org.eclipse.net4j.util.options;version="3.14.0",
- org.eclipse.net4j.util.properties;version="3.14.0",
- org.eclipse.net4j.util.ref;version="3.14.0",
- org.eclipse.net4j.util.registry;version="3.14.0",
- org.eclipse.net4j.util.security;version="3.14.0",
- org.eclipse.net4j.util.transaction;version="3.14.0"
+Export-Package: org.eclipse.net4j.internal.util.bundle;version="3.14.1";x-friends:="org.eclipse.net4j.util.ui,org.eclipse.net4j.tests",
+ org.eclipse.net4j.internal.util.container;version="3.14.1";x-internal:=true,
+ org.eclipse.net4j.internal.util.factory;version="3.14.1";x-internal:=true,
+ org.eclipse.net4j.internal.util.om;version="3.14.1";x-internal:=true,
+ org.eclipse.net4j.internal.util.om.pref;version="3.14.1";x-internal:=true,
+ org.eclipse.net4j.internal.util.table;version="3.14.1";x-internal:=true,
+ org.eclipse.net4j.internal.util.test;version="3.14.1";x-friends:="org.eclipse.net4j.tests",
+ org.eclipse.net4j.util;version="3.14.1",
+ org.eclipse.net4j.util.cache;version="3.14.1",
+ org.eclipse.net4j.util.collection;version="3.14.1",
+ org.eclipse.net4j.util.concurrent;version="3.14.1",
+ org.eclipse.net4j.util.confirmation;version="3.14.1",
+ org.eclipse.net4j.util.container;version="3.14.1",
+ org.eclipse.net4j.util.container.delegate;version="3.14.1",
+ org.eclipse.net4j.util.event;version="3.14.1",
+ org.eclipse.net4j.util.factory;version="3.14.1",
+ org.eclipse.net4j.util.fsm;version="3.14.1",
+ org.eclipse.net4j.util.io;version="3.14.1",
+ org.eclipse.net4j.util.lifecycle;version="3.14.1",
+ org.eclipse.net4j.util.om;version="3.14.1",
+ org.eclipse.net4j.util.om.job;version="3.14.1",
+ org.eclipse.net4j.util.om.log;version="3.14.1",
+ org.eclipse.net4j.util.om.monitor;version="3.14.1",
+ org.eclipse.net4j.util.om.pref;version="3.14.1",
+ org.eclipse.net4j.util.om.trace;version="3.14.1",
+ org.eclipse.net4j.util.options;version="3.14.1",
+ org.eclipse.net4j.util.properties;version="3.14.1",
+ org.eclipse.net4j.util.ref;version="3.14.1",
+ org.eclipse.net4j.util.registry;version="3.14.1",
+ org.eclipse.net4j.util.security;version="3.14.1",
+ org.eclipse.net4j.util.transaction;version="3.14.1"
Eclipse-BuddyPolicy: registered
Automatic-Module-Name: org.eclipse.net4j.util
diff --git a/plugins/org.eclipse.net4j.util/pom.xml b/plugins/org.eclipse.net4j.util/pom.xml
index 8381d92..9e99e68 100644
--- a/plugins/org.eclipse.net4j.util/pom.xml
+++ b/plugins/org.eclipse.net4j.util/pom.xml
@@ -25,7 +25,7 @@
<groupId>org.eclipse.emf.cdo</groupId>
<artifactId>org.eclipse.net4j.util</artifactId>
- <version>3.14.0-SNAPSHOT</version>
+ <version>3.14.1-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/bundle/AbstractBundle.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/bundle/AbstractBundle.java
index 635e25d..f547164 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/bundle/AbstractBundle.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/bundle/AbstractBundle.java
@@ -198,6 +198,11 @@
platform.setDebugOption(bundleID, option, value);
}
+ public void setDebugOptionIfAbsent(String option, String value)
+ {
+ platform.setDebugOption(bundleID, option, value, true);
+ }
+
@Override
public synchronized OMTracer tracer(String name)
{
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/bundle/AbstractPlatform.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/bundle/AbstractPlatform.java
index 6857c02..3af737c 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/bundle/AbstractPlatform.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/bundle/AbstractPlatform.java
@@ -433,7 +433,12 @@
protected abstract String getDebugOption(String bundleID, String option);
- protected abstract void setDebugOption(String bundleID, String option, String value);
+ protected abstract void setDebugOption(String bundleID, String option, String value, boolean ifAbsent);
+
+ protected void setDebugOption(String bundleID, String option, String value)
+ {
+ setDebugOption(bundleID, option, value, false);
+ }
public abstract void scheduleJob(InternalOMJob job);
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/LegacyBundle.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/LegacyBundle.java
index afb96c3..f1fc5a3 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/LegacyBundle.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/LegacyBundle.java
@@ -19,6 +19,7 @@
import org.eclipse.net4j.util.om.OMPlatform;
import org.eclipse.net4j.util.om.trace.Tracer;
+import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -180,7 +181,7 @@
final String prefix = getBundleID() + "/"; //$NON-NLS-1$
final int length = prefix.length();
- inputStream = getInputStream(".options"); //$NON-NLS-1$
+ inputStream = new BufferedInputStream(getInputStream(LegacyPlatform.OPTIONS));
properties.load(inputStream);
for (Entry<Object, Object> entry : properties.entrySet())
@@ -191,7 +192,7 @@
if (key.startsWith(prefix))
{
String value = (String)entry.getValue();
- setDebugOption(key.substring(length), value);
+ setDebugOptionIfAbsent(key.substring(length), value.trim());
}
}
catch (RuntimeException ignore)
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/LegacyPlatform.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/LegacyPlatform.java
index a382d1d..426427a 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/LegacyPlatform.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/LegacyPlatform.java
@@ -13,15 +13,23 @@
import org.eclipse.net4j.internal.util.bundle.AbstractPlatform;
import org.eclipse.net4j.util.concurrent.ConcurrencyUtil;
import org.eclipse.net4j.util.container.IPluginContainer;
+import org.eclipse.net4j.util.io.IOUtil;
import org.eclipse.net4j.util.om.LegacyUtil;
import org.eclipse.net4j.util.om.OMBundle;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
@@ -30,12 +38,61 @@
*/
public class LegacyPlatform extends AbstractPlatform
{
+ public static final String OPTIONS = ".options";
+
private final Map<String, String> debugOptions = new ConcurrentHashMap<>(0);
private final Map<InternalOMJob, IProgressMonitor> jobMonitors = Collections.synchronizedMap(new HashMap<>());
public LegacyPlatform()
{
+ String debugOptionsPath = System.getProperty("debug.options");
+ if (debugOptionsPath == null)
+ {
+ debugOptionsPath = System.getProperty("osgi.debug");
+ }
+
+ if (debugOptionsPath != null)
+ {
+ loadDebugOptions(debugOptionsPath);
+ }
+ }
+
+ private void loadDebugOptions(String debugOptionsPath)
+ {
+ if (debugOptionsPath.length() == 0)
+ {
+ debugOptionsPath = new File(System.getProperty("user.dir"), OPTIONS).toString();
+ }
+
+ InputStream inputStream = null;
+ Properties properties = new Properties();
+
+ try
+ {
+ inputStream = new BufferedInputStream(new FileInputStream(debugOptionsPath));
+ properties.load(inputStream);
+
+ for (Entry<Object, Object> entry : properties.entrySet())
+ {
+ try
+ {
+ String key = (String)entry.getKey();
+ String value = (String)entry.getValue();
+ debugOptions.put(key, value.trim());
+ }
+ catch (RuntimeException ignore)
+ {
+ }
+ }
+ }
+ catch (IOException ignore)
+ {
+ }
+ finally
+ {
+ IOUtil.closeSilent(inputStream);
+ }
}
@Override
@@ -57,9 +114,18 @@
}
@Override
- protected void setDebugOption(String bundleID, String option, String value)
+ protected void setDebugOption(String bundleID, String option, String value, boolean ifAbsent)
{
- debugOptions.put(bundleID + "/" + option, value); //$NON-NLS-1$
+ option = bundleID + "/" + option; //$NON-NLS-1$
+
+ if (ifAbsent)
+ {
+ debugOptions.putIfAbsent(option, value);
+ }
+ else
+ {
+ debugOptions.put(option, value);
+ }
}
@Override
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/OSGiPlatform.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/OSGiPlatform.java
index 35e5478..7f18bfe 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/OSGiPlatform.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/OSGiPlatform.java
@@ -144,12 +144,19 @@
}
@Override
- protected void setDebugOption(String bundleID, String option, String value)
+ protected void setDebugOption(String bundleID, String option, String value, boolean ifAbsent)
{
try
{
DebugOptions debugOptions = getDebugOptions();
- debugOptions.setOption(bundleID + "/" + option, value); //$NON-NLS-1$
+ option = bundleID + "/" + option; //$NON-NLS-1$
+
+ if (ifAbsent && debugOptions.getOption(option) != null)
+ {
+ return;
+ }
+
+ debugOptions.setOption(option, value);
}
catch (RuntimeException ex)
{