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/12/11 21:46:41 UTC

svn commit: r889812 - in /felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver: CapabilityImpl.java Main.java manifestparser/Main.java prototype/ProtoResolver.java

Author: rickhall
Date: Fri Dec 11 20:46:40 2009
New Revision: 889812

URL: http://svn.apache.org/viewvc?rev=889812&view=rev
Log:
Fixed some caching issues.

Modified:
    felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/CapabilityImpl.java
    felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/Main.java
    felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/manifestparser/Main.java
    felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/prototype/ProtoResolver.java

Modified: felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/CapabilityImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/CapabilityImpl.java?rev=889812&r1=889811&r2=889812&view=diff
==============================================================================
--- felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/CapabilityImpl.java (original)
+++ felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/CapabilityImpl.java Fri Dec 11 20:46:40 2009
@@ -134,6 +134,6 @@
 
     public String toString()
     {
-        return m_namespace + "; " + m_attrs.values();
+        return "[" + m_module + "] " + m_namespace + "; " + m_attrs.values();
     }
 }
\ No newline at end of file

Modified: felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/Main.java
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/Main.java?rev=889812&r1=889811&r2=889812&view=diff
==============================================================================
--- felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/Main.java (original)
+++ felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/Main.java Fri Dec 11 20:46:40 2009
@@ -558,4 +558,39 @@
 
         return target;
     }
+
+    // SOLUTION:
+    // B: foo->C
+    private static Module scenario11(List<Module> moduleList)
+    {
+        Module m, target;
+
+        // Bundle A
+        moduleList.add(
+            target = (m = new Module("A"))
+                .requiring(new RequirementImpl(Capability.PACKAGE_NAMESPACE).with("package=fooB"))
+                .requiring(new RequirementImpl(Capability.PACKAGE_NAMESPACE).with("package=fooC"))
+                .requiring(new RequirementImpl(Capability.PACKAGE_NAMESPACE).with("package=fooD")));
+        // Bundle B
+        moduleList.add(
+            (m = new Module("B"))
+                .providing(new CapabilityImpl(m, Capability.PACKAGE_NAMESPACE).with("package=fooB"))
+                .requiring(new RequirementImpl(Capability.PACKAGE_NAMESPACE).with("package=fooE")));
+        // Bundle C
+        moduleList.add(
+            (m = new Module("C"))
+                .providing(new CapabilityImpl(m, Capability.PACKAGE_NAMESPACE).with("package=fooC"))
+                .requiring(new RequirementImpl(Capability.PACKAGE_NAMESPACE).with("package=fooE")));
+        // Bundle D
+        moduleList.add(
+            (m = new Module("D"))
+                .providing(new CapabilityImpl(m, Capability.PACKAGE_NAMESPACE).with("package=fooD"))
+                .requiring(new RequirementImpl(Capability.PACKAGE_NAMESPACE).with("package=fooE")));
+        // Bundle E
+        moduleList.add(
+            (m = new Module("E"))
+                .providing(new CapabilityImpl(m, Capability.PACKAGE_NAMESPACE).with("package=fooE")));
+
+        return target;
+    }
 }
\ No newline at end of file

Modified: felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/manifestparser/Main.java
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/manifestparser/Main.java?rev=889812&r1=889811&r2=889812&view=diff
==============================================================================
--- felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/manifestparser/Main.java (original)
+++ felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/manifestparser/Main.java Fri Dec 11 20:46:40 2009
@@ -317,7 +317,7 @@
                     if (module != null)
                     {
                         moduleList.add(module);
-                        dumpModule(module);
+//                        dumpModule(module);
                     }
                 }
             }
@@ -401,8 +401,8 @@
     private static Module getTarget(List<Module> modules)
     {
 //        return getTargetByUnresolved(modules);
-//        return getTargetBySymbolicName(modules, "org.springframework.faces");
-        return getTargetBySymbolicName(modules, "bundle1");
+        return getTargetBySymbolicName(modules, "org.springframework.faces");
+//        return getTargetBySymbolicName(modules, "bundle1");
     }
 
     private static Module getTargetByUnresolved(List<Module> modules)

Modified: felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/prototype/ProtoResolver.java
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/prototype/ProtoResolver.java?rev=889812&r1=889811&r2=889812&view=diff
==============================================================================
--- felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/prototype/ProtoResolver.java (original)
+++ felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/prototype/ProtoResolver.java Fri Dec 11 20:46:40 2009
@@ -136,10 +136,8 @@
             // If the module is already resolved, then do nothing.
             if (!module.isResolved())
             {
-                // Add the module to the cycle map; use Boolean.FALSE to
-                // mark it as in the process of being resolved.
+                // Create a map for detecting cycles.
                 Map<Module, Boolean> cycleMap = new HashMap<Module, Boolean>();
-                cycleMap.put(module, Boolean.FALSE);
 
                 m_rootModule = module;
                 m_candidatePermutations.clear();
@@ -177,6 +175,12 @@
                 {
                     rethrow = null;
 
+                    // Add the root module to the cycle map; use Boolean.FALSE to
+                    // mark it as in the process of being resolved.
+                    cycleMap.clear();
+                    cycleMap.put(module, Boolean.FALSE);
+
+                    // Initialize caches.
                     m_resolvingConstraintCache.clear();
                     m_verifyCache.clear();
 
@@ -245,7 +249,7 @@
                             catch (ResolveException ex)
                             {
 // TODO: PROTO RESOLVER: This should be logged.
-                                System.out.println("DEBUG: " + ex);
+                                System.out.println("DEBUG1: " + ex);
 System.out.println("RE " + ex);
 ex.printStackTrace();
 //System.out.println("Current candidate map   : " + candidateMap);
@@ -331,7 +335,6 @@
                     // candidate map.
                     if (found.booleanValue())
                     {
-
                         Map<String, Blame> currentConstraints =
                             calculateResolvingConstraints(module, blameModule);
                         checkConsistency(module, capGoal, candidateMap,
@@ -437,7 +440,7 @@
                         catch (ResolveException ex)
                         {
 // TODO: PROTO RESOLVER: This should be logged.
-                                System.out.println("DEBUG: " + ex);
+                                System.out.println("DEBUG2: " + ex);
 System.out.println("RE " + ex);
 ex.printStackTrace();
 //System.out.println("Current candidate map   : " + candidateMap);
@@ -906,8 +909,8 @@
         if ((existing != null)
             && !existing.m_capability.equals(current.m_capability))
         {
-//System.out.println("Conflict: " + existing.m_exportedPackage + " WITH " + current.m_exportedPackage);
-//System.out.println("Blame: " + existing.m_blameModules + " AND " + current.m_blameModules);
+//System.out.println("Conflict: " + existing.m_capability + " WITH " + current.m_capability);
+//System.out.println("Blame   : " + existing.m_blameModules + " AND " + current.m_blameModules);
             Map<Requirement, Set<Capability>> candidateMapCopy = copyCandidateMap(candidateMap);
             boolean modified = false;
             boolean invalid = false;
@@ -931,7 +934,7 @@
                         // TODO: PROTO RESOLVER - This comment out part is too broad, since it removes
                         // the conflicting module from all candidate lists.
                         // Works for scenario 1, but fails for scenario 9.
-//System.out.println("CHECKING " + candidateMapCopy.get(blameImports.get(impIdx)) + " FOR " + existing.m_exportedPackage);
+//System.out.println("CHECKING " + candidateMapCopy.get(blameImports.get(impIdx)) + " FOR " + existing.m_capability);
 //System.out.println("+++ candidateMapCopy " + candidateMapCopy);
 //System.out.println("+++ blameImports.get(impIdx) " + blameImports.get(impIdx));
 //System.out.println("+++ candidateMapCopy.get(blameImports.get(impIdx)) " + candidateMapCopy.get(blameImports.get(impIdx)));