You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by mp...@apache.org on 2016/04/11 18:18:57 UTC
svn commit: r1738599 - in
/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution:
packaging/impl/importer/ serialization/ serialization/impl/
serialization/impl/vlt/
Author: mpetria
Date: Mon Apr 11 16:18:57 2016
New Revision: 1738599
URL: http://svn.apache.org/viewvc?rev=1738599&view=rev
Log:
SLING-5577: the local importer should install streams without persistening them
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporter.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/DistributionPackageBuilder.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/AbstractDistributionPackageBuilder.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/DistributionPackageBuilderFactory.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/FileDistributionPackageBuilder.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/ResourceDistributionPackageBuilder.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporter.java?rev=1738599&r1=1738598&r2=1738599&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporter.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporter.java Mon Apr 11 16:18:57 2016
@@ -62,20 +62,9 @@ public class LocalDistributionPackageImp
@Nonnull
public DistributionPackageInfo importStream(@Nonnull ResourceResolver resourceResolver, @Nonnull InputStream stream) throws DistributionException {
- DistributionPackage distributionPackage = null;
- try {
- distributionPackage = packageBuilder.readPackage(resourceResolver, stream);
+ DistributionPackageInfo packageInfo = packageBuilder.installPackage(resourceResolver, stream);
- boolean success = packageBuilder.installPackage(resourceResolver, distributionPackage);
-
- if (!success) {
- log.warn("could not install distribution package {}", distributionPackage.getId());
- }
-
- return distributionPackage.getInfo();
- } finally {
- DistributionPackageUtils.deleteSafely(distributionPackage);
- }
+ return packageInfo;
}
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/DistributionPackageBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/DistributionPackageBuilder.java?rev=1738599&r1=1738598&r2=1738599&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/DistributionPackageBuilder.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/DistributionPackageBuilder.java Mon Apr 11 16:18:57 2016
@@ -82,4 +82,16 @@ public interface DistributionPackageBuil
*/
boolean installPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage) throws DistributionException;
+
+ /**
+ * install a stream and returns the associated to a {@link DistributionPackageInfo} this provider can read and install
+ *
+ * @param resourceResolver resource resolver used to store the eventually created package
+ * @param stream the {@link InputStream} of the package to read
+ * @return a {@link DistributionPackage} if it can read it from the stream
+ * @throws DistributionException when the stream cannot be read as a {@link DistributionPackage}
+ */
+ @Nonnull
+ DistributionPackageInfo installPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull InputStream stream) throws DistributionException;
+
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/AbstractDistributionPackageBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/AbstractDistributionPackageBuilder.java?rev=1738599&r1=1738598&r2=1738599&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/AbstractDistributionPackageBuilder.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/AbstractDistributionPackageBuilder.java Mon Apr 11 16:18:57 2016
@@ -23,10 +23,12 @@ import javax.annotation.Nonnull;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import java.io.BufferedInputStream;
+import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
+import org.apache.commons.io.IOUtils;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.distribution.DistributionRequest;
import org.apache.sling.distribution.DistributionRequestType;
@@ -34,6 +36,7 @@ import org.apache.sling.distribution.com
import org.apache.sling.distribution.packaging.impl.DistributionPackageUtils;
import org.apache.sling.distribution.serialization.DistributionPackage;
import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
+import org.apache.sling.distribution.serialization.DistributionPackageInfo;
import org.apache.sling.distribution.serialization.impl.vlt.VltUtils;
import org.apache.sling.distribution.util.DistributionJcrUtils;
import org.slf4j.Logger;
@@ -118,12 +121,42 @@ public abstract class AbstractDistributi
// do nothing for test packages
installed = true;
} else if (DistributionRequestType.ADD.equals(actionType)) {
- installed = installPackageInternal(resourceResolver, distributionPackage);
+ installed = installAddPackage(resourceResolver, distributionPackage);
}
return installed;
}
+ @Nonnull
+ @Override
+ public DistributionPackageInfo installPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull InputStream stream) throws DistributionException {
+ if (!stream.markSupported()) {
+ stream = new BufferedInputStream(stream);
+ }
+ DistributionPackageInfo packageInfo = new DistributionPackageInfo(type);
+
+ DistributionPackageUtils.readInfo(stream, packageInfo);
+
+ DistributionPackage distributionPackage = SimpleDistributionPackage.fromStream(stream, type);
+
+ stream.mark(-1);
+
+ boolean installed;
+ // not a simple package
+ if (distributionPackage == null) {
+ installed = installPackageInternal(resourceResolver, stream);
+ } else {
+ installed = installPackage(resourceResolver, distributionPackage);
+ packageInfo.putAll(distributionPackage.getInfo());
+ }
+
+ if (installed) {
+ return packageInfo;
+ } else {
+ return null;
+ }
+ }
+
private boolean installDeletePackage(@Nonnull ResourceResolver resourceResolver, @CheckForNull DistributionPackage distributionPackage) throws DistributionException {
Session session = null;
try {
@@ -145,6 +178,22 @@ public abstract class AbstractDistributi
return false;
}
+
+ private boolean installAddPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage)
+ throws DistributionException {
+ InputStream inputStream = null;
+ try {
+ inputStream = distributionPackage.createInputStream();
+ return installPackageInternal(resourceResolver, inputStream);
+ } catch (IOException e) {
+ throw new DistributionException(e);
+ } finally {
+ IOUtils.closeQuietly(inputStream);
+ }
+
+ }
+
+
@CheckForNull
public DistributionPackage getPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull String id) {
DistributionPackage distributionPackage = SimpleDistributionPackage.fromIdString(id, type);
@@ -178,6 +227,8 @@ public abstract class AbstractDistributi
}
}
+
+
@CheckForNull
protected abstract DistributionPackage createPackageForAdd(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionRequest request)
throws DistributionException;
@@ -187,7 +238,7 @@ public abstract class AbstractDistributi
throws DistributionException;
- protected abstract boolean installPackageInternal(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage)
+ protected abstract boolean installPackageInternal(@Nonnull ResourceResolver resourceResolver, @Nonnull InputStream stream)
throws DistributionException;
@CheckForNull
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/DistributionPackageBuilderFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/DistributionPackageBuilderFactory.java?rev=1738599&r1=1738598&r2=1738599&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/DistributionPackageBuilderFactory.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/DistributionPackageBuilderFactory.java Mon Apr 11 16:18:57 2016
@@ -39,6 +39,7 @@ import org.apache.sling.distribution.com
import org.apache.sling.distribution.serialization.DistributionPackage;
import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
import org.apache.sling.distribution.serialization.DistributionContentSerializer;
+import org.apache.sling.distribution.serialization.DistributionPackageInfo;
/**
* A factory for package builders
@@ -125,4 +126,10 @@ public class DistributionPackageBuilderF
public boolean installPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage) throws DistributionException {
return packageBuilder.installPackage(resourceResolver, distributionPackage);
}
+
+ @Nonnull
+ @Override
+ public DistributionPackageInfo installPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull InputStream stream) throws DistributionException {
+ return packageBuilder.installPackage(resourceResolver, stream);
+ }
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/FileDistributionPackageBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/FileDistributionPackageBuilder.java?rev=1738599&r1=1738598&r2=1738599&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/FileDistributionPackageBuilder.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/FileDistributionPackageBuilder.java Mon Apr 11 16:18:57 2016
@@ -94,20 +94,18 @@ public class FileDistributionPackageBuil
}
@Override
- protected boolean installPackageInternal(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage)
+ protected boolean installPackageInternal(@Nonnull ResourceResolver resourceResolver, @Nonnull InputStream inputStream)
throws DistributionException {
- InputStream inputStream = null;
try {
- inputStream = distributionPackage.createInputStream();
distributionContentSerializer.importFromStream(resourceResolver, inputStream);
+
return true;
- } catch (IOException e) {
- throw new DistributionException(e);
} finally {
IOUtils.closeQuietly(inputStream);
}
}
+
@Override
protected DistributionPackage getPackageInternal(@Nonnull ResourceResolver resourceResolver, @Nonnull String id) {
return new FileDistributionPackage(new File(id), getType());
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/ResourceDistributionPackageBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/ResourceDistributionPackageBuilder.java?rev=1738599&r1=1738598&r2=1738599&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/ResourceDistributionPackageBuilder.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/ResourceDistributionPackageBuilder.java Mon Apr 11 16:18:57 2016
@@ -117,15 +117,12 @@ public class ResourceDistributionPackage
}
@Override
- protected boolean installPackageInternal(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage)
+ protected boolean installPackageInternal(@Nonnull ResourceResolver resourceResolver, @Nonnull InputStream inputStream)
throws DistributionException {
- InputStream inputStream = null;
try {
- inputStream = distributionPackage.createInputStream();
distributionContentSerializer.importFromStream(resourceResolver, inputStream);
+
return true;
- } catch (IOException e) {
- throw new DistributionException(e);
} finally {
IOUtils.closeQuietly(inputStream);
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java?rev=1738599&r1=1738598&r2=1738599&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java Mon Apr 11 16:18:57 2016
@@ -42,6 +42,7 @@ import org.apache.sling.distribution.com
import org.apache.sling.distribution.serialization.DistributionContentSerializer;
import org.apache.sling.distribution.serialization.DistributionPackage;
import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
+import org.apache.sling.distribution.serialization.DistributionPackageInfo;
import org.apache.sling.distribution.serialization.impl.FileDistributionPackageBuilder;
import org.apache.sling.distribution.serialization.impl.ResourceDistributionPackageBuilder;
@@ -181,4 +182,10 @@ public class VaultDistributionPackageBui
public boolean installPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage) throws DistributionException {
return packageBuilder.installPackage(resourceResolver, distributionPackage);
}
+
+ @Nonnull
+ @Override
+ public DistributionPackageInfo installPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull InputStream stream) throws DistributionException {
+ return packageBuilder.installPackage(resourceResolver, stream);
+ }
}