[jboss-cvs] JBossAS SVN: r92787 - in projects/jboss-cl/branches/Branch_2_0: classloading/src/main/java/org/jboss/classloading/spi/dependency and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Aug 25 07:40:38 EDT 2009
Author: thomas.diesler at jboss.com
Date: 2009-08-25 07:40:38 -0400 (Tue, 25 Aug 2009)
New Revision: 92787
Added:
projects/jboss-cl/branches/Branch_2_0/classloading/src/test/java/org/jboss/test/classloading/dependency/test/SelfImportPackageDependencyUnitTestCase.java
Modified:
projects/jboss-cl/branches/Branch_2_0/classloading/src/main/java/org/jboss/classloading/spi/dependency/RequirementDependencyItem.java
projects/jboss-cl/branches/Branch_2_0/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java
projects/jboss-cl/branches/Branch_2_0/pom.xml
Log:
[JBCL-24] Circular and self dependencies
Add basic coverage for self dependencies
Modified: projects/jboss-cl/branches/Branch_2_0/classloading/src/main/java/org/jboss/classloading/spi/dependency/RequirementDependencyItem.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_0/classloading/src/main/java/org/jboss/classloading/spi/dependency/RequirementDependencyItem.java 2009-08-25 11:22:09 UTC (rev 92786)
+++ projects/jboss-cl/branches/Branch_2_0/classloading/src/main/java/org/jboss/classloading/spi/dependency/RequirementDependencyItem.java 2009-08-25 11:40:38 UTC (rev 92787)
@@ -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/branches/Branch_2_0/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_0/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java 2009-08-25 11:22:09 UTC (rev 92786)
+++ projects/jboss-cl/branches/Branch_2_0/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java 2009-08-25 11:40:38 UTC (rev 92787)
@@ -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
Added: projects/jboss-cl/branches/Branch_2_0/classloading/src/test/java/org/jboss/test/classloading/dependency/test/SelfImportPackageDependencyUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_0/classloading/src/test/java/org/jboss/test/classloading/dependency/test/SelfImportPackageDependencyUnitTestCase.java (rev 0)
+++ projects/jboss-cl/branches/Branch_2_0/classloading/src/test/java/org/jboss/test/classloading/dependency/test/SelfImportPackageDependencyUnitTestCase.java 2009-08-25 11:40:38 UTC (rev 92787)
@@ -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);
+ }
+}
Modified: projects/jboss-cl/branches/Branch_2_0/pom.xml
===================================================================
--- projects/jboss-cl/branches/Branch_2_0/pom.xml 2009-08-25 11:22:09 UTC (rev 92786)
+++ projects/jboss-cl/branches/Branch_2_0/pom.xml 2009-08-25 11:40:38 UTC (rev 92787)
@@ -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</artifactId>
<version>2.0.7-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/branches/Branch_2_0/</connection>
<developerConnection>scm:svn:https://svn.jboss.org/repos/jbossas/projects/jboss-cl/branches/Branch_2_0/</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