[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