You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by un...@apache.org on 2012/06/12 08:41:27 UTC
svn commit: r1349138 - in /rave/sandbox/content-services/rave-jcr-config/src:
main/java/org/apache/rave/jcr/importing/ResourceImporter.java
test/java/org/apache/rave/jcr/importing/ResourceImporterTest.java
Author: unico
Date: Tue Jun 12 06:41:27 2012
New Revision: 1349138
URL: http://svn.apache.org/viewvc?rev=1349138&view=rev
Log:
RAVE-603 also single file resources should be able to be imported
Modified:
rave/sandbox/content-services/rave-jcr-config/src/main/java/org/apache/rave/jcr/importing/ResourceImporter.java
rave/sandbox/content-services/rave-jcr-config/src/test/java/org/apache/rave/jcr/importing/ResourceImporterTest.java
Modified: rave/sandbox/content-services/rave-jcr-config/src/main/java/org/apache/rave/jcr/importing/ResourceImporter.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-jcr-config/src/main/java/org/apache/rave/jcr/importing/ResourceImporter.java?rev=1349138&r1=1349137&r2=1349138&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-jcr-config/src/main/java/org/apache/rave/jcr/importing/ResourceImporter.java (original)
+++ rave/sandbox/content-services/rave-jcr-config/src/main/java/org/apache/rave/jcr/importing/ResourceImporter.java Tue Jun 12 06:41:27 2012
@@ -56,22 +56,28 @@ public class ResourceImporter {
* @throws RepositoryException when an error occurs while reading or writing JCR nodes
* @throws ImportException when there is a conflict between the resource to be imported and the existing content in the repository
*/
- public void importResource(final String parentPath, final String resourcePath, final InputStream is, final ImportBehavior importBehavior) throws IOException, RepositoryException, ImportException {
+ public void importResource(final String parentPath, String resourcePath, final InputStream is, final ImportBehavior importBehavior) throws IOException, RepositoryException, ImportException {
+ resourcePath = resourcePath.equals("/") ? "" : resourcePath;
ZipInputStream zis = new ZipInputStream(is);
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
- if (entry.getName().startsWith(resourcePath)) {
+ if (entry.getName().startsWith(resourcePath + "/") || (!entry.isDirectory() && entry.getName().equals(resourcePath))) {
final String name = entry.getName().lastIndexOf('/') == entry.getName().length()-1 ? entry.getName().substring(0, entry.getName().length()-1) : entry.getName();
- if (!name.equals(resourcePath)) {
- final String relPath = resourcePath.isEmpty() ? name : name.substring(resourcePath.length()+1);
- final String nodePath = parentPath.equals("/") ? parentPath + relPath : parentPath + "/" + relPath;
- if (entry.isDirectory()) {
- if (!createFolderNode(nodePath, importBehavior)) {
- return;
- }
- } else {
- createResourceNode(nodePath, entry, zis, importBehavior);
+ String relPath;
+ if (resourcePath.isEmpty()) {
+ relPath = name;
+ } else if (resourcePath.equals(name)) {
+ relPath = name.substring(name.lastIndexOf('/')+1);
+ } else {
+ relPath = name.substring(resourcePath.length()+1);
+ }
+ final String nodePath = parentPath.equals("/") ? parentPath + relPath : parentPath + "/" + relPath;
+ if (entry.isDirectory()) {
+ if (!createFolderNode(nodePath, importBehavior)) {
+ return;
}
+ } else {
+ createResourceNode(nodePath, entry, zis, importBehavior);
}
}
}
Modified: rave/sandbox/content-services/rave-jcr-config/src/test/java/org/apache/rave/jcr/importing/ResourceImporterTest.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-jcr-config/src/test/java/org/apache/rave/jcr/importing/ResourceImporterTest.java?rev=1349138&r1=1349137&r2=1349138&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-jcr-config/src/test/java/org/apache/rave/jcr/importing/ResourceImporterTest.java (original)
+++ rave/sandbox/content-services/rave-jcr-config/src/test/java/org/apache/rave/jcr/importing/ResourceImporterTest.java Tue Jun 12 06:41:27 2012
@@ -62,6 +62,16 @@ public class ResourceImporterTest extend
checkNodes();
}
+ public void testImportFileResource() throws Exception {
+ ResourceImporter resourceImporter = new ResourceImporter(session, new TestMimeTypeResolver());
+ InputStream is = Thread.currentThread().getContextClassLoader().getResource("resources.jar").openStream();
+ resourceImporter.importResource("/testroot", "resources/images/blank.gif", is, null);
+
+ assertTrue(session.nodeExists("/testroot/blank.gif"));
+ final Node gif = session.getNode("/testroot/blank.gif");
+ assertTrue(gif.isNodeType("nt:file"));
+ }
+
private void checkNodes() throws RepositoryException {
assertTrue(session.nodeExists("/testroot/empty.html"));
final Node html = session.getNode("/testroot/empty.html");