You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pa...@apache.org on 2008/10/21 23:56:32 UTC

svn commit: r706792 - in /felix/trunk/framework/src/main/java/org/apache/felix/framework: ExtensionManager.java util/manifestparser/ManifestParser.java

Author: pauls
Date: Tue Oct 21 14:56:31 2008
New Revision: 706792

URL: http://svn.apache.org/viewvc?rev=706792&view=rev
Log:
Don't try to install extension bundles as fragments because they are different. Furthermore, fail to install extension bundles if they have incomplete metadata (FELIX-770).

Modified:
    felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
    felix/trunk/framework/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java?rev=706792&r1=706791&r2=706792&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java Tue Oct 21 14:56:31 2008
@@ -245,12 +245,8 @@
      */
     boolean isExtensionBundle(Map headers)
     {
-        R4Directive dir = ManifestParser.parseExtensionBundleHeader((String)
-            headers.get(Constants.FRAGMENT_HOST));
-
-        return (dir != null) && (Constants.EXTENSION_FRAMEWORK.equals(
-            dir.getValue()) || Constants.EXTENSION_BOOTCLASSPATH.equals(
-            dir.getValue()));
+        return (ManifestParser.parseExtensionBundleHeader((String)
+                headers.get(Constants.FRAGMENT_HOST)) != null);
     }
 
     /**

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java?rev=706792&r1=706791&r2=706792&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java Tue Oct 21 14:56:31 2008
@@ -252,7 +252,7 @@
         //       fragment constants in FelixConstants when fragments are
         //       fully implemented.
         String fragmentHost = (String) headerMap.get(Constants.FRAGMENT_HOST);
-        if (fragmentHost != null)
+        if ((fragmentHost != null) && (parseExtensionBundleHeader(fragmentHost) == null))
         {
             if ((headerMap.get(Constants.IMPORT_PACKAGE) != null)
                 || (headerMap.get(Constants.EXPORT_PACKAGE) != null)
@@ -763,9 +763,17 @@
             }
         }
 
-        if (parseExtensionBundleHeader((String)
-            m_headerMap.get(Constants.FRAGMENT_HOST)) != null)
+        R4Directive extension = parseExtensionBundleHeader((String)
+            m_headerMap.get(Constants.FRAGMENT_HOST));
+        
+        if (extension != null)
         {
+            if (!(Constants.EXTENSION_FRAMEWORK.equals(extension.getValue()) || 
+                Constants.EXTENSION_BOOTCLASSPATH.equals(extension.getValue())))
+            {
+                throw new BundleException(
+                    "Extension bundle must have either 'extension:=framework' or 'extension:=bootclasspath'");
+            }
             checkExtensionBundle();
         }
     }