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)));