[jboss-svn-commits] JBoss Common SVN: r4462 - in shrinkwrap/trunk: impl-base/src/main/java/org/jboss/shrinkwrap/impl/base and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun May 30 11:18:36 EDT 2010
Author: ALRubinger
Date: 2010-05-30 11:18:35 -0400 (Sun, 30 May 2010)
New Revision: 4462
Modified:
shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/Archive.java
shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/ArchivePath.java
shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/ArchivePaths.java
shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/Filter.java
shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/ArchiveBase.java
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/path/BasicPath.java
shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/path/BasicPathTestCase.java
shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/path/PathsTestBase.java
shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/path/PathsTestCase.java
shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/test/ArchiveTestBase.java
Log:
[SHRINKWRAP-172] Add :
Archive.merge(Archive,String)
Archive.merge(Archive,String,Filter)
ArchivePaths.create(String,ArchivePath)
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 2010-05-30 04:33:12 UTC (rev 4461)
+++ shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/Archive.java 2010-05-30 15:18:35 UTC (rev 4462)
@@ -260,6 +260,17 @@
* @throws IllegalArgumentException If the path or existing archive is not specified
*/
T merge(Archive<?> source, ArchivePath path) throws IllegalArgumentException;
+
+ /**
+ * Merge the contents from an existing archive in a specific path
+ * without maintaining the archive name in the context path.
+ *
+ * @param source Archive to add contents from
+ * @param path Path to add contents to
+ * @return
+ * @throws IllegalArgumentException If the path or existing archive is not specified
+ */
+ T merge(Archive<?> source, String path) throws IllegalArgumentException;
/**
* Merge the contents from an existing archive in a specific path
@@ -273,6 +284,19 @@
* @throws IllegalArgumentException If the path or existing archive is not specified
*/
T merge(Archive<?> source, ArchivePath path, Filter<ArchivePath> filter) throws IllegalArgumentException;
+
+ /**
+ * Merge the contents from an existing archive in a specific path
+ * without maintaining the archive name in the context path.
+ * The filter control which {@link ArchivePath}s to include form the source {@link Archive}.
+ *
+ * @param source Archive to add contents from
+ * @param path Path to add contents to
+ * @param filter Filter to use for including {@link Asset}s in the merge.
+ * @return
+ * @throws IllegalArgumentException If the path or existing archive is not specified
+ */
+ T merge(Archive<?> source, String path, Filter<ArchivePath> filter) throws IllegalArgumentException;
/**
* Acts as a shorthand for {@link Archive#toString(Formatter)}
Modified: shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/ArchivePath.java
===================================================================
--- shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/ArchivePath.java 2010-05-30 04:33:12 UTC (rev 4461)
+++ shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/ArchivePath.java 2010-05-30 15:18:35 UTC (rev 4462)
@@ -18,7 +18,10 @@
/**
* Represents a target context within an {@link Archive} under
- * which an {@link Node} may be found.
+ * which an {@link Node} may be found. All {@link ArchivePath}
+ * contexts are absolute (ie. prepended with the '/' character).
+ * {@link ArchivePath}s may have parent contexts, unless the path
+ * is at the root.
*
* @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
* @version $Revision: $
Modified: shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/ArchivePaths.java
===================================================================
--- shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/ArchivePaths.java 2010-05-30 04:33:12 UTC (rev 4461)
+++ shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/ArchivePaths.java 2010-05-30 15:18:35 UTC (rev 4462)
@@ -69,6 +69,21 @@
{String.class, String.class}, new Object[]
{basePath, context});
}
+
+ /**
+ * Creates a new {@link ArchivePath} using the specified base
+ * and specified relative context.
+ *
+ * @param basePath A absolute path
+ * @param context A relative path to basePath
+ * @return a new path
+ */
+ public static ArchivePath create(final String basePath, final ArchivePath context)
+ {
+ return createInstance(new Class<?>[]
+ {String.class, ArchivePath.class}, new Object[]
+ {basePath, context});
+ }
/**
* Creates a new {@link ArchivePath} using the specified base
Modified: shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/Filter.java
===================================================================
--- shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/Filter.java 2010-05-30 04:33:12 UTC (rev 4461)
+++ shrinkwrap/trunk/api/src/main/java/org/jboss/shrinkwrap/api/Filter.java 2010-05-30 15:18:35 UTC (rev 4462)
@@ -28,7 +28,7 @@
{
/**
- * Called pr operation in a multi add operation.
+ * Called per operation in a multi add operation.
*
* @param object a object to filter on
* @return true if the object should be included in target
Modified: shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/ArchiveBase.java
===================================================================
--- shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/ArchiveBase.java 2010-05-30 04:33:12 UTC (rev 4461)
+++ shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/ArchiveBase.java 2010-05-30 15:18:35 UTC (rev 4462)
@@ -27,10 +27,10 @@
import org.jboss.shrinkwrap.api.ArchivePath;
import org.jboss.shrinkwrap.api.ArchivePaths;
import org.jboss.shrinkwrap.api.Assignable;
+import org.jboss.shrinkwrap.api.Configuration;
import org.jboss.shrinkwrap.api.Filter;
import org.jboss.shrinkwrap.api.Filters;
import org.jboss.shrinkwrap.api.Node;
-import org.jboss.shrinkwrap.api.Configuration;
import org.jboss.shrinkwrap.api.asset.Asset;
import org.jboss.shrinkwrap.api.formatter.Formatter;
import org.jboss.shrinkwrap.api.formatter.Formatters;
@@ -293,6 +293,29 @@
/**
* {@inheritDoc}
+ * @see org.jboss.shrinkwrap.api.Archive#merge(org.jboss.shrinkwrap.api.Archive, java.lang.String, org.jboss.shrinkwrap.api.Filter)
+ */
+ @Override
+ public T merge(final Archive<?> source, final String path, final Filter<ArchivePath> filter)
+ throws IllegalArgumentException
+ {
+ Validate.notNull(path, "path must be specified");
+ return this.merge(source, ArchivePaths.create(path), filter);
+ }
+
+ /**
+ * {@inheritDoc}
+ * @see org.jboss.shrinkwrap.api.Archive#merge(org.jboss.shrinkwrap.api.Archive, java.lang.String)
+ */
+ @Override
+ public T merge(final Archive<?> source, final String path) throws IllegalArgumentException
+ {
+ Validate.notNull(path, "path must be specified");
+ return this.merge(source, ArchivePaths.create(path));
+ }
+
+ /**
+ * {@inheritDoc}
* @see org.jboss.shrinkwrap.api.Archive#merge(org.jboss.shrinkwrap.api.Archive, org.jboss.shrinkwrap.api.Path, org.jboss.shrinkwrap.api.Filter)
*/
@Override
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 2010-05-30 04:33:12 UTC (rev 4461)
+++ shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/container/ContainerBase.java 2010-05-30 15:18:35 UTC (rev 4462)
@@ -238,6 +238,29 @@
return covarientReturn();
}
+ /**
+ * {@inheritDoc}
+ * @see org.jboss.shrinkwrap.api.Archive#merge(org.jboss.shrinkwrap.api.Archive, java.lang.String, org.jboss.shrinkwrap.api.Filter)
+ */
+ @Override
+ public T merge(final Archive<?> source, final String path, final Filter<ArchivePath> filter)
+ throws IllegalArgumentException
+ {
+ archive.merge(source, path, filter);
+ return covarientReturn();
+ }
+
+ /**
+ * {@inheritDoc}
+ * @see org.jboss.shrinkwrap.api.Archive#merge(org.jboss.shrinkwrap.api.Archive, java.lang.String)
+ */
+ @Override
+ public T merge(final Archive<?> source, final String path) throws IllegalArgumentException
+ {
+ archive.merge(source, path);
+ return covarientReturn();
+ }
+
/* (non-Javadoc)
* @see org.jboss.shrinkwrap.api.Archive#add(org.jboss.shrinkwrap.api.Asset, java.lang.String)
*/
Modified: shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/path/BasicPath.java
===================================================================
--- shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/path/BasicPath.java 2010-05-30 04:33:12 UTC (rev 4461)
+++ shrinkwrap/trunk/impl-base/src/main/java/org/jboss/shrinkwrap/impl/base/path/BasicPath.java 2010-05-30 15:18:35 UTC (rev 4462)
@@ -22,8 +22,6 @@
import org.jboss.shrinkwrap.api.ArchivePath;
/**
- * BasicPath
- *
* A Path which may be optionally prefixed with some common
* namespace context at construction time. Thread-safe.
*
@@ -105,6 +103,18 @@
{
this(basePath.get(), context);
}
+
+ /**
+ * Creates a new Path using the specified base
+ * and specified relative context.
+ *
+ * @param basePath
+ * @param context
+ */
+ public BasicPath(final String basePath, final ArchivePath context)
+ {
+ this(basePath, context.get());
+ }
/**
* Creates a new Path using the specified base
Modified: shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/path/BasicPathTestCase.java
===================================================================
--- shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/path/BasicPathTestCase.java 2010-05-30 04:33:12 UTC (rev 4461)
+++ shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/path/BasicPathTestCase.java 2010-05-30 15:18:35 UTC (rev 4462)
@@ -86,4 +86,14 @@
return new BasicPath(base, context);
}
+ /**
+ * {@inheritDoc}
+ * @see org.jboss.shrinkwrap.impl.base.path.PathsTestBase#createPath(java.lang.String, org.jboss.shrinkwrap.api.ArchivePath)
+ */
+ @Override
+ ArchivePath createPath(final String base, final ArchivePath context)
+ {
+ return new BasicPath(base, context);
+ }
+
}
Modified: shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/path/PathsTestBase.java
===================================================================
--- shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/path/PathsTestBase.java 2010-05-30 04:33:12 UTC (rev 4461)
+++ shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/path/PathsTestBase.java 2010-05-30 15:18:35 UTC (rev 4462)
@@ -82,6 +82,16 @@
* @throws IllegalArgumentException If the context or base is not specified
*/
abstract ArchivePath createPath(final String base, final String context);
+
+ /**
+ * Creates and returns a new {@link ArchivePath}
+ * with the specified context and base
+ *
+ * @param base Parent context
+ * @param context Context to assign the Path
+ * @throws IllegalArgumentException If the context or base is not specified
+ */
+ abstract ArchivePath createPath(final String base, final ArchivePath context);
//-------------------------------------------------------------------------------------||
// Tests ------------------------------------------------------------------------------||
@@ -198,7 +208,32 @@
Assert.assertEquals("Context under base should resolve to relative", expected, resolved);
log.info("\"" + context + "\" under base " + basePath + " resolves to: " + path);
}
+
+ /**
+ * Ensures that a new path may be created from a
+ * context (as {@link ArchivePath}) under a specified base path
+ * (as String)
+ */
+ @Test
+ public void testBasePathAsStringAndRelativeContext()
+ {
+ // Log
+ log.info("testBasePathAsStringAndRelativeContext");
+ // Create a base path
+ final String base = "base";
+
+ // Create a new path using a relative context to the base
+ final ArchivePath context = this.createPath("context");
+ final ArchivePath path = this.createPath(base, context);
+
+ // Ensure expected
+ final String resolved = path.get();
+ final String expected = PathUtil.SLASH + base + context.get();
+ Assert.assertEquals("Context under base should resolve to relative", expected, resolved);
+ log.info("\"" + context + "\" under base " + base + " resolves to: " + path);
+ }
+
/**
* Ensures that a new path may be created from a
* context (as String) under a specified base path (which is represented
Modified: shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/path/PathsTestCase.java
===================================================================
--- shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/path/PathsTestCase.java 2010-05-30 04:33:12 UTC (rev 4461)
+++ shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/path/PathsTestCase.java 2010-05-30 15:18:35 UTC (rev 4462)
@@ -86,4 +86,14 @@
{
return ArchivePaths.create(base, context);
}
+
+ /**
+ * {@inheritDoc}
+ * @see org.jboss.shrinkwrap.impl.base.path.PathsTestBase#createPath(java.lang.String, org.jboss.shrinkwrap.api.ArchivePath)
+ */
+ @Override
+ ArchivePath createPath(final String base, final ArchivePath context)
+ {
+ return ArchivePaths.create(base, context);
+ }
}
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 2010-05-30 04:33:12 UTC (rev 4461)
+++ shrinkwrap/trunk/impl-base/src/test/java/org/jboss/shrinkwrap/impl/base/test/ArchiveTestBase.java 2010-05-30 15:18:35 UTC (rev 4462)
@@ -712,7 +712,39 @@
Assert.assertTrue("Asset should have been added to path: " + expectedPathTwo.getClass(), this.compareAssets(
nodeTwo.getAsset(), assetTwo));
}
+
+ /**
+ * Ensure merging content from another archive to a path successfully stores all assets to specific path
+ * @throws Exception
+ */
+ @Test
+ public void testMergeToStringPath() throws Exception
+ {
+ Archive<T> archive = getArchive();
+ Archive<T> sourceArchive = createNewArchive();
+ ArchivePath location = new BasicPath("/", "test.properties");
+ ArchivePath locationTwo = new BasicPath("/", "test2.properties");
+ Asset asset = new ClassLoaderAsset(NAME_TEST_PROPERTIES);
+ Asset assetTwo = new ClassLoaderAsset(NAME_TEST_PROPERTIES_2);
+ sourceArchive.add(asset, location).add(assetTwo, locationTwo);
+
+ String baseLocation = "somewhere";
+
+ archive.merge(sourceArchive, baseLocation);
+
+ ArchivePath expectedPath = new BasicPath(baseLocation, location);
+ ArchivePath expectedPathTwo = new BasicPath(baseLocation, locationTwo);
+
+ Node nodeOne = archive.get(expectedPath);
+ Node nodeTwo = archive.get(expectedPathTwo);
+
+ Assert.assertTrue("Asset should have been added to path: " + expectedPath.get(), this.compareAssets(nodeOne.getAsset(), asset));
+
+ Assert.assertTrue("Asset should have been added to path: " + expectedPathTwo.getClass(), this.compareAssets(
+ nodeTwo.getAsset(), assetTwo));
+ }
+
/**
* Ensure that the filter is used when merging.
* @throws Exception
@@ -744,7 +776,39 @@
"Asset should have been added to path: " + expectedPath.get(),
this.compareAssets(archive.get(expectedPath).getAsset(), asset));
}
+
+ /**
+ * Ensure that the filter is used when merging.
+ * @throws Exception
+ */
+ @Test
+ public void testMergeToStringPathWithFilter() throws Exception
+ {
+ Archive<?> archive = getArchive();
+ Archive<T> sourceArchive = createNewArchive();
+ ArchivePath location = new BasicPath("/", "test.properties");
+ ArchivePath locationTwo = new BasicPath("/", "test2.properties");
+ Asset asset = new ClassLoaderAsset(NAME_TEST_PROPERTIES);
+ Asset assetTwo = new ClassLoaderAsset(NAME_TEST_PROPERTIES_2);
+ sourceArchive.add(asset, location).add(assetTwo, locationTwo);
+
+ String baseLocation = "somewhere";
+
+ archive.merge(sourceArchive, baseLocation, Filters.include(".*test2.*"));
+
+ Assert.assertEquals(
+ "Should only have merged 1",
+ 1,
+ numAssets(archive));
+
+ ArchivePath expectedPath = new BasicPath(baseLocation, locationTwo);
+
+ Assert.assertTrue(
+ "Asset should have been added to path: " + expectedPath.get(),
+ this.compareAssets(archive.get(expectedPath).getAsset(), asset));
+ }
+
/**
* Ensure that the filter is used when merging.
* @throws Exception
More information about the jboss-svn-commits
mailing list