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);
     }
 }


Reply via email to