[jboss-svn-commits] JBoss Common SVN: r3856 - in shrinkwrap/trunk/impl-base/src: main/java/org/jboss/shrinkwrap/impl/base/container and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Dec 15 11:49:07 EST 2009


Author: ALRubinger
Date: 2009-12-15 11:49:06 -0500 (Tue, 15 Dec 2009)
New Revision: 3856

Added:
   shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/spec/donotchange/DummyClassA.java
   shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/spec/donotchange/DummyClassParent.java
Removed:
   shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/spec/donotchange/DummyClassUsedForClassResourceTest.java
Modified:
   shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/asset/AssetUtil.java
   shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/container/ContainerBase.java
   shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/test/DynamicContainerTestBase.java
Log:
[SHRINKWRAP-106] Addition of a class should add all inner classes

Modified: shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/asset/AssetUtil.java
===================================================================
--- shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/asset/AssetUtil.java	2009-12-15 02:31:59 UTC (rev 3855)
+++ shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/asset/AssetUtil.java	2009-12-15 16:49:06 UTC (rev 3856)
@@ -43,6 +43,11 @@
     */
    public static final String DELIMITER_RESOURCE_PATH = "/";
    
+   /**
+    * Extension applied to .class files
+    */
+   private static final String EXTENSION_CLASS = ".class";
+   
    //-------------------------------------------------------------------------------------||
    // Constructor ------------------------------------------------------------------------||
    //-------------------------------------------------------------------------------------||
@@ -110,7 +115,7 @@
    {
       String classResourceDelimiter = clazz.getName().replaceAll(
             DELIMITER_CLASS_NAME_PATH, DELIMITER_RESOURCE_PATH);
-      String classFullPath = classResourceDelimiter + ".class";
+      String classFullPath = classResourceDelimiter + EXTENSION_CLASS;
       return new BasicPath(classFullPath);
    }
 }

Modified: shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/container/ContainerBase.java
===================================================================
--- shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/container/ContainerBase.java	2009-12-15 02:31:59 UTC (rev 3855)
+++ shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/container/ContainerBase.java	2009-12-15 16:49:06 UTC (rev 3856)
@@ -80,6 +80,11 @@
       }
    }
    
+   /**
+    * Filter pattern for inner classes
+    */
+   private static final String PATTERN_INNER_CLASS = "$.*";
+   
    //-------------------------------------------------------------------------------------||
    // Instance Members -------------------------------------------------------------------||
    //-------------------------------------------------------------------------------------||
@@ -661,7 +666,15 @@
          Asset resource = new ClassAsset(clazz);
          Path location = new BasicPath(getClassesPath(), AssetUtil.getFullPathForClassResource(clazz));
          add(resource, location);
+         
+         // Get all inner classes and add them
+         final Class<?>[] innerClasses = clazz.getDeclaredClasses();
+         for (Class<?> innerClass : innerClasses)
+         {
+            this.addClass(innerClass);
+         }
       }
+      
       return covarientReturn();
    };
    
@@ -702,7 +715,7 @@
          Set<Class<?>> classes = scanner.getClasses(); 
          for(Class<?> clazz : classes) 
          {
-            if(!filter.include(clazz)) 
+            if(!filter.include(clazz))
             {
                continue;
             }

Copied: shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/spec/donotchange/DummyClassA.java (from rev 3847, shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/spec/donotchange/DummyClassUsedForClassResourceTest.java)
===================================================================
--- shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/spec/donotchange/DummyClassA.java	                        (rev 0)
+++ shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/spec/donotchange/DummyClassA.java	2009-12-15 16:49:06 UTC (rev 3856)
@@ -0,0 +1,32 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.shrinkwrap.impl.base.spec.donotchange;
+
+/**
+ * This class is just here for the ClassContainer.addPackage/addClass tests.
+ *
+ * @author <a href="mailto:aslak at conduct.no">Aslak Knutsen</a>
+ * @version $Revision: $
+ */
+public class DummyClassA extends DummyClassParent
+{
+   public class InnerClass
+   {
+
+   }
+
+}

Added: shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/spec/donotchange/DummyClassParent.java
===================================================================
--- shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/spec/donotchange/DummyClassParent.java	                        (rev 0)
+++ shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/spec/donotchange/DummyClassParent.java	2009-12-15 16:49:06 UTC (rev 3856)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.shrinkwrap.impl.base.spec.donotchange;
+
+/**
+ * Parent of a class used in testing the addition of classes
+ * to archives
+ * 
+ * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
+ * @version $Revision: $
+ */
+public class DummyClassParent
+{
+
+   //-------------------------------------------------------------------------------------||
+   // Inner Classes ----------------------------------------------------------------------||
+   //-------------------------------------------------------------------------------------||
+
+   public static class ParentInnerClass
+   {
+
+   }
+}

Deleted: shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/spec/donotchange/DummyClassUsedForClassResourceTest.java
===================================================================
--- shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/spec/donotchange/DummyClassUsedForClassResourceTest.java	2009-12-15 02:31:59 UTC (rev 3855)
+++ shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/spec/donotchange/DummyClassUsedForClassResourceTest.java	2009-12-15 16:49:06 UTC (rev 3856)
@@ -1,30 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jboss.shrinkwrap.impl.base.spec.donotchange;
-
-
-/**
- * DummyClassUsedForClassResourceTest
- * 
- * This class is just here for the ClassContainer.addPackage/addClass tests.
- *
- * @author <a href="mailto:aslak at conduct.no">Aslak Knutsen</a>
- * @version $Revision: $
- */
-public class DummyClassUsedForClassResourceTest
-{
-}

Modified: shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/test/DynamicContainerTestBase.java
===================================================================
--- shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/test/DynamicContainerTestBase.java	2009-12-15 02:31:59 UTC (rev 3855)
+++ shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/test/DynamicContainerTestBase.java	2009-12-15 16:49:06 UTC (rev 3856)
@@ -36,7 +36,8 @@
 import org.jboss.shrinkwrap.impl.base.asset.AssetUtil;
 import org.jboss.shrinkwrap.impl.base.asset.ClassLoaderAsset;
 import org.jboss.shrinkwrap.impl.base.path.BasicPath;
-import org.jboss.shrinkwrap.impl.base.spec.donotchange.DummyClassUsedForClassResourceTest;
+import org.jboss.shrinkwrap.impl.base.spec.donotchange.DummyClassA;
+import org.jboss.shrinkwrap.impl.base.spec.donotchange.DummyClassParent;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -390,14 +391,9 @@
    @ArchiveType(ClassContainer.class)
    public void testAddClass() throws Exception
    {
-      getClassContainer().addClass(DummyClassUsedForClassResourceTest.class);
+      getClassContainer().addClass(DummyClassA.class);
 
-      Path expectedPath = new BasicPath(getClassPath(), AssetUtil
-            .getFullPathForClassResource(DummyClassUsedForClassResourceTest.class));
-
-      Assert.assertTrue(
-            "A class should be located at " + expectedPath.get(), 
-            getArchive().contains(expectedPath));
+      this.ensureClassesAdded();
    }
 
    /**
@@ -409,14 +405,33 @@
    @ArchiveType(ClassContainer.class)
    public void testAddClasses() throws Exception
    {
-      getClassContainer().addClasses(DummyClassUsedForClassResourceTest.class);
+      getClassContainer().addClasses(DummyClassA.class);
 
+      this.ensureClassesAdded();
+   }
+   
+   /**
+    * Ensures that the "addClass*" tests result in all expected classes added 
+    */
+   private void ensureClassesAdded()
+   {
       Path expectedPath = new BasicPath(getClassPath(), AssetUtil
-            .getFullPathForClassResource(DummyClassUsedForClassResourceTest.class));
+            .getFullPathForClassResource(DummyClassA.class));
 
       Assert.assertTrue(
             "A class should be located at " + expectedPath.get(), 
             getArchive().contains(expectedPath));
+      
+      // SHRINKWRAP-106
+      // Ensure inner classes are added
+      final Path expectedPathInnerClass = new BasicPath(getClassPath(), AssetUtil
+            .getFullPathForClassResource(DummyClassA.InnerClass.class));
+      final Path expectedPathInnerClassParent = new BasicPath(getClassPath(), AssetUtil
+            .getFullPathForClassResource(DummyClassParent.ParentInnerClass.class));
+      Assert.assertTrue("Adding a class should also add its inner classes", getArchive().contains(
+            expectedPathInnerClass));
+      Assert.assertFalse("Adding a class should not add the public inner classes of its parent", getArchive().contains(
+            expectedPathInnerClassParent));
    }
 
    /**
@@ -428,7 +443,7 @@
    @ArchiveType(ClassContainer.class)
    public void testAddClassesByFqn() throws Exception
    {
-      final Class<?> classToAdd = DummyClassUsedForClassResourceTest.class;
+      final Class<?> classToAdd = DummyClassA.class;
 
       getClassContainer().addClass(classToAdd.getName());
 
@@ -445,7 +460,7 @@
    @ArchiveType(ClassContainer.class)
    public void testAddClassesByFqnAndTccl() throws Exception
    {
-      final Class<?> classToAdd = DummyClassUsedForClassResourceTest.class;
+      final Class<?> classToAdd = DummyClassA.class;
 
       getClassContainer().addClass(classToAdd.getName(), classToAdd.getClassLoader());
 
@@ -462,10 +477,10 @@
    @ArchiveType(ClassContainer.class)
    public void testAddPackage() throws Exception
    {
-      getClassContainer().addPackage(DummyClassUsedForClassResourceTest.class.getPackage());
+      getClassContainer().addPackage(DummyClassA.class.getPackage());
 
       Path expectedPath = new BasicPath(getClassPath(), AssetUtil
-            .getFullPathForClassResource(DummyClassUsedForClassResourceTest.class));
+            .getFullPathForClassResource(DummyClassA.class));
 
       Assert.assertTrue(
             "A class should be located at " + expectedPath.get(), 
@@ -481,10 +496,10 @@
    @ArchiveType(ClassContainer.class)
    public void testAddPackageNonRecursive() throws Exception
    {
-      getClassContainer().addPackages(false, DummyClassUsedForClassResourceTest.class.getPackage());
+      getClassContainer().addPackages(false, DummyClassA.class.getPackage());
 
       Path expectedPath = new BasicPath(getClassPath(), AssetUtil
-            .getFullPathForClassResource(DummyClassUsedForClassResourceTest.class));
+            .getFullPathForClassResource(DummyClassA.class));
 
       Assert.assertTrue(
             "A class should be located at " + expectedPath.get(), 



More information about the jboss-svn-commits mailing list