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 2018/11/14 04:59:05 UTC

svn commit: r1846564 - in /jackrabbit/commons/filevault/trunk/vault-core/src: main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSPackageRegistry.java test/java/org/apache/jackrabbit/vault/packaging/integration/TestFSPackageRegistry.java

Author: tripod
Date: Wed Nov 14 04:59:05 2018
New Revision: 1846564

URL: http://svn.apache.org/viewvc?rev=1846564&view=rev
Log:
JCRVLT-322 FSPackageRegistry bug in checking filepath for already existing package (closes #39)

Modified:
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSPackageRegistry.java
    jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestFSPackageRegistry.java

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSPackageRegistry.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSPackageRegistry.java?rev=1846564&r1=1846563&r2=1846564&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSPackageRegistry.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSPackageRegistry.java Wed Nov 14 04:59:05 2018
@@ -20,6 +20,7 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collection;
@@ -519,8 +520,9 @@ public class FSPackageRegistry extends A
     @Nonnull
     @Override
     public PackageId registerExternal(@Nonnull File file, boolean replace) throws IOException, PackageExistsException {
-        if (!replace && pathIdMapping.containsKey(file.getPath())) {
-            throw new PackageExistsException("Package already exists: " + pathIdMapping.get(file.getPath()));
+        if (!replace && pathIdMapping.containsKey(file.toPath())) {
+            PackageId pid = pathIdMapping.get(file.toPath());
+            throw new PackageExistsException("Package already exists: " + pid).setId(pid);
         }
         ZipVaultPackage pack = new ZipVaultPackage(file, false, true);
         try {

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestFSPackageRegistry.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestFSPackageRegistry.java?rev=1846564&r1=1846563&r2=1846564&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestFSPackageRegistry.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestFSPackageRegistry.java Wed Nov 14 04:59:05 2018
@@ -196,7 +196,7 @@ public class TestFSPackageRegistry exten
     }
     
     /**
-     * registers a file as external package twice (replace = true)
+     * registers a file as external package twice (replace = false)
      */
     @Test
     public void testRegisterExternalFileTwiceFails() throws IOException, PackageException {
@@ -218,9 +218,36 @@ public class TestFSPackageRegistry exten
             assertEquals("colliding pid must be correct", id, e.getId());
         }
     }
+    
+    /**
+     * registers a file as external package twice with 
+     */
+    @Test
+    public void testRegisterExternalFileTwiceFailsLoadedRegistry() throws IOException, PackageException {
+        File file = getTempFile("testpackages/tmp.zip");
+        PackageId id = registry.registerExternal(file, false);
+        assertEquals("package id", TMP_PACKAGE_ID, id);
+
+        try (RegisteredPackage pkg = registry.open(id)) {
+            assertEquals("package id of registered is correct", TMP_PACKAGE_ID, pkg.getId());
+            assertFalse("Package is not installed", pkg.isInstalled());
+        }
+        
+        // loading registry again to force loading of metadata from files
+        registry = new FSPackageRegistry(DIR_REGISTRY_HOME);
+        
+        try {
+            registry.registerExternal(file, false);
+            fail("registering the package twice should fail");
+        } catch (PackageExistsException e) {
+            // expected
+            assertEquals("colliding pid must be correct", id, e.getId());
+        }
+    }
+
 
     /**
-     * registers a file as external package twice (replace = true)
+     * registers a file as external package twice (replace = false)
      */
     @Test
     public void testRegisterExternalFileTwiceSucceeds() throws IOException, PackageException {