Author: mpetria
Date: Fri Dec 5 14:40:03 2014
New Revision: 1643296
URL: http://svn.apache.org/r1643296
Log:
SLING-4054: adding package builder based on jcr packages
Added:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/JcrVaultDistributionPackage.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/JcrVaultDistributionPackageBuilder.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java
Removed:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageBuilderFactory.java
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/component/impl/DistributionComponentUtils.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/ResourceSharedDistributionPackageBuilder.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackage.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageBuilder.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/UserCredentialsDistributionTransportSecretProvider.java
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageBuilderTest.java
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageTest.java
sling/trunk/contrib/extensions/distribution/it/pom.xml
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/org.apache.sling.distribution.serialization.impl.vlt.FileVaultDistributionPackageBuilderFactory-vlt.json
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/component/impl/DistributionComponentUtils.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/component/impl/DistributionComponentUtils.java?rev=1643296&r1=1643295&r2=1643296&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/component/impl/DistributionComponentUtils.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/component/impl/DistributionComponentUtils.java
Fri Dec 5 14:40:03 2014
@@ -37,7 +37,7 @@ import org.apache.sling.distribution.pac
import
org.apache.sling.distribution.packaging.impl.importer.LocalDistributionPackageImporterFactory;
import
org.apache.sling.distribution.packaging.impl.importer.RemoteDistributionPackageImporterFactory;
import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
-import
org.apache.sling.distribution.serialization.impl.vlt.FileVaultDistributionPackageBuilderFactory;
+import
org.apache.sling.distribution.serialization.impl.vlt.VaultDistributionPackageBuilderFactory;
import
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
import
org.apache.sling.distribution.transport.impl.UserCredentialsDistributionTransportSecretProvider;
import org.apache.sling.distribution.trigger.DistributionTrigger;
@@ -113,7 +113,9 @@ public class DistributionComponentUtils
registerFactory("importer", "local",
LocalDistributionPackageImporterFactory.class);
registerFactory("importer", "remote",
RemoteDistributionPackageImporterFactory.class);
- registerFactory("packageBuilder", "vlt",
FileVaultDistributionPackageBuilderFactory.class);
+ registerFactory("packageBuilder", "filevlt",
VaultDistributionPackageBuilderFactory.class);
+ registerFactory("packageBuilder", "jcrvlt",
VaultDistributionPackageBuilderFactory.class);
+
registerFactory("requestAuthorization", "privilege",
PrivilegeDistributionRequestAuthorizationStrategy.class);
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/ResourceSharedDistributionPackageBuilder.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/ResourceSharedDistributionPackageBuilder.java?rev=1643296&r1=1643295&r2=1643296&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/ResourceSharedDistributionPackageBuilder.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/ResourceSharedDistributionPackageBuilder.java
Fri Dec 5 14:40:03 2014
@@ -123,8 +123,15 @@ public class ResourceSharedDistributionP
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(PN_ORIGINAL_ID, distributionPackage.getId());
- properties.put(PN_ORIGINAL_REQUEST_TYPE,
distributionPackage.getInfo().getRequestType());
- properties.put(PN_ORIGINAL_PATHS,
distributionPackage.getInfo().getPaths());
+
+ // save the info just for debugging purposes
+ if (distributionPackage.getInfo().getRequestType() != null) {
+ properties.put(PN_ORIGINAL_REQUEST_TYPE,
distributionPackage.getInfo().getRequestType());
+
+ }
+ if (distributionPackage.getInfo().getPaths() != null) {
+ properties.put(PN_ORIGINAL_PATHS,
distributionPackage.getInfo().getPaths());
+ }
Resource resource = ResourceUtil.getOrCreateResource(resourceResolver,
packagePath, "sling:Folder", "sling:Folder", false);
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackage.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackage.java?rev=1643296&r1=1643295&r2=1643296&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackage.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackage.java
Fri Dec 5 14:40:03 2014
@@ -47,20 +47,9 @@ public class FileVaultDistributionPackag
public FileVaultDistributionPackage(VaultPackage pkg) {
this.pkg = pkg;
- MetaInf metaInf = pkg.getMetaInf();
- if (metaInf != null) {
- WorkspaceFilter filter = metaInf.getFilter();
- if (filter == null) {
- filter = new DefaultWorkspaceFilter();
- }
- List<PathFilterSet> filterSets = filter.getFilterSets();
- String[] paths = new String[filterSets.size()];
- for (int i = 0; i < paths.length; i++) {
- paths[i] = filterSets.get(i).getRoot();
- }
- this.getInfo().setPaths(paths);
- this.getInfo().setRequestType(DistributionRequestType.ADD);
- }
+ String[] paths = VltUtils.getPaths(pkg.getMetaInf());
+ this.getInfo().setPaths(paths);
+ this.getInfo().setRequestType(DistributionRequestType.ADD);
this.id = pkg.getFile().getAbsolutePath();
}
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageBuilder.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageBuilder.java?rev=1643296&r1=1643295&r2=1643296&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageBuilder.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageBuilder.java
Fri Dec 5 14:40:03 2014
@@ -58,7 +58,7 @@ public class FileVaultDistributionPackag
private static final String VERSION = "0.0.1";
- public static final String PACKAGING_TYPE = "vlt";
+ public static final String PACKAGING_TYPE = "filevlt";
private final Logger log = LoggerFactory.getLogger(getClass());
@@ -68,16 +68,11 @@ public class FileVaultDistributionPackag
private AccessControlHandling aclHandling;
- public FileVaultDistributionPackageBuilder(Packaging packaging) {
+ public FileVaultDistributionPackageBuilder(Packaging packaging, ImportMode
importMode, AccessControlHandling aclHandling) {
super(PACKAGING_TYPE);
this.packaging = packaging;
- }
-
- public FileVaultDistributionPackageBuilder(Packaging packaging, String
importMode, String aclHandling) {
- super(PACKAGING_TYPE);
- this.packaging = packaging;
- this.importMode = ImportMode.valueOf(importMode);
- this.aclHandling = AccessControlHandling.valueOf(aclHandling);
+ this.importMode = importMode;
+ this.aclHandling = aclHandling;
}
@Override
Added:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/JcrVaultDistributionPackage.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/JcrVaultDistributionPackage.java?rev=1643296&view=auto
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/JcrVaultDistributionPackage.java
(added)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/JcrVaultDistributionPackage.java
Fri Dec 5 14:40:03 2014
@@ -0,0 +1,79 @@
+package org.apache.sling.distribution.serialization.impl.vlt;
+
+import org.apache.jackrabbit.vault.packaging.JcrPackage;
+import org.apache.sling.distribution.communication.DistributionRequestType;
+import org.apache.sling.distribution.packaging.DistributionPackage;
+import
org.apache.sling.distribution.serialization.impl.AbstractDistributionPackage;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.annotation.Nonnull;
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import java.io.IOException;
+import java.io.InputStream;
+/**
+ * a JcrPackage based {@link
org.apache.sling.distribution.packaging.DistributionPackage}
+ */
+public class JcrVaultDistributionPackage extends AbstractDistributionPackage
implements DistributionPackage {
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+
+ private final String type;
+ private final JcrPackage jcrPackage;
+ private final Session session;
+
+ public JcrVaultDistributionPackage(String type, JcrPackage jcrPackage,
Session session) {
+ this.type = type;
+ this.jcrPackage = jcrPackage;
+ this.session = session;
+ String[] paths = new String[0];
+ try {
+ paths = VltUtils.getPaths(jcrPackage.getDefinition().getMetaInf());
+ } catch (Throwable e) {
+ log.error("cannot read paths", e);
+ }
+ this.getInfo().setPaths(paths);
+ this.getInfo().setRequestType(DistributionRequestType.ADD);
+
+ }
+
+ @Nonnull
+ public String getId() {
+ try {
+ return jcrPackage.getPackage().getId().getName();
+ } catch (RepositoryException e) {
+ e.printStackTrace(); //To change body of catch statement use File
| Settings | File Templates.
+ } catch (IOException e) {
+ e.printStackTrace(); //To change body of catch statement use File
| Settings | File Templates.
+ }
+
+ return null;
+ }
+
+ @Nonnull
+ public String getType() {
+ return type;
+ }
+
+ @Nonnull
+ public InputStream createInputStream() throws IOException {
+ try {
+ return jcrPackage.getData().getBinary().getStream();
+ } catch (RepositoryException e) {
+ e.printStackTrace(); //To change body of catch statement use File
| Settings | File Templates.
+ }
+ return null;
+ }
+
+ public void delete() {
+ Node node = jcrPackage.getNode();
+ try {
+ node.remove();
+ session.save();
+ } catch (RepositoryException e) {
+ e.printStackTrace(); //To change body of catch statement use File
| Settings | File Templates.
+ }
+ }
+}
Added:
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=1643296&view=auto
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/JcrVaultDistributionPackageBuilder.java
(added)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/JcrVaultDistributionPackageBuilder.java
Fri Dec 5 14:40:03 2014
@@ -0,0 +1,148 @@
+package org.apache.sling.distribution.serialization.impl.vlt;
+
+
+import org.apache.jackrabbit.vault.fs.api.ImportMode;
+import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
+import org.apache.jackrabbit.vault.fs.io.AccessControlHandling;
+import org.apache.jackrabbit.vault.fs.io.ImportOptions;
+import org.apache.jackrabbit.vault.packaging.JcrPackage;
+import org.apache.jackrabbit.vault.packaging.JcrPackageDefinition;
+import org.apache.jackrabbit.vault.packaging.JcrPackageManager;
+import org.apache.jackrabbit.vault.packaging.PackageId;
+import org.apache.jackrabbit.vault.packaging.Packaging;
+import org.apache.jackrabbit.vault.util.DefaultProgressListener;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.distribution.communication.DistributionRequest;
+import org.apache.sling.distribution.event.impl.DistributionEventFactory;
+import org.apache.sling.distribution.packaging.DistributionPackage;
+import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
+import
org.apache.sling.distribution.serialization.DistributionPackageBuildingException;
+import
org.apache.sling.distribution.serialization.DistributionPackageReadingException;
+import
org.apache.sling.distribution.serialization.impl.AbstractDistributionPackageBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jcr.Session;
+import java.io.InputStream;
+import java.util.UUID;
+/**
+ * a {@link
org.apache.sling.distribution.serialization.DistributionPackageBuilder}Â based
on Apache Jackrabbit FileVault.
+ * <p/>
+ * Each {@link org.apache.sling.distribution.packaging.DistributionPackage}Â
created by {@link JcrVaultDistributionPackageBuilder} is
+ * backed by a {@link org.apache.jackrabbit.vault.packaging.JcrPackage}.Â
+ */
+public class JcrVaultDistributionPackageBuilder extends
AbstractDistributionPackageBuilder implements
+ DistributionPackageBuilder {
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+
+ private static final String VERSION = "0.0.1";
+ private static final String PACKAGE_GROUP = "sling/distribution";
+
+ public static final String PACKAGING_TYPE = "jcrvlt";
+ private final Packaging packaging;
+ private ImportMode importMode;
+ private AccessControlHandling aclHandling;
+
+ public JcrVaultDistributionPackageBuilder(Packaging packaging, ImportMode
importMode, AccessControlHandling aclHandling) {
+ super(PACKAGING_TYPE);
+
+ this.packaging = packaging;
+
+ this.importMode = importMode;
+ this.aclHandling = aclHandling;
+ }
+
+ @Override
+ protected DistributionPackage createPackageForAdd(ResourceResolver
resourceResolver, DistributionRequest request) throws
DistributionPackageBuildingException {
+ Session session = null;
+ try {
+ session = getSession(resourceResolver);
+ JcrPackageManager packageManager =
packaging.getPackageManager(session);
+
+ final String[] paths = request.getPaths();
+ final boolean deep = request.isDeep();
+
+ String packageGroup = PACKAGE_GROUP;
+ String packageName = PACKAGING_TYPE + "_" +
System.currentTimeMillis() + "_" + UUID.randomUUID();
+
+
+ WorkspaceFilter filter = VltUtils.createFilter(paths, deep);
+
+ final JcrPackage jcrPackage = packageManager.create(packageGroup,
packageName, VERSION);
+ final JcrPackageDefinition jcrPackageDefinition =
jcrPackage.getDefinition();
+
+
+ jcrPackageDefinition.setFilter(filter, true);
+
+ log.debug("assembling package {}", packageGroup + '/' +
packageName + "-" + VERSION);
+ packageManager.assemble(jcrPackage, null);
+ return new JcrVaultDistributionPackage(PACKAGING_TYPE, jcrPackage,
session);
+ } catch (Exception e) {
+ throw new DistributionPackageBuildingException(e);
+ } finally {
+ ungetSession(session);
+ }
+ }
+
+ @Override
+ protected DistributionPackage readPackageInternal(ResourceResolver
resourceResolver, InputStream stream) throws
DistributionPackageReadingException {
+ Session session = null;
+ try {
+ session = getSession(resourceResolver);
+ JcrPackageManager packageManager =
packaging.getPackageManager(session);
+
+ JcrPackage jcrPackage = packageManager.upload(stream, true);
+
+ return new JcrVaultDistributionPackage(PACKAGING_TYPE, jcrPackage,
session);
+ } catch (Exception e) {
+ throw new DistributionPackageReadingException(e);
+ } finally {
+ ungetSession(session);
+ }
+ }
+
+ @Override
+ protected boolean installPackageInternal(ResourceResolver
resourceResolver, DistributionPackage distributionPackage) throws
DistributionPackageReadingException {
+ Session session = null;
+ try {
+ session = getSession(resourceResolver);
+ JcrPackageManager packageManager =
packaging.getPackageManager(session);
+
+
+
+ String packageName = distributionPackage.getId();
+ JcrPackage jcrPackage = packageManager.open(new
PackageId(PACKAGE_GROUP, packageName, VERSION));
+
+ ImportOptions importOptions =
VltUtils.getImportOptions(aclHandling, importMode);
+ jcrPackage.extract(importOptions);
+
+ return true;
+ } catch (Exception e) {
+ throw new DistributionPackageReadingException(e);
+ } finally {
+ ungetSession(session);
+ }
+ }
+
+ @Override
+ protected DistributionPackage getPackageInternal(ResourceResolver
resourceResolver, String id) {
+ Session session = null;
+ try {
+ session = getSession(resourceResolver);
+ JcrPackageManager packageManager =
packaging.getPackageManager(session);
+
+ String packageName = id;
+ JcrPackage jcrPackage = packageManager.open(new
PackageId(PACKAGE_GROUP, packageName, VERSION));
+
+ if (jcrPackage == null) {
+ return null;
+ }
+ return new JcrVaultDistributionPackage(PACKAGING_TYPE, jcrPackage,
session);
+ } catch (Exception e) {
+ return null;
+ } finally {
+ ungetSession(session);
+ }
+ }
+}
Added:
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=1643296&view=auto
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java
(added)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java
Fri Dec 5 14:40:03 2014
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.distribution.serialization.impl.vlt;
+
+import javax.annotation.Nonnull;
+import java.io.InputStream;
+import java.util.Map;
+
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.ConfigurationPolicy;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.jackrabbit.vault.fs.api.ImportMode;
+import org.apache.jackrabbit.vault.fs.io.AccessControlHandling;
+import org.apache.jackrabbit.vault.packaging.Packaging;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.commons.osgi.PropertiesUtil;
+import org.apache.sling.distribution.communication.DistributionRequest;
+import org.apache.sling.distribution.component.impl.DistributionComponentUtils;
+import org.apache.sling.distribution.event.impl.DistributionEventFactory;
+import org.apache.sling.distribution.packaging.DistributionPackage;
+import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
+import
org.apache.sling.distribution.serialization.DistributionPackageBuildingException;
+import
org.apache.sling.distribution.serialization.DistributionPackageReadingException;
+import
org.apache.sling.distribution.serialization.impl.ResourceSharedDistributionPackageBuilder;
+
+@Component(metatype = true,
+ label = "Sling Distribution - Vault Package Builder Factory",
+ description = "OSGi configuration for vault package builders",
+ configurationFactory = true,
+ specVersion = "1.1",
+ policy = ConfigurationPolicy.REQUIRE
+)
+@Service(DistributionPackageBuilder.class)
+public class VaultDistributionPackageBuilderFactory implements
DistributionPackageBuilder {
+
+
+ /**
+ * type of this component.
+ */
+ @Property
+ public static final String TYPE = DistributionComponentUtils.PN_TYPE;
+
+ /**
+ * name of this component.
+ */
+ @Property
+ public static final String NAME = DistributionComponentUtils.PN_NAME;
+
+ /**
+ * import mode property for file vault package builder
+ */
+ @Property
+ public static final String PACKAGE_BUILDER_FILEVLT_IMPORT_MODE =
"importMode";
+
+ /**
+ * ACL handling property for file vault package builder
+ */
+ @Property
+ public static final String PACKAGE_BUILDER_FILEVLT_ACLHANDLING =
"aclHandling";
+
+ @Reference
+ private Packaging packaging;
+
+ private DistributionPackageBuilder packageBuilder;
+
+
+ @Activate
+ public void activate(Map<String, Object> config) {
+
+ String type = PropertiesUtil.toString(config.get(TYPE), null);
+ String importModeString =
PropertiesUtil.toString(config.get(PACKAGE_BUILDER_FILEVLT_IMPORT_MODE), null);
+ String aclHandlingString =
PropertiesUtil.toString(config.get(PACKAGE_BUILDER_FILEVLT_ACLHANDLING), null);
+
+ ImportMode importMode = null;
+ if (importMode != null) {
+ importMode = ImportMode.valueOf(importModeString);
+ }
+
+ AccessControlHandling aclHandling = null;
+ if (aclHandlingString != null) {
+ aclHandling= AccessControlHandling.valueOf(aclHandlingString);
+ }
+ if (FileVaultDistributionPackageBuilder.PACKAGING_TYPE.equals(type)) {
+ packageBuilder = new ResourceSharedDistributionPackageBuilder(new
FileVaultDistributionPackageBuilder(packaging, importMode, aclHandling));
+ } else {
+ packageBuilder = new ResourceSharedDistributionPackageBuilder(new
JcrVaultDistributionPackageBuilder(packaging, importMode, aclHandling));
+ }
+ }
+
+
+ public DistributionPackage createPackage(@Nonnull ResourceResolver
resourceResolver, @Nonnull DistributionRequest request) throws
DistributionPackageBuildingException {
+ return packageBuilder.createPackage(resourceResolver, request);
+ }
+
+ public DistributionPackage readPackage(@Nonnull ResourceResolver
resourceResolver, @Nonnull InputStream stream) throws
DistributionPackageReadingException {
+ return packageBuilder.readPackage(resourceResolver, stream);
+ }
+
+ public DistributionPackage getPackage(@Nonnull ResourceResolver
resourceResolver, @Nonnull String id) {
+ return packageBuilder.getPackage(resourceResolver, id);
+ }
+
+ public boolean installPackage(@Nonnull ResourceResolver resourceResolver,
@Nonnull DistributionPackage distributionPackage) throws
DistributionPackageReadingException {
+ return packageBuilder.installPackage(resourceResolver,
distributionPackage);
+ }
+}
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java?rev=1643296&r1=1643295&r2=1643296&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java
Fri Dec 5 14:40:03 2014
@@ -26,12 +26,14 @@ import org.apache.jackrabbit.vault.fs.ap
import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
import org.apache.jackrabbit.vault.fs.config.DefaultMetaInf;
import org.apache.jackrabbit.vault.fs.config.DefaultWorkspaceFilter;
+import org.apache.jackrabbit.vault.fs.config.MetaInf;
import org.apache.jackrabbit.vault.fs.filter.DefaultPathFilter;
import org.apache.jackrabbit.vault.fs.io.AccessControlHandling;
import org.apache.jackrabbit.vault.fs.io.ImportOptions;
import org.apache.jackrabbit.vault.packaging.ExportOptions;
import org.apache.jackrabbit.vault.packaging.VaultPackage;
+import java.util.List;
import java.util.Properties;
/**
@@ -50,6 +52,24 @@ public class VltUtils {
return filter;
}
+ public static String[] getPaths(MetaInf metaInf) {
+ if (metaInf == null) {
+ return null;
+ }
+
+ WorkspaceFilter filter = metaInf.getFilter();
+ if (filter == null) {
+ filter = new DefaultWorkspaceFilter();
+ }
+ List<PathFilterSet> filterSets = filter.getFilterSets();
+ String[] paths = new String[filterSets.size()];
+ for (int i = 0; i < paths.length; i++) {
+ paths[i] = filterSets.get(i).getRoot();
+ }
+
+ return paths;
+ }
+
private static PathFilterSet createFilterSet(String path, boolean deep) {
PathFilterSet filterSet = new PathFilterSet(path);
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/UserCredentialsDistributionTransportSecretProvider.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/UserCredentialsDistributionTransportSecretProvider.java?rev=1643296&r1=1643295&r2=1643296&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/UserCredentialsDistributionTransportSecretProvider.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/UserCredentialsDistributionTransportSecretProvider.java
Fri Dec 5 14:40:03 2014
@@ -35,7 +35,8 @@ import org.apache.sling.distribution.tra
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@Component(label = "User Credentials based
DistributionTransportSecretProvider",
+@Component(metatype = true,
+ label = "Sling Distribution - User Credentials based
DistributionTransportSecretProvider",
configurationFactory = true,
specVersion = "1.1",
policy = ConfigurationPolicy.REQUIRE)
Modified:
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageBuilderTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageBuilderTest.java?rev=1643296&r1=1643295&r2=1643296&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageBuilderTest.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageBuilderTest.java
Fri Dec 5 14:40:03 2014
@@ -75,8 +75,7 @@ public class FileVaultDistributionPackag
when(resourceResolver.adaptTo(Session.class)).thenReturn(session);
- FileVaultDistributionPackageBuilder
fileVaultdistributionPackageBuilder = new FileVaultDistributionPackageBuilder(
- packaging);
+ FileVaultDistributionPackageBuilder
fileVaultdistributionPackageBuilder = new
FileVaultDistributionPackageBuilder(packaging, null, null);
DistributionRequest request = new
DistributionRequest(DistributionRequestType.ADD, new String[]{"/"});
DistributionPackage distributionPackage =
fileVaultdistributionPackageBuilder.createPackageForAdd(resourceResolver,
request);
assertNotNull(distributionPackage);
@@ -88,8 +87,7 @@ public class FileVaultDistributionPackag
PackageManager packageManager = mock(PackageManager.class);
when(packaging.getPackageManager()).thenReturn(packageManager);
- FileVaultDistributionPackageBuilder
fileVaultdistributionPackageBuilder = new FileVaultDistributionPackageBuilder(
- packaging);
+ FileVaultDistributionPackageBuilder
fileVaultdistributionPackageBuilder = new
FileVaultDistributionPackageBuilder(packaging, null, null);
ResourceResolver resourceResolver = mock(ResourceResolver.class);
InputStream stream = new ByteArrayInputStream("some
binary".getBytes("UTF-8"));
@@ -103,8 +101,7 @@ public class FileVaultDistributionPackag
PackageManager packageManager = mock(PackageManager.class);
when(packaging.getPackageManager()).thenReturn(packageManager);
- FileVaultDistributionPackageBuilder
fileVaultdistributionPackageBuilder = new FileVaultDistributionPackageBuilder(
- packaging);
+ FileVaultDistributionPackageBuilder
fileVaultdistributionPackageBuilder = new
FileVaultDistributionPackageBuilder(packaging, null, null);
ResourceResolver resourceResolver = mock(ResourceResolver.class);
String id = "some-id";
@@ -121,8 +118,7 @@ public class FileVaultDistributionPackag
when(packageManager.open(tempFile)).thenReturn(vaultPackage);
when(packaging.getPackageManager()).thenReturn(packageManager);
- FileVaultDistributionPackageBuilder
fileVaultdistributionPackageBuilder = new FileVaultDistributionPackageBuilder(
- packaging);
+ FileVaultDistributionPackageBuilder
fileVaultdistributionPackageBuilder = new
FileVaultDistributionPackageBuilder(packaging, null, null);
ResourceResolver resourceResolver = mock(ResourceResolver.class);
Session session = mock(Session.class);
@@ -151,8 +147,8 @@ public class FileVaultDistributionPackag
when(packageManager.open(tempFile)).thenReturn(vaultPackage);
when(packaging.getPackageManager()).thenReturn(packageManager);
- FileVaultDistributionPackageBuilder
fileVaultdistributionPackageBuilder = new FileVaultDistributionPackageBuilder(
- packaging, ImportMode.MERGE.name(),
AccessControlHandling.MERGE.name());
+ FileVaultDistributionPackageBuilder
fileVaultdistributionPackageBuilder = new
FileVaultDistributionPackageBuilder(packaging,
+ ImportMode.MERGE, AccessControlHandling.MERGE);
ResourceResolver resourceResolver = mock(ResourceResolver.class);
Session session = mock(Session.class);
Modified:
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageTest.java?rev=1643296&r1=1643295&r2=1643296&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageTest.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultDistributionPackageTest.java
Fri Dec 5 14:40:03 2014
@@ -79,7 +79,7 @@ public class FileVaultDistributionPackag
when(file.getAbsolutePath()).thenReturn("/path/to/file.txt");
when(vaultPackage.getFile()).thenReturn(file);
FileVaultDistributionPackage fileVaultdistributionPackage = new
FileVaultDistributionPackage(vaultPackage);
- assertNull(fileVaultdistributionPackage.getInfo().getRequestType());
+ assertNotNull(fileVaultdistributionPackage.getInfo().getRequestType());
}
@Test
Modified: sling/trunk/contrib/extensions/distribution/it/pom.xml
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/pom.xml?rev=1643296&r1=1643295&r2=1643296&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/it/pom.xml (original)
+++ sling/trunk/contrib/extensions/distribution/it/pom.xml Fri Dec 5 14:40:03
2014
@@ -313,7 +313,7 @@
<dependency>
<groupId>org.apache.jackrabbit.vault</groupId>
<artifactId>org.apache.jackrabbit.vault</artifactId>
- <version>3.0.0</version>
+ <version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- HTTP -->
Modified:
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/org.apache.sling.distribution.serialization.impl.vlt.FileVaultDistributionPackageBuilderFactory-vlt.json
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/org.apache.sling.distribution.serialization.impl.vlt.FileVaultDistributionPackageBuilderFactory-vlt.json?rev=1643296&r1=1643295&r2=1643296&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/org.apache.sling.distribution.serialization.impl.vlt.FileVaultDistributionPackageBuilderFactory-vlt.json
(original)
+++
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/org.apache.sling.distribution.serialization.impl.vlt.FileVaultDistributionPackageBuilderFactory-vlt.json
Fri Dec 5 14:40:03 2014
@@ -1,4 +1,5 @@
{
"jcr:primaryType": "sling:OsgiConfig",
- "name": "vlt"
+ "name": "vlt",
+ "type": "jcrvlt"
}
\ No newline at end of file