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";
 }