Author: mpetria
Date: Thu Jan 14 14:42:19 2016
New Revision: 1724625
URL: http://svn.apache.org/viewvc?rev=1724625&view=rev
Log:
SLING-5429: do not require root access for storing jcr packages
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/JcrVaultDistributionPackageBuilder.java
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/JcrVaultDistributionPackageBuilder.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/JcrVaultDistributionPackageBuilder.java?rev=1724625&r1=1724624&r2=1724625&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/JcrVaultDistributionPackageBuilder.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/JcrVaultDistributionPackageBuilder.java
Thu Jan 14 14:42:19 2016
@@ -86,7 +86,7 @@ public class JcrVaultDistributionPackage
this.importMode = importMode;
this.aclHandling = aclHandling;
this.packageRoots = packageRoots;
- this.tempPackagesNode = AbstractDistributionPackage.PACKAGES_ROOT +
"/" + type + "/data";
+ this.tempPackagesNode = type + "/data";
this.tempDirectory = VltUtils.getTempFolder(tempFilesFolder);
this.filters = VltUtils.parseFilters(filterRules);
@@ -193,24 +193,20 @@ public class JcrVaultDistributionPackage
try {
- if (packageRoot != null) {
- String packageName = packageId.getDownloadName();
- if (packageRoot.hasNode(packageName)) {
- packageRoot.getNode(packageName).remove();
- }
-
- JcrPackage jcrPackage = packageManager.create(packageRoot,
packageName);
- Property data = jcrPackage.getData();
- data.setValue(in);
- JcrPackageDefinition def = jcrPackage.getDefinition();
- def.unwrap(pack, true, false);
-
- log.debug("package uploaded to {}",
jcrPackage.getNode().getPath());
-
- return jcrPackage;
- } else {
- return packageManager.upload(in, true);
+ String packageName = packageId.getDownloadName();
+ if (packageRoot.hasNode(packageName)) {
+ packageRoot.getNode(packageName).remove();
}
+
+ JcrPackage jcrPackage = packageManager.create(packageRoot,
packageName);
+ Property data = jcrPackage.getData();
+ data.setValue(in);
+ JcrPackageDefinition def = jcrPackage.getDefinition();
+ def.unwrap(pack, true, false);
+
+ log.debug("package uploaded to {}",
jcrPackage.getNode().getPath());
+
+ return jcrPackage;
} finally {
IOUtils.closeQuietly(in);
}
@@ -223,12 +219,8 @@ public class JcrVaultDistributionPackage
Node packageRoot = getPackageRoot(session);
PackageId packageId = new PackageId(PACKAGE_GROUP, packageName,
VERSION);
- if (packageRoot != null) {
- Node packageNode =
packageRoot.getNode(packageId.getDownloadName());
- return packageManager.open(packageNode);
- } else {
- return packageManager.open(packageId);
- }
+ Node packageNode = packageRoot.getNode(packageId.getDownloadName());
+ return packageManager.open(packageNode);
}
private PackageId getPackageId(VaultPackage vaultPackage) {
@@ -242,10 +234,11 @@ public class JcrVaultDistributionPackage
}
private Node getPackageRoot(Session session) throws RepositoryException {
- Node packageRoot = null;
- if (tempPackagesNode != null) {
- packageRoot = JcrUtils.getOrCreateByPath(tempPackagesNode,
"sling:Folder", "sling:Folder", session, true);
+ Node tempRoot =
JcrUtils.getNodeIfExists(AbstractDistributionPackage.PACKAGES_ROOT, session);
+ if (tempPackagesNode != null && tempRoot != null) {
+ return JcrUtils.getOrCreateByPath(tempRoot, tempPackagesNode,
false, "sling:Folder", "sling:Folder", true);
}
- return packageRoot;
+
+ throw new RepositoryException("Cannot read "+
AbstractDistributionPackage.PACKAGES_ROOT);
}
}