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 {