[jboss-cvs] JBossAS SVN: r93732 - in projects/jboss-cl/trunk: classloading/src/main/java/org/jboss/classloading/plugins/metadata and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Sep 18 10:34:33 EDT 2009


Author: thomas.diesler at jboss.com
Date: 2009-09-18 10:34:32 -0400 (Fri, 18 Sep 2009)
New Revision: 93732

Modified:
   projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/jmx/test/JMXUnitTestCase.java
   projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/support/TestCapability.java
   projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/plugins/metadata/ModuleCapability.java
   projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/plugins/metadata/PackageCapability.java
   projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/ClassLoadingSpace.java
   projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Domain.java
   projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/metadata/Capability.java
   projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/metadata/xml/support/TestCapability.java
Log:
[JBCL-24] Circular and self dependencies

Modified: projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/jmx/test/JMXUnitTestCase.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/jmx/test/JMXUnitTestCase.java	2009-09-18 14:31:03 UTC (rev 93731)
+++ projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/jmx/test/JMXUnitTestCase.java	2009-09-18 14:34:32 UTC (rev 93732)
@@ -355,7 +355,6 @@
       assertEquals(expectedURLs, urls);
    }
 
-   @SuppressWarnings("unchecked")
    public void testClassLoaderMBean() throws Exception
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();

Modified: projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/plugins/metadata/ModuleCapability.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/plugins/metadata/ModuleCapability.java	2009-09-18 14:31:03 UTC (rev 93731)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/plugins/metadata/ModuleCapability.java	2009-09-18 14:34:32 UTC (rev 93732)
@@ -29,6 +29,7 @@
  * ModuleCapability.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author Thomas.Diesler at jboss.com
  * @version $Revision: 1.1 $
  */
 public class ModuleCapability extends AbstractCapability
@@ -66,7 +67,7 @@
       super(name, version);
    }
 
-   public boolean resolves(Module module, Requirement requirement)
+   public boolean resolves(Module reqModule, Requirement requirement)
    {
       if (requirement instanceof ModuleRequirement == false)
          return false;

Modified: projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/plugins/metadata/PackageCapability.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/plugins/metadata/PackageCapability.java	2009-09-18 14:31:03 UTC (rev 93731)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/plugins/metadata/PackageCapability.java	2009-09-18 14:34:32 UTC (rev 93732)
@@ -33,6 +33,7 @@
  * PackageCapability.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author Thomas.Diesler at jboss.com
  * @version $Revision: 1.1 $
  */
 public class PackageCapability extends AbstractCapability implements ExportPackages
@@ -114,7 +115,7 @@
       this.splitPolicy = policy;
    }
 
-   public boolean resolves(Module module, Requirement requirement)
+   public boolean resolves(Module reqModule, Requirement requirement)
    {
       if (requirement instanceof PackageRequirement == false)
          return false;

Modified: projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/ClassLoadingSpace.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/ClassLoadingSpace.java	2009-09-18 14:31:03 UTC (rev 93731)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/ClassLoadingSpace.java	2009-09-18 14:34:32 UTC (rev 93732)
@@ -298,9 +298,9 @@
       {
          for (String packageName : packageNames)
          {
-            Module removed = modulesByPackage.remove(packageName);
-            if (removed != module)
-               throw new IllegalStateException("BUG: Removed module " + removed + " for package " + packageName + " is not the expected module: " + module);
+            Module other = modulesByPackage.get(packageName);
+            if (other == module)
+               modulesByPackage.remove(packageName);
          }
       }
 

Modified: projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Domain.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Domain.java	2009-09-18 14:31:03 UTC (rev 93731)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Domain.java	2009-09-18 14:34:32 UTC (rev 93732)
@@ -35,6 +35,7 @@
  * 
  * @author <a href="adrian at jboss.org">Adrian Brock</a>
  * @author <a href="ales.justin at jboss.org">Ales Justin</a>
+ * @author Thomas.Diesler at jboss.com
  * @version $Revision: 1.1 $
  */
 public class Domain
@@ -244,7 +245,7 @@
             return result;
       }
       
-      // TODO JBCL-24 check for self-dependency/circularity
+      Module firstMatch = null;
       for (Module other : modules)
       {
          List<Capability> capabilities = other.getCapabilities();
@@ -253,10 +254,22 @@
             for (Capability capability : capabilities)
             {
                if (capability.resolves(module, requirement))
-                  return other;
+               {
+                  if (firstMatch != null)
+                  {
+                     String otherName = other.getName() + ":" + other.getVersion(); 
+                     String firstName = firstMatch.getName() + ":" + firstMatch.getVersion(); 
+                     log.debug("Requirement " + requirement + " resolves agaist " + firstName + " and " + otherName + " - using first.");
+                  }
+                  if (firstMatch == null)
+                     firstMatch = other;
+               }
             }
          }
       }
+      
+      if (firstMatch != null)
+         return firstMatch;
 
       // Check the parent afterwards when required
       if (parentDomain != null && parentFirst == false)

Modified: projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/metadata/Capability.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/metadata/Capability.java	2009-09-18 14:31:03 UTC (rev 93731)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/metadata/Capability.java	2009-09-18 14:34:32 UTC (rev 93732)
@@ -29,17 +29,18 @@
  * Capability.
  * 
  * @author <a href="adrian at jboss.org">Adrian Brock</a>
+ * @author Thomas.Diesler at jboss.com
  * @version $Revision: 1.1 $
  */
 public interface Capability extends Serializable
 {
    /**
     * Whether this capability resolves the requirement
+    * @param reqModule the requirement module
+    * @param requirement the requirement
     * 
-    * @param module the module
-    * @param requirement the requirement
     * @throws IllegalArgumentException for a null requirement
     * @return true when it is resolves the requirement
     */
-   boolean resolves(Module module, Requirement requirement);
+   boolean resolves(Module reqModule, Requirement requirement);
 }

Modified: projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/metadata/xml/support/TestCapability.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/metadata/xml/support/TestCapability.java	2009-09-18 14:31:03 UTC (rev 93731)
+++ projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/metadata/xml/support/TestCapability.java	2009-09-18 14:34:32 UTC (rev 93732)
@@ -44,7 +44,7 @@
       super(name, version);
    }
    
-   public boolean resolves(Module module, Requirement requirement)
+   public boolean resolves(Module reqModule, Requirement requirement)
    {
       return false;
    }

Modified: projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/support/TestCapability.java
===================================================================
--- projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/support/TestCapability.java	2009-09-18 14:31:03 UTC (rev 93731)
+++ projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/support/TestCapability.java	2009-09-18 14:34:32 UTC (rev 93732)
@@ -44,7 +44,7 @@
       super(name, version);
    }
    
-   public boolean resolves(Module module, Requirement requirement)
+   public boolean resolves(Module reqModule, Requirement requirement)
    {
       return false;
    }




More information about the jboss-cvs-commits mailing list