You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2014/02/19 01:17:29 UTC

svn commit: r1569571 - in /jackrabbit/commons/filevault/trunk: vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/ vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ vault-core/src/test/resources/org/apache/jackrabbit/v...

Author: tripod
Date: Wed Feb 19 00:17:29 2014
New Revision: 1569571

URL: http://svn.apache.org/r1569571
Log:
JCRVLT-31 Packages defined by a stream are copied to a file first

- enable hook tests
- generate proper systemid for memory archive

Modified:
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/MemoryArchive.java
    jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestPackageInstall.java
    jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/external_hook.zip
    jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/test_hook.zip
    jackrabbit/commons/filevault/trunk/vault-hook-example/src/main/java/org/apache/jackrabbit/vault/packaging/hooks/ExampleHook.java

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/MemoryArchive.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/MemoryArchive.java?rev=1569571&r1=1569570&r2=1569571&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/MemoryArchive.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/MemoryArchive.java Wed Feb 19 00:17:29 2014
@@ -59,7 +59,7 @@ public class MemoryArchive extends Abstr
 
     public MemoryArchive(boolean metaOnly) throws IOException {
         this.cacheMetaOnly = metaOnly;
-        root = new VirtualEntry("", 0, null);
+        root = new VirtualEntry(null, "", 0, null);
         inf = new DefaultMetaInf();
     }
 
@@ -156,6 +156,16 @@ public class MemoryArchive extends Abstr
         }
         return new VaultInputSource() {
 
+            @Override
+            public String getSystemId() {
+                String systemId = super.getSystemId();
+                if (systemId == null) {
+                    systemId = ve.getPath();
+                    setSystemId(systemId);
+                }
+                return systemId;
+            }
+
             public InputStream getByteStream() {
                 return ve.data == null ? null : new ByteArrayInputStream(ve.data);
             }
@@ -190,6 +200,8 @@ public class MemoryArchive extends Abstr
 
     private static class VirtualEntry implements Entry {
 
+        private final VirtualEntry parent;
+
         private final String name;
 
         private final long time;
@@ -198,7 +210,8 @@ public class MemoryArchive extends Abstr
 
         private Map<String, VirtualEntry> children;
 
-        private VirtualEntry(String name, long time, byte[] data) {
+        private VirtualEntry(VirtualEntry parent, String name, long time, byte[] data) {
+            this.parent = parent;
             this.name = name;
             this.time = time;
             this.data = data;
@@ -208,6 +221,14 @@ public class MemoryArchive extends Abstr
             return name;
         }
 
+        public String getPath() {
+            return getPath(new StringBuilder()).toString();
+        }
+
+        private StringBuilder getPath(StringBuilder sb) {
+            return parent == null ? sb : parent.getPath(sb).append('/').append(name);
+        }
+
         public boolean isDirectory() {
             return data == null;
         }
@@ -227,7 +248,7 @@ public class MemoryArchive extends Abstr
                     return ret;
                 }
             }
-            VirtualEntry ve = new VirtualEntry(name, time, data);
+            VirtualEntry ve = new VirtualEntry(this, name, time, data);
             if (children == null) {
                 children = new LinkedHashMap<String, VirtualEntry>();
             }

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestPackageInstall.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestPackageInstall.java?rev=1569571&r1=1569570&r2=1569571&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestPackageInstall.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestPackageInstall.java Wed Feb 19 00:17:29 2014
@@ -23,12 +23,14 @@ import java.io.IOException;
 import javax.jcr.RepositoryException;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.vault.packaging.InstallContext;
 import org.apache.jackrabbit.vault.packaging.JcrPackage;
 import org.apache.jackrabbit.vault.packaging.PackageException;
 import org.apache.tika.io.IOUtils;
 import org.junit.Test;
 
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 /**
@@ -127,13 +129,34 @@ public class TestPackageInstall extends 
      */
     @Test
     public void testHook() throws RepositoryException, IOException, PackageException {
-        // Disabled for now, since the bundled package contains a hook that still contain classes
-        // compiled the com.day.jcr.vault.*
+        if (admin.nodeExists("/testroot")) {
+            admin.getNode("/testroot").remove();
+        }
+        admin.getRootNode().addNode("testroot", "nt:unstructured").addNode("testnode", "nt:unstructured");
+        admin.save();
+        JcrPackage pack = packMgr.upload(getStream("testpackages/test_hook.zip"), false);
+        assertNotNull(pack);
+        pack.install(getDefaultOptions());
+        assertTrue(admin.propertyExists("/testroot/hook-example"));
+    }
 
-//        JcrPackage pack = packMgr.upload(getStream("testpackages/test_hook.zip"), false);
-//        assertNotNull(pack);
-//        pack.install(getDefaultOptions());
-//        assertProperty("/testroot/TestHook", InstallContext.Phase.INSTALLED.toString());
+    /**
+     * Installs a package with an install hook
+     */
+    @Test
+    public void testHookFail() throws RepositoryException, IOException, PackageException {
+        if (admin.nodeExists("/testroot")) {
+            admin.getNode("/testroot").remove();
+        }
+        admin.save();
+        JcrPackage pack = packMgr.upload(getStream("testpackages/test_hook.zip"), false);
+        assertNotNull(pack);
+        try {
+            pack.install(getDefaultOptions());
+            fail("installing failing hook should fail");
+        } catch (PackageException e) {
+            // ok
+        }
     }
 
     /**
@@ -157,22 +180,18 @@ public class TestPackageInstall extends 
      */
     @Test
     public void testExternalHook() throws RepositoryException, IOException, PackageException {
-        // Disabled for now, since the bundled package contains a hook that still contain classes
-        // compiled the com.day.jcr.vault.*
+        if (!admin.nodeExists("/testroot")) {
+            admin.getRootNode().addNode("testroot", "nt:unstructured");
+            admin.save();
+        }
+
+        JcrPackage pack = packMgr.upload(getStream("testpackages/external_hook.zip"), false);
+        assertNotNull(pack);
 
+        pack.install(getDefaultOptions());
 
-//        if (!admin.nodeExists("/testroot")) {
-//            admin.getRootNode().addNode("testroot", "nt:unstructured");
-//            admin.save();
-//        }
-//
-//        JcrPackage pack = packMgr.upload(getStream("testpackages/external_hook.zip"), false);
-//        assertNotNull(pack);
-//
-//        pack.install(getDefaultOptions());
-//
-//        assertProperty("/testroot/TestHook1", InstallContext.Phase.END.toString());
-//        assertProperty("/testroot/TestHook2", InstallContext.Phase.END.toString());
+        assertProperty("/testroot/TestHook1", InstallContext.Phase.END.toString());
+        assertProperty("/testroot/TestHook2", InstallContext.Phase.END.toString());
     }
 
     /**

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/external_hook.zip
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/external_hook.zip?rev=1569571&r1=1569570&r2=1569571&view=diff
==============================================================================
Binary files - no diff available.

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/test_hook.zip
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/test_hook.zip?rev=1569571&r1=1569570&r2=1569571&view=diff
==============================================================================
Binary files - no diff available.

Modified: jackrabbit/commons/filevault/trunk/vault-hook-example/src/main/java/org/apache/jackrabbit/vault/packaging/hooks/ExampleHook.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-hook-example/src/main/java/org/apache/jackrabbit/vault/packaging/hooks/ExampleHook.java?rev=1569571&r1=1569570&r2=1569571&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-hook-example/src/main/java/org/apache/jackrabbit/vault/packaging/hooks/ExampleHook.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-hook-example/src/main/java/org/apache/jackrabbit/vault/packaging/hooks/ExampleHook.java Wed Feb 19 00:17:29 2014
@@ -60,10 +60,10 @@ public class ExampleHook implements Inst
                     doInstallFailed(ctx);
                     break;
                 case PREPARE:
-                    doPreprare(ctx);
+                    doPrepare(ctx);
                     break;
                 case PREPARE_FAILED:
-                    doPreprareFailed(ctx);
+                    doPrepareFailed(ctx);
                     break;
             }
         } catch (RepositoryException e) {
@@ -71,7 +71,7 @@ public class ExampleHook implements Inst
         }
     }
 
-    private void doPreprare(InstallContext ctx) throws PackageException, RepositoryException {
+    private void doPrepare(InstallContext ctx) throws PackageException, RepositoryException {
         // read the properties from the package
         Properties props = ctx.getPackage().getMetaInf().getProperties();
         String copyFrom = props.getProperty(PROP_COPY_FROM, "");
@@ -92,7 +92,7 @@ public class ExampleHook implements Inst
 
     }
 
-    private void doPreprareFailed(InstallContext ctx) {
+    private void doPrepareFailed(InstallContext ctx) {
         // this is invoked when any of the hooks (including our self) threw a
         // package exception during prepare
     }