[jboss-cvs] JBossAS SVN: r92812 - 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
Tue Aug 25 16:52:33 EDT 2009


Author: thomas.diesler at jboss.com
Date: 2009-08-25 16:52:33 -0400 (Tue, 25 Aug 2009)
New Revision: 92812

Added:
   projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/SelfImportPackageDependencyUnitTestCase.java
   projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/SplitPackageDependencyUnitTestCase.java
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/spi/dependency/ClassLoadingSpace.java
   projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java
   projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/RequirementDependencyItem.java
   projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java
   projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/DependencyTestSuite.java
   projects/jboss-cl/trunk/pom.xml
Log:
[JBCL-25] Add support for "split packages"
Add support for Error, First (Last still needs work)

[JBCL-24] Circular and self dependencies
Add basic coverage for self dependencies



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-08-25 20:19:18 UTC (rev 92811)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/plugins/metadata/PackageCapability.java	2009-08-25 20:52:33 UTC (rev 92812)
@@ -38,8 +38,22 @@
 public class PackageCapability extends AbstractCapability implements ExportPackages
 {
    /** The serialVersionUID */
-   private static final long serialVersionUID = -1586959469453286396L;
+   private static final long serialVersionUID = 948069557003560933L;
 
+   /** The supported values for the split package poicy */
+   public enum SplitPackagePolicy 
+   {
+      /** The first module wins */
+      First, 
+      /** The last module wins */
+      Last, 
+      /** Split packages generate an error. This is the default. */
+      Error 
+   };
+   
+   /** The split package policy. Default is {@link SplitPackagePolicy#Error} */
+   private SplitPackagePolicy splitPolicy = SplitPackagePolicy.Error;
+   
    /**
     * Create a new PackageCapability.
     */
@@ -70,6 +84,36 @@
       super(name, version);
    }
 
+   /**
+    * Create a new PackageCapability.
+    * 
+    * @param name the name
+    * @param version the version - pass null for default version
+    * @param splitPolicy the split package policy
+    * @throws IllegalArgumentException for a null name
+    */
+   public PackageCapability(String name, Object version, SplitPackagePolicy splitPolicy)
+   {
+      super(name, version);
+      this.splitPolicy = splitPolicy;
+   }
+
+   /** 
+    * Get the split package policy
+    */
+   public SplitPackagePolicy getSplitPackagePolicy()
+   {
+      return splitPolicy;
+   }
+
+   /** 
+    * Set the split package policy
+    */
+   public void setSplitPackagePolicy(SplitPackagePolicy policy)
+   {
+      this.splitPolicy = policy;
+   }
+
    public boolean resolves(Module module, Requirement requirement)
    {
       if (requirement instanceof PackageRequirement == 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-08-25 20:19:18 UTC (rev 92811)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/ClassLoadingSpace.java	2009-08-25 20:52:33 UTC (rev 92812)
@@ -29,6 +29,8 @@
 import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.jboss.classloading.plugins.metadata.PackageCapability;
+import org.jboss.classloading.plugins.metadata.PackageCapability.SplitPackagePolicy;
 import org.jboss.classloading.spi.metadata.Requirement;
 import org.jboss.logging.Logger;
 
@@ -211,16 +213,22 @@
 
       // The packages exported by this module (excluding optional packages)
       List<String> exportedPackages = module.determinePackageNames(false);
-
+      
       // Check there are no conflicting packages
       if (exportedPackages != null && exportedPackages.isEmpty() == false)
       {
          for (String exportedPackage : exportedPackages)
          {
             Module otherModule = modulesByPackage.get(exportedPackage);
-            // TODO JBCL-22 ERRORS
             if (otherModule != null)
-               throw new IllegalStateException(module + " cannot be added because it is exports package " + exportedPackage + " which conflicts with " + otherModule);
+            {
+               PackageCapability exportCapability = module.getExportCapability(exportedPackage);
+               if (exportCapability.getSplitPackagePolicy() == SplitPackagePolicy.Error)
+               {
+                  // TODO JBCL-22 ERRORS
+                  throw new IllegalStateException(module + " cannot be added because it is exports package " + exportedPackage + " which conflicts with " + otherModule);
+               }
+            }
          }
       }
 
@@ -253,7 +261,12 @@
       if (exportedPackages != null && exportedPackages.isEmpty() == false)
       {
          for (String exportedPackage : exportedPackages)
-            modulesByPackage.put(exportedPackage, module);
+         {
+            Module firstModule = modulesByPackage.get(exportedPackage);
+            PackageCapability exportCapability = module.getExportCapability(exportedPackage);
+            if (firstModule == null || exportCapability.getSplitPackagePolicy() == SplitPackagePolicy.Last)
+               modulesByPackage.put(exportedPackage, module);
+         }
       }
       
       // Remember the module requirements

Modified: projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java	2009-08-25 20:19:18 UTC (rev 92811)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java	2009-08-25 20:52:33 UTC (rev 92812)
@@ -39,6 +39,7 @@
 import org.jboss.classloader.spi.DelegateLoader;
 import org.jboss.classloader.spi.ParentPolicy;
 import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloading.plugins.metadata.PackageCapability;
 import org.jboss.classloading.spi.helpers.NameAndVersionSupport;
 import org.jboss.classloading.spi.metadata.Capability;
 import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
@@ -737,22 +738,8 @@
       {
          for (Requirement requirement : getRequirements())
          {
-            if (requirement instanceof ExportPackages)
+            if (optional == false && requirement instanceof OptionalPackages)
             {
-               ExportPackages exported = (ExportPackages) requirement;
-               Set<String> exportPackages = exported.getPackageNames(this);
-               if (optional || requirement.isOptional() == false)
-               {
-                  if (exportPackages != null && exportPackages.isEmpty() == false)
-                  {
-                     if (packageNames.isEmpty())
-                        packageNames = new ArrayList<String>();
-                     packageNames.addAll(exportPackages);
-                  }
-               }
-            }
-            else if (optional == false && requirement instanceof OptionalPackages)
-            {
                OptionalPackages exported = (OptionalPackages) requirement;
                Set<String> optionalPackages = exported.getOptionalPackageNames(this);
                if (optionalPackages != null && packageNames.isEmpty() == false)
@@ -765,6 +752,32 @@
    }
    
    /**
+    * Return the export package capability for a given package name
+    * @param exportedPackage the name of the exported package
+    * @return null if the capability cannot be found
+    */
+   public PackageCapability getExportCapability(String exportedPackage)
+   {
+      List<Capability> capabilities = getCapabilities();
+      if (capabilities != null && capabilities.isEmpty() == false)
+      {
+         for (Capability capability : capabilities)
+         {
+            if (capability instanceof PackageCapability)
+            {
+               PackageCapability exported = (PackageCapability) capability;
+               for (String packageName : exported.getPackageNames(this))
+               {
+                  if (packageName.equals(exportedPackage))
+                     return exported;
+               }
+            }
+         }
+      }
+      return null;
+   }
+   
+   /**
     * Get the state for the classloader
     * 
     * @return the state

Modified: projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/RequirementDependencyItem.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/RequirementDependencyItem.java	2009-08-25 20:19:18 UTC (rev 92811)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/RequirementDependencyItem.java	2009-08-25 20:52:33 UTC (rev 92812)
@@ -91,19 +91,31 @@
       Module module = getModule().resolveModule(this, true);
       if (module != null)
       {
-         Object iDependOn = module.getContextName();
-         ControllerContext context = controller.getContext(iDependOn, getDependentState());
-         if (context != null)
+         // self dependency
+         if (module == this.module)
          {
+            Object iDependOn = module.getContextName();
+            ControllerContext context = controller.getContext(iDependOn, null);
             setIDependOn(context.getName());
             addDependsOnMe(controller, context);
             setResolved(true);
-            if (module.getClassLoadingSpace() == null)
-               log.warn(getModule() + " resolved " + getRequirement() + " to " + module + " which has import-all=true. Cannot check its consistency.");
          }
          else
          {
-            setResolved(false);
+            Object iDependOn = module.getContextName();
+            ControllerContext context = controller.getContext(iDependOn, getDependentState());
+            if (context != null)
+            {
+               setIDependOn(context.getName());
+               addDependsOnMe(controller, context);
+               setResolved(true);
+               if (module.getClassLoadingSpace() == null)
+                  log.warn(getModule() + " resolved " + getRequirement() + " to " + module + " which has import-all=true. Cannot check its consistency.");
+            }
+            else
+            {
+               setResolved(false);
+            }
          }
       }
       else

Modified: projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java	2009-08-25 20:19:18 UTC (rev 92811)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java	2009-08-25 20:52:33 UTC (rev 92812)
@@ -27,6 +27,7 @@
 
 import org.jboss.classloader.plugins.loader.ClassLoaderToLoaderAdapter;
 import org.jboss.classloader.spi.ClassLoaderPolicy;
+import org.jboss.classloader.spi.ClassLoaderPolicyFactory;
 import org.jboss.classloader.spi.ClassLoaderSystem;
 import org.jboss.classloader.spi.DelegateLoader;
 import org.jboss.classloader.spi.Loader;
@@ -235,7 +236,24 @@
    @Override
    public DelegateLoader getDelegateLoader(Module requiringModule, Requirement requirement)
    {
-      return getPolicy().getExported();
+      // self dependency
+      if (this == requiringModule)
+      {
+         ClassLoaderPolicyFactory clpf = new ClassLoaderPolicyFactory()
+         {
+            public ClassLoaderPolicy createClassLoaderPolicy()
+            {
+               if (policy == null)
+                  throw new IllegalStateException("ClassLoaderPolicy not available");
+               return policy;
+            }
+         };
+         return new DelegateLoader(clpf);
+      }
+      else
+      {
+         return getPolicy().getExported();
+      }
    }
 
    @Override

Modified: projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/DependencyTestSuite.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/DependencyTestSuite.java	2009-08-25 20:19:18 UTC (rev 92811)
+++ projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/DependencyTestSuite.java	2009-08-25 20:52:33 UTC (rev 92812)
@@ -36,6 +36,8 @@
 import org.jboss.test.classloading.dependency.test.PackageDependencyUnitTestCase;
 import org.jboss.test.classloading.dependency.test.ReExportModuleUnitTestCase;
 import org.jboss.test.classloading.dependency.test.ReExportPackageUnitTestCase;
+import org.jboss.test.classloading.dependency.test.SelfImportPackageDependencyUnitTestCase;
+import org.jboss.test.classloading.dependency.test.SplitPackageDependencyUnitTestCase;
 import org.jboss.test.classloading.dependency.test.UsesPackageUnitTestCase;
 import org.jboss.test.classloading.dependency.test.MockResourceVisitorUnitTestCase;
 
@@ -79,6 +81,8 @@
       suite.addTest(HierarchicalDomainUnitTestCase.suite());
       suite.addTest(ConflictingPackageUnitTestCase.suite());
       suite.addTest(ConflictingRequirementUnitTestCase.suite());
+      suite.addTest(SplitPackageDependencyUnitTestCase.suite());
+      suite.addTest(SelfImportPackageDependencyUnitTestCase.suite());
 
       return suite;
    }

Copied: projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/SelfImportPackageDependencyUnitTestCase.java (from rev 92796, projects/jboss-cl/branches/Branch_2_0/classloading/src/test/java/org/jboss/test/classloading/dependency/test/SelfImportPackageDependencyUnitTestCase.java)
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/SelfImportPackageDependencyUnitTestCase.java	                        (rev 0)
+++ projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/SelfImportPackageDependencyUnitTestCase.java	2009-08-25 20:52:33 UTC (rev 92812)
@@ -0,0 +1,70 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.classloading.dependency.test;
+
+import junit.framework.Test;
+
+import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.test.classloading.dependency.support.a.A;
+
+/**
+ * Test a module that imports and exports the same package.
+ * 
+ * @author Thomas.Diesler at jboss.com
+ * @version $Revision: 1.1 $
+ */
+public class SelfImportPackageDependencyUnitTestCase extends AbstractMockClassLoaderUnitTest
+{
+   public static Test suite()
+   {
+      return suite(SelfImportPackageDependencyUnitTestCase.class);
+   }
+
+   public SelfImportPackageDependencyUnitTestCase(String name)
+   {
+      super(name);
+   }
+   
+   public void testImportPackageNoVersionCheck() throws Exception
+   {
+      MockClassLoadingMetaData a = new MockClassLoadingMetaData("a");
+      ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+      a.getCapabilities().addCapability(factory.createModule("ModuleA"));
+      a.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName()));
+      a.getRequirements().addRequirement(factory.createRequirePackage(A.class.getPackage().getName()));
+      a.setPathsAndPackageNames(A.class);
+      
+      KernelControllerContext contextA = install(a);
+      try
+      {
+         ClassLoader clA = assertClassLoader(contextA);
+         assertLoadClass(A.class, clA);
+      }
+      finally
+      {
+         uninstall(contextA);
+      }
+      assertNoClassLoader(contextA);
+   }
+}

Copied: projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/SplitPackageDependencyUnitTestCase.java (from rev 92796, projects/jboss-cl/branches/Branch_2_0/classloading/src/test/java/org/jboss/test/classloading/dependency/test/SplitPackageDependencyUnitTestCase.java)
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/SplitPackageDependencyUnitTestCase.java	                        (rev 0)
+++ projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/SplitPackageDependencyUnitTestCase.java	2009-08-25 20:52:33 UTC (rev 92812)
@@ -0,0 +1,186 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.classloading.dependency.test;
+
+import junit.framework.Test;
+
+import org.jboss.classloading.plugins.metadata.PackageCapability;
+import org.jboss.classloading.plugins.metadata.PackageCapability.SplitPackagePolicy;
+import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.test.classloading.dependency.support.a.A;
+import org.jboss.test.classloading.dependency.support.b.B;
+import org.jboss.test.classloading.dependency.support.c.C;
+
+/**
+ * Test the split package policies.
+ * 
+ * @author Thomas.Diesler at jboss.com
+ * @version $Revision: 1.1 $
+ */
+public class SplitPackageDependencyUnitTestCase extends AbstractMockClassLoaderUnitTest
+{
+   public static Test suite()
+   {
+      return suite(SplitPackageDependencyUnitTestCase.class);
+   }
+
+   public SplitPackageDependencyUnitTestCase(String name)
+   {
+      super(name);
+   }
+   
+   public void testSplitPackageDefault() throws Exception
+   {
+      MockClassLoadingMetaData ab = getModuleAB(null);
+      MockClassLoadingMetaData ac = getModuleAC(null);
+      
+      KernelControllerContext contextAB = install(ab);
+      try
+      {
+         ClassLoader clAB = assertClassLoader(contextAB);
+         assertLoadClass(A.class, clAB);
+         assertLoadClass(B.class, clAB);
+         
+         KernelControllerContext contextAC = install(ac);
+         assertEquals("package conflict on A expected", ControllerState.ERROR, contextAC.getState());
+         assertNotNull("package conflict on A expected", contextAC.getError());
+         assertNoClassLoader(contextAC);
+      }
+      finally
+      {
+         uninstall(contextAB);
+      }
+      assertNoClassLoader(contextAB);
+   }
+
+   public void testSplitPackageError() throws Exception
+   {
+      MockClassLoadingMetaData ab = getModuleAB(null);
+      MockClassLoadingMetaData ac = getModuleAC(SplitPackagePolicy.Error);
+      
+      KernelControllerContext contextAB = install(ab);
+      try
+      {
+         ClassLoader clAB = assertClassLoader(contextAB);
+         assertLoadClass(A.class, clAB);
+         assertLoadClass(B.class, clAB);
+         
+         KernelControllerContext contextAC = install(ac);
+         assertEquals("package conflict on A expected", ControllerState.ERROR, contextAC.getState());
+         assertNotNull("package conflict on A expected", contextAC.getError());
+         assertNoClassLoader(contextAC);
+      }
+      finally
+      {
+         uninstall(contextAB);
+      }
+      assertNoClassLoader(contextAB);
+   }
+
+   public void testSplitPackageFirst() throws Exception
+   {
+      MockClassLoadingMetaData ab = getModuleAB(null);
+      MockClassLoadingMetaData ac = getModuleAC(SplitPackagePolicy.First);
+      
+      KernelControllerContext contextAB = install(ab);
+      try
+      {
+         ClassLoader clAB = assertClassLoader(contextAB);
+         assertLoadClass(A.class, clAB);
+         assertLoadClass(B.class, clAB);
+         
+         KernelControllerContext contextAC = install(ac);
+         ClassLoader clAC = assertClassLoader(contextAC);
+         assertLoadClass(A.class, clAB);
+         assertLoadClass(B.class, clAB);
+         assertLoadClass(C.class, clAC);
+      }
+      finally
+      {
+         uninstall(contextAB);
+      }
+      assertNoClassLoader(contextAB);
+   }
+
+   public void testSplitPackageLast() throws Exception
+   {
+      MockClassLoadingMetaData ab = getModuleAB(null);
+      MockClassLoadingMetaData ac = getModuleAC(SplitPackagePolicy.Last);
+      
+      KernelControllerContext contextAB = install(ab);
+      try
+      {
+         ClassLoader clAB = assertClassLoader(contextAB);
+         assertLoadClass(A.class, clAB);
+         assertLoadClass(B.class, clAB);
+         
+         KernelControllerContext contextAC = install(ac);
+         ClassLoader clAC = assertClassLoader(contextAC);
+         System.out.println("FIXME: SplitPackagePolicy.Last");
+         // assertLoadClass(A.class, clAC);
+         assertLoadClass(B.class, clAB);
+         assertLoadClass(C.class, clAC);
+      }
+      finally
+      {
+         uninstall(contextAB);
+      }
+      assertNoClassLoader(contextAB);
+   }
+
+   private MockClassLoadingMetaData getModuleAB(SplitPackagePolicy policy)
+   {
+      MockClassLoadingMetaData ab = new MockClassLoadingMetaData("ab");
+      ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+      ab.getCapabilities().addCapability(factory.createModule("ModuleAB"));
+      ab.getCapabilities().addCapability(createPackageCapability(A.class.getPackage().getName(), policy));
+      ab.getCapabilities().addCapability(factory.createPackage(B.class.getPackage().getName()));
+      ab.getRequirements().addRequirement(factory.createRequirePackage(A.class.getPackage().getName()));
+      ab.setPathsAndPackageNames(A.class, B.class);
+      return ab;
+   }
+
+   private MockClassLoadingMetaData getModuleAC(SplitPackagePolicy policy)
+   {
+      MockClassLoadingMetaData ac = new MockClassLoadingMetaData("ac");
+      ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+      ac.getCapabilities().addCapability(factory.createModule("ModuleAC"));
+      ac.getCapabilities().addCapability(createPackageCapability(A.class.getPackage().getName(), policy));
+      ac.getCapabilities().addCapability(factory.createPackage(C.class.getPackage().getName()));
+      ac.getRequirements().addRequirement(factory.createRequirePackage(A.class.getPackage().getName()));
+      ac.setPathsAndPackageNames(A.class, C.class);
+      return ac;
+   }
+   
+   private PackageCapability createPackageCapability(String className, SplitPackagePolicy policy)
+   {
+      ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+      PackageCapability capability = (PackageCapability)factory.createPackage(className);
+      if (policy != null)
+         capability.setSplitPackagePolicy(policy);
+      
+      return capability;
+   }
+}

Modified: projects/jboss-cl/trunk/pom.xml
===================================================================
--- projects/jboss-cl/trunk/pom.xml	2009-08-25 20:19:18 UTC (rev 92811)
+++ projects/jboss-cl/trunk/pom.xml	2009-08-25 20:52:33 UTC (rev 92812)
@@ -1,19 +1,21 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
+  
   <parent>
     <groupId>org.jboss</groupId>
     <artifactId>jboss-parent</artifactId>
     <version>4</version>
   </parent>
+  
   <groupId>org.jboss.cl</groupId>
   <artifactId>jboss-cl-parent</artifactId>
   <version>2.2.0-SNAPSHOT</version>
   <packaging>pom</packaging>
+  
   <name>JBoss ClassLoader Parent POM</name>
+  <description>JBoss ClassLoader</description>
   <url>http://www.jboss.com/products/jbossmc</url>
-  <description>
-    JBoss ClassLoader
-  </description>
+  
   <scm>
     <connection>scm:svn:http://anonsvn.jboss.org/repos/jbossas/projects/jboss-cl/trunk/</connection>
     <developerConnection>scm:svn:https://svn.jboss.org/repos/jbossas/projects/jboss-cl/trunk/</developerConnection>
@@ -30,7 +32,7 @@
   <properties>
     <version.jboss.vfs>2.1.2.GA</version.jboss.vfs>
     <version.jboss.man>2.1.1.CR1</version.jboss.man>
-    <version.jboss.microcontainer>2.0.7.GA</version.jboss.microcontainer>
+    <version.jboss.microcontainer>2.0.9-SNAPSHOT</version.jboss.microcontainer>
     <version.jboss.common.core>2.2.14.GA</version.jboss.common.core>
     <version.jboss.logging.spi>2.0.5.GA</version.jboss.logging.spi>
     <version.jboss.classloading.spi>5.1.0.SP1</version.jboss.classloading.spi>




More information about the jboss-cvs-commits mailing list