[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