[jboss-cvs] JBossAS SVN: r81555 - in projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src: main/java/org/jboss/classloading/spi/vfs/dependency and 4 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Nov 25 09:28:07 EST 2008
Author: alesj
Date: 2008-11-25 09:28:07 -0500 (Tue, 25 Nov 2008)
New Revision: 81555
Added:
projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/support/NoopClassLoaderFactory.java
projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/test/NoopClassLoaderFactoryXMLUnitTestCase.java
Modified:
projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/main/java/org/jboss/classloading/plugins/vfs/PackageVisitor.java
projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java
projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/test/java/org/jboss/test/classloading/ClassLoadingVFSTestSuite.java
Log:
Port to branch.
Modified: projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/main/java/org/jboss/classloading/plugins/vfs/PackageVisitor.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/main/java/org/jboss/classloading/plugins/vfs/PackageVisitor.java 2008-11-25 14:14:45 UTC (rev 81554)
+++ projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/main/java/org/jboss/classloading/plugins/vfs/PackageVisitor.java 2008-11-25 14:28:07 UTC (rev 81555)
@@ -162,7 +162,7 @@
// This is our current root
if (file.equals(root))
return true;
-
+
// Some other root, it will be handled later
for (VirtualFile other : roots)
{
Modified: projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java 2008-11-25 14:14:45 UTC (rev 81554)
+++ projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java 2008-11-25 14:28:07 UTC (rev 81555)
@@ -45,7 +45,7 @@
/**
* VFSClassLoaderPolicyModule.
- *
+ *
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision: 1.1 $
*/
@@ -56,13 +56,13 @@
/** The roots */
private List<String> roots;
-
+
/** Our cached vfs roots */
private VirtualFile[] vfsRoots;
/**
* Create a new VFSClassLoaderPolicyModule.
- *
+ *
* @param classLoadingMetaData the classloading metadata
* @param contextName the context name
*/
@@ -70,10 +70,10 @@
{
super(classLoadingMetaData, contextName);
}
-
+
/**
* Get the roots.
- *
+ *
* @return the roots.
*/
public List<String> getRoots()
@@ -83,7 +83,7 @@
/**
* Set the roots.
- *
+ *
* @param roots the roots.
*/
public void setRoots(List<String> roots)
@@ -100,7 +100,7 @@
List<Capability> capabilities = super.determineCapabilities();
if (capabilities != null)
return capabilities;
-
+
// We need to work it out
ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
capabilities = new CopyOnWriteArrayList<Capability>();
@@ -109,7 +109,7 @@
Object version = getVersion();
Capability capability = factory.createModule(getName(), version);
capabilities.add(capability);
-
+
// Do we determine package capabilities
ClassFilter included = getIncluded();
ClassFilter excluded = getExcluded();
@@ -124,7 +124,7 @@
capabilities.add(capability);
}
}
-
+
return capabilities;
}
@@ -143,17 +143,17 @@
{
return (VFSClassLoaderFactory) super.getClassLoadingMetaData();
}
-
+
/**
* Get the virtual file roots
- *
+ *
* @return the roots
*/
protected VirtualFile[] determineVFSRoots()
{
if (vfsRoots != null)
return vfsRoots;
-
+
if (roots == null)
{
vfsRoots = new VirtualFile[0];
@@ -203,12 +203,13 @@
{
return (VFSClassLoaderPolicy) super.getPolicy();
}
-
+
@Override
protected VFSClassLoaderPolicy determinePolicy()
{
VirtualFile[] roots = determineVFSRoots();
VFSClassLoaderPolicy policy = VFSClassLoaderPolicy.createVFSClassLoaderPolicy(getContextName(), roots);
+
String[] packageNames = getPackageNames();
policy.setExportedPackages(packageNames);
policy.setIncluded(getIncluded());
@@ -243,5 +244,5 @@
ClassFilter excluded = getExcluded();
VFSResourceVisitor.visit(roots, null, included, excluded, classLoader, visitor, filter, recurseFilter, urls);
}
- }
+ }
}
Modified: projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java 2008-11-25 14:14:45 UTC (rev 81554)
+++ projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java 2008-11-25 14:28:07 UTC (rev 81555)
@@ -53,7 +53,9 @@
/**
* VFSClassLoaderPolicy.
*
- * @author <a href="adrian at jboss.org">Adrian Brock</a>
+ * @author <a href="adrian at jboss.org">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
+ * @author <a href="anil.saldhana at jboss.org">Anil Saldhana</a>
* @version $Revision: 1.1 $
*/
public class VFSClassLoaderPolicy extends ClassLoaderPolicy
@@ -107,6 +109,9 @@
@SuppressWarnings("unchecked")
private Map<String, VirtualFileInfo> vfsCache = Collections.synchronizedMap(new SoftValueHashMap());
+ /** JBCL-64, JBVFS-77: CodeSource should use real url **/
+ private boolean useRealURL = true;
+
/**
* Determine a name from the roots
*
@@ -180,6 +185,7 @@
{
return new VFSClassLoaderPolicy(name, roots, excludedRoots);
}
+
/**
* Create a new VFSClassLoaderPolicy.
@@ -485,6 +491,26 @@
return null;
}
+ /**
+ * Do we use real url.
+ *
+ * @return true if real url should be used
+ */
+ public boolean isUseRealURL()
+ {
+ return useRealURL;
+ }
+
+ /**
+ * Set use real url flag.
+ *
+ * @param useRealURL the real url flag
+ */
+ public void setUseRealURL(boolean useRealURL)
+ {
+ this.useRealURL = useRealURL;
+ }
+
@Override
public void getResources(String name, Set<URL> urls) throws IOException
{
@@ -504,8 +530,8 @@
log.debug("Error getting resources for " + root, e);
}
}
- }
-
+ }
+
/**
* Find a child from a path
*
@@ -614,14 +640,20 @@
VirtualFile clazz = findChild(path);
if (clazz == null)
{
- log.trace("Unable to determine class file for " + className);
+ if (log.isTraceEnabled())
+ log.trace("Unable to determine class file for " + className);
+
return null;
}
try
{
VirtualFile root = findRoot(path);
- URL codeSourceURL = root.toURL();
- Certificate[] certs = null; // TODO JBMICROCONT-182 determine certificates
+ URL codeSourceURL = isUseRealURL() ? VFSUtils.getRealURL(root) : root.toURL();
+
+ if (log.isTraceEnabled())
+ log.trace("getProtectionDomain:className="+ className + " path="+ path + " codeSourceURL=" + codeSourceURL);
+
+ Certificate[] certs = null; // TODO JBCL-67 determine certificates
CodeSource cs = new CodeSource(codeSourceURL, certs);
PermissionCollection permissions = Policy.getPolicy().getPermissions(cs);
return new ProtectionDomain(cs, permissions);
Modified: projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/test/java/org/jboss/test/classloading/ClassLoadingVFSTestSuite.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/test/java/org/jboss/test/classloading/ClassLoadingVFSTestSuite.java 2008-11-25 14:14:45 UTC (rev 81554)
+++ projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/test/java/org/jboss/test/classloading/ClassLoadingVFSTestSuite.java 2008-11-25 14:28:07 UTC (rev 81555)
@@ -37,6 +37,7 @@
import org.jboss.test.classloading.vfs.metadata.test.VFSClassLoaderFactoryUnitTestCase;
import org.jboss.test.classloading.vfs.metadata.test.VFSResourceVisitorUnitTestCase;
import org.jboss.test.classloading.vfs.metadata.xml.test.VFSClassLoaderFactoryXMLUnitTestCase;
+import org.jboss.test.classloading.vfs.metadata.xml.test.NoopClassLoaderFactoryXMLUnitTestCase;
import org.jboss.test.classloading.vfs.policy.test.ExportAllUnitTestCase;
import org.jboss.test.classloading.vfs.policy.test.PackageInfoUnitTestCase;
@@ -69,6 +70,7 @@
suite.addTest(ExportAllUnitTestCase.suite());
suite.addTest(VFSClassLoaderFactoryXMLUnitTestCase.suite());
+ suite.addTest(NoopClassLoaderFactoryXMLUnitTestCase.suite());
suite.addTest(DomainUnitTestCase.suite());
suite.addTest(ImportAllUnitTestCase.suite());
suite.addTest(ModuleDependencyUnitTestCase.suite());
Copied: projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/support/NoopClassLoaderFactory.java (from rev 81554, projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/support/NoopClassLoaderFactory.java)
===================================================================
--- projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/support/NoopClassLoaderFactory.java (rev 0)
+++ projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/support/NoopClassLoaderFactory.java 2008-11-25 14:28:07 UTC (rev 81555)
@@ -0,0 +1,50 @@
+/*
+ * 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.vfs.metadata.xml.support;
+
+import java.util.Collections;
+import java.util.List;
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.xb.annotations.JBossXmlSchema;
+
+/**
+ * Noop cl factory.
+ *
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+ at JBossXmlSchema(namespace="urn:jboss:classloader:1.0", elementFormDefault=XmlNsForm.QUALIFIED)
+ at XmlRootElement(name="classloader")
+public class NoopClassLoaderFactory extends VFSClassLoaderFactory
+{
+ private static final long serialVersionUID = 1l;
+
+ @XmlTransient
+ public List<BeanMetaData> getBeans()
+ {
+ return Collections.emptyList();
+ }
+}
Copied: projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/test/NoopClassLoaderFactoryXMLUnitTestCase.java (from rev 81554, projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/test/NoopClassLoaderFactoryXMLUnitTestCase.java)
===================================================================
--- projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/test/NoopClassLoaderFactoryXMLUnitTestCase.java (rev 0)
+++ projects/jboss-cl/branches/Branch_2_0/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/test/NoopClassLoaderFactoryXMLUnitTestCase.java 2008-11-25 14:28:07 UTC (rev 81555)
@@ -0,0 +1,91 @@
+/*
+ * 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.vfs.metadata.xml.test;
+
+import junit.framework.Test;
+import org.jboss.test.classloading.vfs.metadata.xml.AbstractJBossXBTest;
+import org.jboss.test.classloading.vfs.metadata.xml.support.NoopClassLoaderFactory;
+import org.jboss.xb.binding.sunday.unmarshalling.DefaultSchemaResolver;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
+import org.jboss.xb.binding.sunday.unmarshalling.SingletonSchemaResolverFactory;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory10;
+
+/**
+ * NoopClassLoaderFactoryXMLUnitTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class NoopClassLoaderFactoryXMLUnitTestCase extends AbstractJBossXBTest
+{
+ public static Test suite()
+ {
+ return suite(NoopClassLoaderFactoryXMLUnitTestCase.class);
+ }
+
+ public NoopClassLoaderFactoryXMLUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ protected void changeMetaDataClass(Class<?> clazz)
+ {
+ SingletonSchemaResolverFactory factory = SingletonSchemaResolverFactory.getInstance();
+ SchemaBindingResolver resolver = factory.getSchemaBindingResolver();
+ DefaultSchemaResolver dsr = assertInstanceOf(resolver, DefaultSchemaResolver.class);
+ dsr.removeClassBinding("urn:jboss:classloader:1.0");
+ dsr.addClassBinding("urn:jboss:classloader:1.0", clazz);
+ }
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ changeMetaDataClass(NoopClassLoaderFactory.class);
+ try
+ {
+ super.setUp();
+ }
+ catch (Exception e)
+ {
+ changeMetaDataClass(VFSClassLoaderFactory10.class);
+ throw e;
+ }
+ }
+
+ @Override
+ protected void tearDown() throws Exception
+ {
+ try
+ {
+ super.tearDown();
+ }
+ finally
+ {
+ changeMetaDataClass(VFSClassLoaderFactory10.class);
+ }
+ }
+
+ public void testExportImportMixed() throws Exception
+ {
+ NoopClassLoaderFactory result = unmarshalObject(NoopClassLoaderFactory.class);
+ assertNotNull(result);
+ }
+}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list