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");