[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