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/08/06 11:53:08 UTC
svn commit: r1837508 - in
/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl:
FSPackageRegistry.java FSRegisteredPackage.java
Author: tripod
Date: Mon Aug 6 11:53:08 2018
New Revision: 1837508
URL: http://svn.apache.org/viewvc?rev=1837508&view=rev
Log:
JCRVLT-313 Avoid opening VaultPackage to get RegisteredPackage in FSRegistry
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/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSRegisteredPackage.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=1837508&r1=1837507&r2=1837508&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 Mon Aug 6 11:53:08 2018
@@ -183,12 +183,8 @@ public class FSPackageRegistry extends A
@Nullable
@Override
public RegisteredPackage open(@Nonnull PackageId id) throws IOException {
- try {
- File pkg = getPackageFile(id);
- return pkg != null && pkg.exists() ? new FSRegisteredPackage(this, open(pkg)) : null;
- } catch (RepositoryException e) {
- throw new IOException(e);
- }
+ FSInstallState state = getInstallState(id);
+ return FSPackageStatus.NOTREGISTERED != state.getStatus() ? new FSRegisteredPackage(this, state) : null;
}
@Override
@@ -229,14 +225,18 @@ public class FSPackageRegistry extends A
}
/**
- * {@inheritDoc}
+ * Opens the package of the given file.
+ * @param pkg Package file.
+ * @return the package
+ * @throws IOException if an I/O error occurrs.
*/
- public VaultPackage open(File pkg) throws RepositoryException {
+ @Nonnull
+ protected VaultPackage open(File pkg) throws IOException {
try {
return new ZipVaultPackage(pkg, false, true);
} catch (IOException e) {
log.error("Cloud not open file {} as ZipVaultPackage.", pkg.getPath(), e);
- return null;
+ throw e;
}
}
@@ -331,8 +331,12 @@ public class FSPackageRegistry extends A
if (autoDependency != null) {
dependencies.add(autoDependency);
}
- setInstallState(pkg.getId(), FSPackageStatus.REGISTERED, pkgFile.toPath(), false, dependencies, subpackages,
- null);
+ FSInstallState state = new FSInstallState(pkg.getId(), FSPackageStatus.REGISTERED)
+ .withFilePath(pkgFile.toPath())
+ .withDependencies(dependencies)
+ .withSubPackages(subpackages)
+ .withExternal(false);
+ setInstallState(state);
return pkg.getId();
}
@@ -491,8 +495,13 @@ public class FSPackageRegistry extends A
}
Map<PackageId, SubPackageHandling.Option> subpackages = registerSubPackages(pack, replace);
FileUtils.copyFile(file, pkgFile);
- Collection<Dependency> dependencies = Arrays.asList(pack.getDependencies());
- setInstallState(pack.getId(), FSPackageStatus.REGISTERED, pkgFile.toPath(), false, new HashSet<>(dependencies), subpackages, null);
+ Set<Dependency> dependencies = new HashSet<>(Arrays.asList(pack.getDependencies()));
+ FSInstallState state = new FSInstallState(pack.getId(), FSPackageStatus.REGISTERED)
+ .withFilePath(pkgFile.toPath())
+ .withDependencies(dependencies)
+ .withSubPackages(subpackages)
+ .withExternal(false);
+ setInstallState(state);
return pack.getId();
} finally {
if (!pack.isClosed()) {
@@ -523,8 +532,13 @@ public class FSPackageRegistry extends A
}
}
Map<PackageId, SubPackageHandling.Option> subpackages = registerSubPackages(pack, replace);
- Collection<Dependency> dependencies = Arrays.asList(pack.getDependencies());
- setInstallState(pack.getId(), FSPackageStatus.REGISTERED, file.toPath(), true, new HashSet<>(dependencies), subpackages, null);
+ Set<Dependency> dependencies = new HashSet<>(Arrays.asList(pack.getDependencies()));
+ FSInstallState targetState = new FSInstallState(pack.getId(), FSPackageStatus.REGISTERED)
+ .withFilePath(file.toPath())
+ .withDependencies(dependencies)
+ .withSubPackages(subpackages)
+ .withExternal(true);
+ setInstallState(targetState);
return pack.getId();
} finally {
if (!pack.isClosed()) {
@@ -649,35 +663,29 @@ public class FSPackageRegistry extends A
if (FSPackageStatus.EXTRACTED == targetStatus) {
installTime = Calendar.getInstance().getTimeInMillis();
}
- setInstallState(pid, targetStatus, state.getFilePath(), state.isExternal(), state.getDependencies(), state.getSubPackages(), installTime);
+ FSInstallState targetState = new FSInstallState(pid, targetStatus)
+ .withFilePath(state.getFilePath())
+ .withDependencies(state.getDependencies())
+ .withSubPackages(state.getSubPackages())
+ .withInstallTime(installTime)
+ .withExternal(state.isExternal());
+ setInstallState(targetState);
}
/**
* Persists the installState to a metadatafile and adds current state to cache
- *
- * @param pid
- * @param targetStatus
- * @param filePath
- * @param external
- * @param dependencies
- * @param subPackages
- * @param installTimeStamp
+ * @param state
* @throws IOException
*/
- private void setInstallState(@Nonnull PackageId pid, @Nonnull FSPackageStatus targetStatus, @Nonnull Path filePath, @Nonnull boolean external, @Nullable Set<Dependency> dependencies, @Nullable Map<PackageId, SubPackageHandling.Option> subPackages, @Nullable Long installTimeStamp) throws IOException {
+ private void setInstallState(@Nonnull FSInstallState state) throws IOException {
+ PackageId pid = state.getPackageId();
File metaData = getPackageMetaDataFile(pid);
- if (targetStatus == FSPackageStatus.NOTREGISTERED) {
+ if (state.getStatus() == FSPackageStatus.NOTREGISTERED) {
pathIdMapping.remove(stateCache.get(pid).getFilePath());
metaData.delete();
stateCache.remove(pid);
} else {
- FSInstallState state = new FSInstallState(pid, targetStatus)
- .withFilePath(filePath)
- .withDependencies(dependencies)
- .withSubPackages(subPackages)
- .withInstallTime(installTimeStamp)
- .withExternal(external);
state.save(metaData);
stateCache.put(pid, state);
pathIdMapping.put(state.getFilePath(), pid);
Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSRegisteredPackage.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSRegisteredPackage.java?rev=1837508&r1=1837507&r2=1837508&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSRegisteredPackage.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSRegisteredPackage.java Mon Aug 6 11:53:08 2018
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.vault.packaging.registry.impl;
import java.io.IOException;
+import java.nio.file.Path;
import java.util.Calendar;
import javax.annotation.CheckForNull;
@@ -30,7 +31,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * {@code JcrRegisteredPackage}...
+ * Registry package based on the {@link FSPackageRegistry}.
*/
public class FSRegisteredPackage implements RegisteredPackage {
@@ -39,24 +40,33 @@ public class FSRegisteredPackage impleme
*/
private static final Logger log = LoggerFactory.getLogger(FSPackageRegistry.class);
+ private final FSPackageRegistry registry;
+
+ private final PackageId id;
+
+ private final Path filepath;
+
private VaultPackage vltPkg;
- private FSPackageRegistry registry;
- public FSRegisteredPackage(FSPackageRegistry registry, VaultPackage vltPkg) throws IOException, RepositoryException {
- this.vltPkg = vltPkg;
+ public FSRegisteredPackage(FSPackageRegistry registry, FSInstallState installState) throws IOException {
+ this.id = installState.getPackageId();
+ this.filepath = installState.getFilePath();
this.registry = registry;
}
@Nonnull
@Override
public PackageId getId() {
- return vltPkg.getId();
+ return this.id;
}
@Nonnull
@Override
public VaultPackage getPackage() throws IOException {
- return vltPkg;
+ if (this.vltPkg == null) {
+ this.vltPkg = registry.open(filepath.toFile());
+ }
+ return this.vltPkg;
}
@Override
@@ -95,8 +105,10 @@ public class FSRegisteredPackage impleme
@Override
public void close() {
- vltPkg.close();
- vltPkg = null;
+ if (vltPkg != null) {
+ vltPkg.close();
+ vltPkg = null;
+ }
}
@Override