Skip to content

Commit

Permalink
[SHRINKWRAP-233] Fixes:
Browse files Browse the repository at this point in the history
* Added validation for non existent packages
* Removed addDefaultPackage recursive since adds everything
* Added test case for addDefaultPackage
  • Loading branch information
Ivan Pazmino authored and Andrew Lee Rubinger committed Jul 11, 2011
1 parent 6289e75 commit bae88c5
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,15 @@ public interface ClassContainer<T extends Archive<T>> extends ResourceContainer<
* @see #addPackages(boolean, Package...)
*/
T addPackage(Package pack) throws IllegalArgumentException;

/**
* Adds all classes in the default {@link Package} to the {@link Archive}.
* <br/>
* SubPackages are excluded.
*
* @return This virtual archive
*/
T addDefaultPackage();

/**
* Adds all classes in the specified {@link Package}s to the {@link Archive}.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ public abstract class ContainerBase<T extends Archive<T>> extends AssignableBase

private static final Archive<?>[] CAST = new Archive[]{};
private static final String DEFAULT_MANIFEST = "DefaultManifest.MF";
private static final String DEFAULT_PACKAGE_NAME = "";

//-------------------------------------------------------------------------------------||
// Instance Members -------------------------------------------------------------------||
Expand Down Expand Up @@ -1159,7 +1160,8 @@ public boolean include(ArchivePath path)
};
},
clazz.getClassLoader(),
clazz.getPackage()
//Assumes a null package is a class in the default package
clazz.getPackage() == null ? DEFAULT_PACKAGE_NAME : clazz.getPackage().getName()
);
}
return covarientReturn();
Expand Down Expand Up @@ -1224,6 +1226,16 @@ public T addPackage(String pack) throws IllegalArgumentException
return addPackages(false, pack);
}

/*
* (non-Javadoc)
* @see org.jboss.shrinkwrap.api.container.ClassContainer#addDefaultPackage()
*/
@Override
public T addDefaultPackage()
{
return addPackages(false, DEFAULT_PACKAGE_NAME);
}

/* (non-Javadoc)
* @see org.jboss.shrinkwrap.api.container.ClassContainer#addPackages(boolean, java.lang.String[])
*/
Expand Down Expand Up @@ -1271,6 +1283,9 @@ private T addPackages(final boolean recursive, final Filter<ArchivePath> filter,

private void addPackage(final boolean recursive, final Filter<ArchivePath> filter, final ClassLoader classLoader, String packageName)
{
//precondition checks
Validate.notNull(packageName, "Package doesn't exist");

final URLPackageScanner.Callback callback = new URLPackageScanner.Callback()
{
@Override
Expand All @@ -1286,8 +1301,7 @@ public void classFound(String className)
add(asset, location);
}
};
final URLPackageScanner scanner = packageName == null ? URLPackageScanner.newInstance(recursive,
classLoader, callback) : URLPackageScanner.newInstance(recursive, classLoader, callback, packageName);
final URLPackageScanner scanner = URLPackageScanner.newInstance(recursive, classLoader, callback, packageName);
scanner.scanPackage();
}

Expand Down
45 changes: 39 additions & 6 deletions impl-base/src/test/java/DefaultPackageAddTestCase.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import org.jboss.shrinkwrap.api.ArchivePaths;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

/*
Expand Down Expand Up @@ -45,10 +47,33 @@ public class DefaultPackageAddTestCase
* Logger
*/
private static final Logger log = Logger.getLogger(DefaultPackageAddTestCase.class.getName());

//-------------------------------------------------------------------------------------||
// Instance Members -------------------------------------------------------------------||
//-------------------------------------------------------------------------------------||

private ArchivePath classInDefaultPackagePath;
private ArchivePath innerClassInDefaultPackagePath;

//-------------------------------------------------------------------------------------||
// Fixtures ---------------------------------------------------------------------------||
//-------------------------------------------------------------------------------------||

@Before
public void setupPaths() {
classInDefaultPackagePath = ArchivePaths.create("/ClassInDefaultPackage.class");
innerClassInDefaultPackagePath = ArchivePaths.create("/ClassInDefaultPackage$InnerClassInDefaultPackage.class");
}

@After
public void cleanupPaths() {
classInDefaultPackagePath = null;
innerClassInDefaultPackagePath = null;
}

//-------------------------------------------------------------------------------------||
// Tests ------------------------------------------------------------------------------||
//-------------------------------------------------------------------------------------||
//-------------------------------------------------------------------------------------||

/**
* Ensures that classes from the default package may be added
Expand All @@ -63,14 +88,22 @@ public void canAddClassFromDefaultPackage() throws Exception
.addClass(ClassInDefaultPackage.class);
log.info(archive.toString(true));

// Ensure the classes were added in the paths expected
final ArchivePath classInDefaultPackagePath = ArchivePaths.create("/ClassInDefaultPackage.class");
final ArchivePath innerClassInDefaultPackagePath = ArchivePaths
.create("/ClassInDefaultPackage$InnerClassInDefaultPackage.class");
assertClassesWereAdded(archive);
}

@Test
public void testAddDefaultPackage() {
JavaArchive archive = ShrinkWrap.create(JavaArchive.class);
archive.addDefaultPackage();

assertClassesWereAdded(archive);
}

private void assertClassesWereAdded(JavaArchive archive) {
Assert.assertTrue("Class in default package was not added to archive", archive
.contains(classInDefaultPackagePath));
Assert.assertTrue("Inner class in default package was not added to archive", archive
.contains(innerClassInDefaultPackagePath));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -1069,6 +1069,20 @@ public void testAddPackageAsStringRecursiveFiltered() throws Exception
assertContainsClass(expectedPath);
}

/**
* SHRINKWRAP-233: Tests adding a non existent package doesn't add any asset to the archive.
*
*/
@Test(expected = IllegalArgumentException.class)
public void testAddNonExistentPackage()
{
final String packageName = "non.existent.package";
JavaArchive archive = ShrinkWrap.create(JavaArchive.class);

//Here the exception should be thrown
archive.addPackages(true, Package.getPackage(packageName));
}

/**
* Ensure a package as a String can be added to a container with filter
*
Expand Down

0 comments on commit bae88c5

Please sign in to comment.