Introduce a new property called felix.extensions.disable which (if set to true) disables framework extensions. This might be necessary for now in some envs like e.g. javaws (FELIX-4281).
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1601009 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java b/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
index 002cea3..7b197fe 100644
--- a/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
+++ b/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
@@ -91,30 +91,38 @@
static
{
// pre-init the url sub-system as otherwise we don't work on gnu/classpath
- ExtensionManager extensionManager = new ExtensionManager();
- try
+ ExtensionManager extensionManager = null;
+
+ if (!"true".equalsIgnoreCase(Felix.m_secureAction.getSystemProperty(
+ FelixConstants.FELIX_EXTENSIONS_DISABLE, "false")))
{
- (new URL("http://felix.extensions:9/")).openConnection();
- }
- catch (Throwable t)
- {
- // This doesn't matter much - we only need the above to init the url subsystem
+ try
+ {
+ (new URL("http://felix.extensions:9/")).openConnection();
+ }
+ catch (Throwable t)
+ {
+ // This doesn't matter much - we only need the above to init the url subsystem
+ }
+
+ // We use the secure action of Felix to add a new instance to the parent
+ // classloader.
+ try
+ {
+ extensionManager = new ExtensionManager();
+
+ Felix.m_secureAction.addURLToURLClassLoader(Felix.m_secureAction.createURL(
+ Felix.m_secureAction.createURL(null, "http:", extensionManager),
+ "http://felix.extensions:9/", extensionManager),
+ Felix.class.getClassLoader());
+ }
+ catch (Throwable ex)
+ {
+ // extension bundles will not be supported.
+ extensionManager = null;
+ }
}
- // We use the secure action of Felix to add a new instance to the parent
- // classloader.
- try
- {
- Felix.m_secureAction.addURLToURLClassLoader(Felix.m_secureAction.createURL(
- Felix.m_secureAction.createURL(null, "http:", extensionManager),
- "http://felix.extensions:9/", extensionManager),
- Felix.class.getClassLoader());
- }
- catch (Throwable ex)
- {
- // extension bundles will not be supported.
- extensionManager = null;
- }
m_extensionManager = extensionManager;
}
diff --git a/framework/src/main/java/org/apache/felix/framework/util/FelixConstants.java b/framework/src/main/java/org/apache/felix/framework/util/FelixConstants.java
index a61443a..a48de4b 100644
--- a/framework/src/main/java/org/apache/felix/framework/util/FelixConstants.java
+++ b/framework/src/main/java/org/apache/felix/framework/util/FelixConstants.java
@@ -65,4 +65,5 @@
String FAKE_URL_PROTOCOL_VALUE = "location:";
String FELIX_EXTENSION_ACTIVATOR = "Felix-Activator";
String SECURITY_DEFAULT_POLICY = "felix.security.defaultpolicy";
+ String FELIX_EXTENSIONS_DISABLE = "felix.extensions.disable";
}