You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2013/01/30 17:43:10 UTC

svn commit: r1440511 - /geronimo/server/branches/3.0/plugins/aries/geronimo-aries-resolver/src/main/java/org/apache/geronimo/aries/resolver/obr/OBRAriesResolver.java

Author: gawor
Date: Wed Jan 30 16:43:10 2013
New Revision: 1440511

URL: http://svn.apache.org/viewvc?rev=1440511&view=rev
Log:
GERONIMO-6319: A fix for 'The resources have not been resolved' error when resolving fragment bundles

Modified:
    geronimo/server/branches/3.0/plugins/aries/geronimo-aries-resolver/src/main/java/org/apache/geronimo/aries/resolver/obr/OBRAriesResolver.java

Modified: geronimo/server/branches/3.0/plugins/aries/geronimo-aries-resolver/src/main/java/org/apache/geronimo/aries/resolver/obr/OBRAriesResolver.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/3.0/plugins/aries/geronimo-aries-resolver/src/main/java/org/apache/geronimo/aries/resolver/obr/OBRAriesResolver.java?rev=1440511&r1=1440510&r2=1440511&view=diff
==============================================================================
--- geronimo/server/branches/3.0/plugins/aries/geronimo-aries-resolver/src/main/java/org/apache/geronimo/aries/resolver/obr/OBRAriesResolver.java (original)
+++ geronimo/server/branches/3.0/plugins/aries/geronimo-aries-resolver/src/main/java/org/apache/geronimo/aries/resolver/obr/OBRAriesResolver.java Wed Jan 30 16:43:10 2013
@@ -149,27 +149,32 @@ public class OBRAriesResolver implements
         obrResolver.add(createApplicationResource(helper, appName, appVersion, appContent));
         
         boolean resolved = obrResolver.resolve();
-        Set<BundleInfo> fragments = new HashSet<BundleInfo>();
+        Set<Resource> requiredFragments = new HashSet<Resource>();
+        Set<Resource> optionalFragments = new HashSet<Resource>();
         
         if (resolved && resolveFragments) {
             for (Resource resource : obrResolver.getRequiredResources()) {
                 Resource fragmentResource = findFragmentResource(resource);
                 if (fragmentResource != null) {
-                    obrResolver.add(fragmentResource);
-                    fragments.add(toBundleInfo(fragmentResource, false));
+                    requiredFragments.add(fragmentResource);
                 }
             }
             if (returnOptionalResources) {
                 for (Resource resource : obrResolver.getOptionalResources()) {
                     Resource fragmentResource = findFragmentResource(resource);
                     if (fragmentResource != null) {
-                        obrResolver.add(fragmentResource);
-                        fragments.add(toBundleInfo(fragmentResource, true));
+                        optionalFragments.add(fragmentResource);
                     }
                 }
             }
             
-            if (!fragments.isEmpty()) {
+            if (!requiredFragments.isEmpty() || !optionalFragments.isEmpty()) {
+                for (Resource fragment : requiredFragments) {
+                    obrResolver.add(fragment);
+                }
+                for (Resource fragment : optionalFragments) {
+                    obrResolver.add(fragment);
+                }
                 resolved = obrResolver.resolve();
             }
         }
@@ -186,7 +191,14 @@ public class OBRAriesResolver implements
                     result.add(bundleInfo);
                 }
             }
-            result.addAll(fragments);
+            for (Resource fragment : requiredFragments) {
+                BundleInfo bundleInfo = toBundleInfo(fragment, false);
+                result.add(bundleInfo);
+            }
+            for (Resource fragment : optionalFragments) {
+                BundleInfo bundleInfo = toBundleInfo(fragment, true);
+                result.add(bundleInfo);
+            }            
             return result;
         } else {
             Reason[] reasons = obrResolver.getUnsatisfiedRequirements();