[572246] CDO interferes with Oomph setup
https://bugs.eclipse.org/bugs/show_bug.cgi?id=572246
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/bundle/OM.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/bundle/OM.java
index 6330a7b..10f2e3e 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/bundle/OM.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/bundle/OM.java
@@ -60,6 +60,8 @@
*/
public static final class Activator extends OSGiActivator
{
+ private static final boolean disableURIHandlerRegistry = OMPlatform.INSTANCE.isProperty("org.eclipse.emf.cdo.common.disableURIHandlerRegistry");
+
public Activator()
{
super(BUNDLE);
@@ -70,18 +72,20 @@
{
super.doStart();
- try
+ if (!disableURIHandlerRegistry)
{
- List<URIHandler> defaultHandlers = new ArrayList<>();
- defaultHandlers.add(URIHandlerRegistryImpl.INSTANCE);
- defaultHandlers.addAll(URIHandler.DEFAULT_HANDLERS);
+ try
+ {
+ List<URIHandler> defaultHandlers = new ArrayList<>(URIHandler.DEFAULT_HANDLERS);
+ defaultHandlers.add(4, URIHandlerRegistryImpl.INSTANCE); // Add our registry before EMF's catch-all handler.
- Field field = ReflectUtil.getField(URIHandler.class, "DEFAULT_HANDLERS");
- ReflectUtil.setValue(field, null, Collections.unmodifiableList(defaultHandlers), true);
- }
- catch (Throwable t)
- {
- LOG.error(t);
+ Field field = ReflectUtil.getField(URIHandler.class, "DEFAULT_HANDLERS");
+ ReflectUtil.setValue(field, null, Collections.unmodifiableList(defaultHandlers), true);
+ }
+ catch (Throwable t)
+ {
+ LOG.error(t);
+ }
}
}
}