You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2009/01/27 20:34:12 UTC

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

Author: rickhall
Date: Tue Jan 27 19:34:12 2009
New Revision: 738197

URL: http://svn.apache.org/viewvc?rev=738197&view=rev
Log:
Improved handling Bundle-Version. (FELIX-851)

Modified:
    felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.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/BundleImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java?rev=738197&r1=738196&r2=738197&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java Tue Jan 27 19:34:12 2009
@@ -965,9 +965,9 @@
                 if (id != getBundleId())
                 {
                     String sym = bundles[i].getSymbolicName();
-                    Version ver = Version.parseVersion((String) ((BundleImpl) bundles[i])
-                        .getCurrentModule().getHeaders().get(Constants.BUNDLE_VERSION));
-                    if (symName.equals(sym) && bundleVersion.equals(ver))
+                    Version ver = ((ModuleImpl)
+                        ((BundleImpl) bundles[i]).getCurrentModule()).getVersion();
+                    if ((symName != null) && (sym != null) && symName.equals(sym) && bundleVersion.equals(ver))
                     {
                         throw new BundleException("Bundle symbolic name and version are not unique: " + sym + ':' + ver);
                     }

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=738197&r1=738196&r2=738197&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 Jan 27 19:34:12 2009
@@ -63,14 +63,34 @@
         Map dupeMap = new HashMap();
 
         //
+        // Parse bundle version.
+        //
+
+        m_bundleVersion = Version.emptyVersion;
+        if (headerMap.get(Constants.BUNDLE_VERSION) != null)
+        {
+            try
+            {
+                m_bundleVersion = Version.parseVersion((String) headerMap.get(Constants.BUNDLE_VERSION));
+            }
+            catch (RuntimeException ex)
+            {
+                // R4 bundle versions must parse, R3 bundle version may not.
+                if (manifestVersion.equals("2"))
+                {
+                    throw ex;
+                }
+                m_bundleVersion = Version.emptyVersion;
+            }
+        }
+
+        //
         // Parse bundle symbolic name.
         //
 
         ICapability moduleCap = parseBundleSymbolicName(m_headerMap);
         if (moduleCap != null)
         {
-            m_bundleVersion = (Version)
-                moduleCap.getProperties().get(Constants.BUNDLE_VERSION_ATTRIBUTE);
             m_bundleSymbolicName = (String)
                 moduleCap.getProperties().get(Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE);
 
@@ -811,7 +831,7 @@
             }
 
             // Get bundle version.
-            Version bundleVersion = null;
+            Version bundleVersion = Version.emptyVersion;
             if (headerMap.get(Constants.BUNDLE_VERSION) != null)
             {
                 try