[jboss-svn-commits] JBoss Common SVN: r3834 - in shrinkwrap/trunk: impl-base/src/main/java/org/jboss/shrinkwrap/impl/base and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Dec 5 17:23:37 EST 2009
Author: aslak
Date: 2009-12-05 17:23:37 -0500 (Sat, 05 Dec 2009)
New Revision: 3834
Modified:
shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/Archive.java
shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/MemoryMapArchiveBase.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/ArchiveTestBase.java
Log:
SHRINKWRAP-100 Added filter support to Archive.getContent
Modified: shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/Archive.java
===================================================================
--- shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/Archive.java 2009-12-05 02:27:11 UTC (rev 3833)
+++ shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/Archive.java 2009-12-05 22:23:37 UTC (rev 3834)
@@ -115,6 +115,13 @@
* @return
*/
Map<Path, Asset> getContent();
+
+ /**
+ * Obtains all assets matching given filter in this archive, along with its respective Path.
+ * The returned Map will be an immutable view.
+ * @return
+ */
+ Map<Path, Asset> getContent(Filter<Path> filter);
/**
* Add an archive under a specific context and maintain the archive name as context path.
Modified: shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/MemoryMapArchiveBase.java
===================================================================
--- shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/MemoryMapArchiveBase.java 2009-12-05 02:27:11 UTC (rev 3833)
+++ shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/MemoryMapArchiveBase.java 2009-12-05 22:23:37 UTC (rev 3834)
@@ -18,6 +18,7 @@
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@@ -28,6 +29,7 @@
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.Asset;
import org.jboss.shrinkwrap.api.ExtensionLoader;
+import org.jboss.shrinkwrap.api.Filter;
import org.jboss.shrinkwrap.api.Path;
import org.jboss.shrinkwrap.impl.base.asset.ArchiveAsset;
import org.jboss.shrinkwrap.impl.base.path.BasicPath;
@@ -200,6 +202,25 @@
{
return Collections.unmodifiableMap(content);
}
+
+ /* (non-Javadoc)
+ * @see org.jboss.shrinkwrap.api.Archive#getContent(org.jboss.shrinkwrap.api.Filter)
+ */
+ @Override
+ public Map<Path, Asset> getContent(Filter<Path> filter)
+ {
+ Validate.notNull(filter, "Filter must be specified");
+
+ Map<Path, Asset> filteredContent = new HashMap<Path, Asset>();
+ for(Map.Entry<Path, Asset> contentEntry : content.entrySet())
+ {
+ if(filter.include(contentEntry.getKey()))
+ {
+ filteredContent.put(contentEntry.getKey(), contentEntry.getValue());
+ }
+ }
+ return filteredContent;
+ }
/* {@inheritDoc}
* @see org.jboss.declarchive.api.Archive#toString(boolean)
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-05 02:27:11 UTC (rev 3833)
+++ shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/container/ContainerBase.java 2009-12-05 22:23:37 UTC (rev 3834)
@@ -229,6 +229,15 @@
}
/* (non-Javadoc)
+ * @see org.jboss.shrinkwrap.api.Archive#getContent(org.jboss.shrinkwrap.api.Filter)
+ */
+ @Override
+ public Map<Path, Asset> getContent(Filter<Path> filter)
+ {
+ return archive.getContent(filter);
+ }
+
+ /* (non-Javadoc)
* @see org.jboss.declarchive.api.Archive#getName()
*/
@Override
Modified: shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/test/ArchiveTestBase.java
===================================================================
--- shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/test/ArchiveTestBase.java 2009-12-05 02:27:11 UTC (rev 3833)
+++ shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/test/ArchiveTestBase.java 2009-12-05 22:23:37 UTC (rev 3834)
@@ -431,6 +431,39 @@
}
/**
+ * Ensure get content returns the correct map of content based on the given filter
+ * @throws Exception
+ */
+ @Test
+ public void testToGetContentFiltered() throws Exception
+ {
+ Archive<T> archive = getArchive();
+ Path location = new BasicPath("/", "test.properties");
+ Path locationTwo = new BasicPath("/", "test2.properties");
+
+ Asset asset = new ClassLoaderAsset(NAME_TEST_PROPERTIES);
+ Asset assetTwo = new ClassLoaderAsset(NAME_TEST_PROPERTIES_2);
+ archive.add(asset, location).add(assetTwo, locationTwo);
+
+ Map<Path, Asset> content = archive.getContent(Filters.include(".*test2.*"));
+
+ final Asset asset1 = content.get(location);
+ final Asset asset2 = content.get(locationTwo);
+
+ Assert.assertEquals(
+ "Only 1 Asset should have been included",
+ 1,
+ content.size());
+ Assert.assertNull(
+ "Should not be included in content",
+ asset1);
+
+ Assert.assertNotNull(
+ "Should be included in content",
+ asset2);
+ }
+
+ /**
* Ensure adding an archive to a path requires a path
* @throws Exception
*/
More information about the jboss-svn-commits
mailing list