Author: rickhall
Date: Fri Jul 16 17:11:47 2010
New Revision: 964862

URL: http://svn.apache.org/viewvc?rev=964862&view=rev
Log:
True to simplify exception message by avoid recursion if a bundle
imports from itself. (FELIX-2459)

Modified:
    felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java
    
felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java

Modified: 
felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java?rev=964862&r1=964861&r2=964862&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java 
(original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java 
Fri Jul 16 17:11:47 2010
@@ -3419,9 +3419,8 @@ ex.printStackTrace();
             {
                 Bundle b = ((ModuleImpl) ex.getModule()).getBundle();
                 throw new BundleException(
-                    "Unresolved constraint in bundle " + b + ": "
-                    + ((ex.getRequirement() == null)
-                        ? ex.getMessage() : ex.getMessage() + " - " + 
ex.getRequirement().toString()));
+                    "Unresolved constraint in bundle "
+                    + b + ": " + ex.getMessage());
             }
             else
             {

Modified: 
felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java?rev=964862&r1=964861&r2=964862&view=diff
==============================================================================
--- 
felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
 (original)
+++ 
felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
 Fri Jul 16 17:11:47 2010
@@ -415,7 +415,18 @@ public class ResolverImpl implements Res
             for (Iterator<Capability> itCandCap = candidates.iterator(); 
itCandCap.hasNext(); )
             {
                 Capability candCap = itCandCap.next();
-                if (!candCap.getModule().isResolved())
+
+                // If the candidate module is not resolved and not the current
+                // module we are trying to populate, then try to populate the
+                // candidate module as well.
+                // NOTE: Technically, we don't have to check to see if the
+                // candidate module is equal to the current module, but this
+                // saves us from recursing and also simplifies exceptions 
messages
+                // since we effectively chain exception messages for each level
+                // of recursion; thus, any avoided recursion results in fewer
+                // exceptions to chain when an error does occur.
+                if (!candCap.getModule().isResolved()
+                    && !candCap.getModule().equals(module))
                 {
                     try
                     {


Reply via email to