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 2014/10/28 12:01:30 UTC

svn commit: r1634843 - in /sling/trunk/contrib/extensions/replication/core/src: main/java/org/apache/sling/replication/agent/impl/ main/java/org/apache/sling/replication/component/impl/ main/java/org/apache/sling/replication/packaging/ main/java/org/ap...

Author: mpetria
Date: Tue Oct 28 11:01:29 2014
New Revision: 1634843

URL: http://svn.apache.org/r1634843
Log:
SLING-4109: use a wrapping package builder to hide true package ids

Added:
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExportException.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImportException.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageUploadException.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/SharedReplicationPackage.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/ResourceSharedReplicationPackage.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/ResourceSharedReplicationPackageBuilder.java
Modified:
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgent.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackage.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/AdvancedRemoteReplicationPackageImporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporterFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporterFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RepositoryReplicationPackageImporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/AbstractReplicationPackageBuilder.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilder.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageExporterServlet.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageImporterServlet.java
    sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentTest.java
    sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterTest.java
    sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterTest.java

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgent.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgent.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgent.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgent.java Tue Oct 28 11:01:29 2014
@@ -27,6 +27,7 @@ import java.util.Map;
 import java.util.Properties;
 
 import org.apache.sling.api.resource.LoginException;
+import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.replication.agent.ReplicationAgent;
@@ -40,6 +41,7 @@ import org.apache.sling.replication.even
 import org.apache.sling.replication.event.ReplicationEventType;
 import org.apache.sling.replication.packaging.ReplicationPackage;
 import org.apache.sling.replication.packaging.ReplicationPackageExporter;
+import org.apache.sling.replication.packaging.ReplicationPackageImportException;
 import org.apache.sling.replication.packaging.ReplicationPackageImporter;
 import org.apache.sling.replication.queue.ReplicationQueue;
 import org.apache.sling.replication.queue.ReplicationQueueDistributionStrategy;
@@ -131,14 +133,28 @@ public class SimpleReplicationAgent impl
 
     public ReplicationResponse execute(ResourceResolver resourceResolver, ReplicationRequest replicationRequest)
             throws ReplicationAgentException {
+
+
+
+        ResourceResolver agentResourceResolver = null;
+
         try {
+            agentResourceResolver = getAgentResourceResolver();
+
             replicationRequestAuthorizationStrategy.checkPermission(resourceResolver, replicationRequest);
-            List<ReplicationPackage> replicationPackages = buildPackages(replicationRequest);
-            return schedule(replicationPackages);
+
+
+            List<ReplicationPackage> replicationPackages = buildPackages(agentResourceResolver, replicationRequest);
+
+            return schedule(agentResourceResolver, replicationPackages);
         } catch (Exception e) {
             log.error("Error executing replication request {}", replicationRequest, e);
             throw new ReplicationAgentException(e);
         }
+        finally {
+            ungetAgentResourceResolver(agentResourceResolver);
+
+        }
 
     }
 
@@ -146,14 +162,14 @@ public class SimpleReplicationAgent impl
         return passive;
     }
 
-    private List<ReplicationPackage> buildPackages(ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
 
-        ResourceResolver agentResourceResolver = getAgentResourceResolver();
+    private List<ReplicationPackage> buildPackages(ResourceResolver agentResourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
+        List<ReplicationPackage> replicationPackages = replicationPackageExporter.exportPackages(agentResourceResolver, replicationRequest);
 
-        return replicationPackageExporter.exportPackage(agentResourceResolver, replicationRequest);
+        return replicationPackages;
     }
 
-    private ReplicationResponse schedule(List<ReplicationPackage> replicationPackages) {
+    private ReplicationResponse schedule(ResourceResolver agentResourceResolver, List<ReplicationPackage> replicationPackages) {
         // TODO : create a composite replication response otherwise only the last response will be returned
         ReplicationResponse replicationResponse = new ReplicationResponse();
 
@@ -249,16 +265,18 @@ public class SimpleReplicationAgent impl
     private boolean processQueue(ReplicationQueueItem queueItem) {
         boolean success = false;
         log.debug("reading package with id {}", queueItem.getId());
-        ResourceResolver resourceResolver = getAgentResourceResolver();
+        ResourceResolver agentResourceResolver = null;
         try {
 
-            ReplicationPackage replicationPackage = replicationPackageExporter.exportPackageById(resourceResolver, queueItem.getId());
+            agentResourceResolver = getAgentResourceResolver();
+
+            ReplicationPackage replicationPackage = replicationPackageExporter.getPackage(agentResourceResolver, queueItem.getId());
 
 
             if (replicationPackage != null) {
                 replicationPackage.getInfo().fillInfo(queueItem.getPackageInfo());
 
-                replicationPackageImporter.importPackage(resourceResolver, replicationPackage);
+                replicationPackageImporter.importPackage(agentResourceResolver, replicationPackage);
 
                 Dictionary<Object, Object> properties = new Properties();
                 properties.put("replication.package.paths", replicationPackage.getPaths());
@@ -271,26 +289,40 @@ public class SimpleReplicationAgent impl
                 log.warn("replication package with id {} does not exist", queueItem.getId());
             }
 
-        } catch (ReplicationPackageReadingException e) {
+        } catch (ReplicationPackageImportException e) {
             log.error("could not process transport queue", e);
+        } catch (LoginException e) {
+            log.error("cannot obtain resource resolver", e);
+        } finally {
+            ungetAgentResourceResolver(agentResourceResolver);
         }
         return success;
     }
 
-    private ResourceResolver getAgentResourceResolver() {
+    private ResourceResolver getAgentResourceResolver() throws LoginException {
         ResourceResolver resourceResolver = null;
 
         Map<String, Object> authenticationInfo = new HashMap<String, Object>();
         authenticationInfo.put(ResourceResolverFactory.SUBSERVICE, subServiceName);
-        try {
-            resourceResolver = resourceResolverFactory.getServiceResourceResolver(authenticationInfo);
-        } catch (LoginException e) {
-            log.error("cannot obtain a resource resolver for service {}", subServiceName, e);
-        }
+        resourceResolver = resourceResolverFactory.getServiceResourceResolver(authenticationInfo);
+
 
         return resourceResolver;
     }
 
+    private void ungetAgentResourceResolver(ResourceResolver resourceResolver) {
+
+        if (resourceResolver != null) {
+            try {
+                resourceResolver.commit();
+            } catch (PersistenceException e) {
+                log.error("cannot commit changes to resource resolver", e);
+            }
+            resourceResolver.close();
+        }
+
+    }
+
     class PackageQueueProcessor implements ReplicationQueueProcessor {
         public boolean process(String queueName, ReplicationQueueItem packageInfo) {
             log.info("running package queue processor for queue {}", queueName);
@@ -306,11 +338,17 @@ public class SimpleReplicationAgent impl
         }
 
         public void handle(ReplicationRequest request) {
+            ResourceResolver agentResourceResolver = null;
             try {
-                ResourceResolver resourceResolver = getAgentResourceResolver();
-                agent.execute(resourceResolver, request);
+                agentResourceResolver = getAgentResourceResolver();
+                agent.execute(agentResourceResolver, request);
             } catch (ReplicationAgentException e) {
                 log.error("Error executing handler", e);
+            } catch (LoginException e) {
+                log.error("Cannot obtain resource resolver");
+            }
+            finally {
+                ungetAgentResourceResolver(agentResourceResolver);
             }
         }
     }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactory.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactory.java Tue Oct 28 11:01:29 2014
@@ -52,6 +52,7 @@ import org.apache.sling.replication.pack
 import org.apache.sling.replication.queue.ReplicationQueueDistributionStrategy;
 import org.apache.sling.replication.queue.ReplicationQueueProvider;
 import org.apache.sling.replication.serialization.ReplicationPackageBuilder;
+import org.apache.sling.replication.serialization.impl.ResourceSharedReplicationPackageBuilder;
 import org.apache.sling.replication.serialization.impl.vlt.FileVaultReplicationPackageBuilder;
 import org.apache.sling.replication.transport.authentication.TransportAuthenticationProvider;
 import org.apache.sling.replication.transport.authentication.impl.UserCredentialsTransportAuthenticationProvider;
@@ -297,7 +298,7 @@ public class DefaultReplicationComponent
         String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), COMPONENT_TYPE_SERVICE);
 
         if (PACKAGE_BUILDER_FILEVLT.equals(factory)) {
-            return new FileVaultReplicationPackageBuilder(packaging, replicationEventFactory);
+            return new ResourceSharedReplicationPackageBuilder(new FileVaultReplicationPackageBuilder(packaging, replicationEventFactory));
         }
 
         return null;

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackage.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackage.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackage.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackage.java Tue Oct 28 11:01:29 2014
@@ -28,30 +28,31 @@ import java.io.Serializable;
 public interface ReplicationPackage extends Serializable {
 
     /**
-     * get package id
+     * get package id. the id is a unique string that can be used to retrieve
+     * the package from an {@link ReplicationPackageExporter}
      *
-     * @return the package id as a <code>String</code>
+     * @return the package id
      */
     String getId();
 
     /**
      * get the paths covered by this package
      *
-     * @return an array of <code>String</code> paths
+     * @return an array of paths
      */
     String[] getPaths();
 
     /**
      * get the action this package is used for
      *
-     * @return the action as a <code>String</code>
+     * @return the action
      */
     String getAction();
 
     /**
      * get the type of package
      *
-     * @return the package type as a <code>String</code>
+     * @return the package type
      */
     String getType();
 
@@ -67,12 +68,12 @@ public interface ReplicationPackage exte
     /**
      * get package stream length
      *
-     * @return the package length as a <code>long</code>
+     * @return the package length
      */
     long getLength();
 
     /**
-     * releases all resources associated with the package id
+     * releases all resources associated with this package
      */
     void delete();
 

Added: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExportException.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExportException.java?rev=1634843&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExportException.java (added)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExportException.java Tue Oct 28 11:01:29 2014
@@ -0,0 +1,34 @@
+/*
+ * 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.replication.packaging;
+
+/**
+ * This represents an error happening while exporting a {@link ReplicationPackage}
+ */
+@SuppressWarnings("serial")
+public class ReplicationPackageExportException extends Exception {
+
+    public ReplicationPackageExportException(String message) {
+        super(message);
+    }
+
+    public ReplicationPackageExportException(Throwable t) {
+        super(t);
+    }
+}

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporter.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporter.java Tue Oct 28 11:01:29 2014
@@ -37,14 +37,18 @@ public interface ReplicationPackageExpor
      * Exports the {@link org.apache.sling.replication.packaging.ReplicationPackage}s built from the
      * passed {@link org.apache.sling.replication.communication.ReplicationRequest}.
      *
+     * @param resourceResolver - the resource resolver used to export the packages
+     * @param replicationRequest - the request containing the information about which content is to be exported
      * @return a <code>List</code> of {@link org.apache.sling.replication.packaging.ReplicationPackage}s
      */
-    List<ReplicationPackage> exportPackage(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException;
+    List<ReplicationPackage> exportPackages(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException;
 
     /**
-     * Exports a {@link org.apache.sling.replication.packaging.ReplicationPackage} given its 'id', if it already exists.
+     * Retrieves a {@link org.apache.sling.replication.packaging.ReplicationPackage} given its 'id', if it already exists.
      *
+     * @param resourceResolver - the resource resolver use to obtain the package.
+     * @param replicationPackageId - the id of the package to be retrieved
      * @return a {@link org.apache.sling.replication.packaging.ReplicationPackage} if available, <code>null</code> otherwise
      */
-    ReplicationPackage exportPackageById(ResourceResolver resourceResolver, String replicationPackageId);
+    ReplicationPackage getPackage(ResourceResolver resourceResolver, String replicationPackageId);
 }

Added: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImportException.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImportException.java?rev=1634843&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImportException.java (added)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImportException.java Tue Oct 28 11:01:29 2014
@@ -0,0 +1,34 @@
+/*
+ * 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.replication.packaging;
+
+/**
+ * This represents an error happening while importing a {@link org.apache.sling.replication.packaging.ReplicationPackage}
+ */
+@SuppressWarnings("serial")
+public class ReplicationPackageImportException extends Exception {
+
+    public ReplicationPackageImportException(String message) {
+        super(message);
+    }
+
+    public ReplicationPackageImportException(Throwable t) {
+        super(t);
+    }
+}

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImporter.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImporter.java Tue Oct 28 11:01:29 2014
@@ -32,18 +32,20 @@ public interface ReplicationPackageImpor
     /**
      * Imports the given replication package
      *
+     * @param resourceResolver - the resource resolver used to import the resources
      * @param replicationPackage - the package to be imported
      * @return <code>true</code> if the import succeeded, <code>false</code> otherwise
      */
-    boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageReadingException;
+    boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageImportException;
 
     /**
-     * reads a stream and tries to convert it to a {@link ReplicationPackage} this provider can read and install
+     * Uploads a stream and tries to convert it to a {@link ReplicationPackage} this importer can import
      *
+     * @param resourceResolver - the resource resolver used to read the package
      * @param stream the {@link InputStream} of the package to read
      * @return a {@link ReplicationPackage} if it can read it from the stream
      * @throws ReplicationPackageReadingException when the stream cannot be read as a {@link ReplicationPackage}
      */
-    ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException;
+    ReplicationPackage uploadPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageUploadException;
 
 }

Added: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageUploadException.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageUploadException.java?rev=1634843&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageUploadException.java (added)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageUploadException.java Tue Oct 28 11:01:29 2014
@@ -0,0 +1,34 @@
+/*
+ * 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.replication.packaging;
+
+/**
+ * This represents an error happening while uploading a {@link ReplicationPackage}
+ */
+@SuppressWarnings("serial")
+public class ReplicationPackageUploadException extends Exception {
+
+    public ReplicationPackageUploadException(String message) {
+        super(message);
+    }
+
+    public ReplicationPackageUploadException(Throwable t) {
+        super(t);
+    }
+}

Added: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/SharedReplicationPackage.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/SharedReplicationPackage.java?rev=1634843&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/SharedReplicationPackage.java (added)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/SharedReplicationPackage.java Tue Oct 28 11:01:29 2014
@@ -0,0 +1,39 @@
+/*
+ * 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.replication.packaging;
+
+/**
+ * A {@link ReplicationPackage} that offers basic reference counting
+ */
+public interface SharedReplicationPackage extends ReplicationPackage {
+
+
+    /**
+     * acquire a reference to this package and increase the reference count.
+     */
+    void acquire();
+
+    /**
+     * release a reference to this package and decrease the reference count.
+     * when no more references are hold the package <code>delete</code> method is called.
+     */
+    void release();
+
+}

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporter.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporter.java Tue Oct 28 11:01:29 2014
@@ -57,7 +57,7 @@ public class AgentReplicationPackageExpo
         this.packageBuilder = packageBuilder;
     }
 
-    public List<ReplicationPackage> exportPackage(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) {
+    public List<ReplicationPackage> exportPackages(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) {
 
         List<ReplicationPackage> result = new ArrayList<ReplicationPackage>();
         try {
@@ -81,7 +81,7 @@ public class AgentReplicationPackageExpo
         return result;
     }
 
-    public ReplicationPackage exportPackageById(ResourceResolver resourceResolver, String replicationPackageId) {
+    public ReplicationPackage getPackage(ResourceResolver resourceResolver, String replicationPackageId) {
         return null;
     }
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java Tue Oct 28 11:01:29 2014
@@ -71,13 +71,13 @@ public class AgentReplicationPackageExpo
         packageExporter = replicationComponentFactory.createComponent(ReplicationPackageExporter.class, config, this);
     }
 
-    public List<ReplicationPackage> exportPackage(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
+    public List<ReplicationPackage> exportPackages(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
 
-       return packageExporter.exportPackage(resourceResolver, replicationRequest);
+       return packageExporter.exportPackages(resourceResolver, replicationRequest);
     }
 
-    public ReplicationPackage exportPackageById(ResourceResolver resourceResolver, String replicationPackageId) {
-        return packageExporter.exportPackageById(resourceResolver, replicationPackageId);
+    public ReplicationPackage getPackage(ResourceResolver resourceResolver, String replicationPackageId) {
+        return packageExporter.getPackage(resourceResolver, replicationPackageId);
     }
 
     public <ComponentType extends ReplicationComponent> ComponentType getComponent(Class<ComponentType> type, String componentName) {

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporter.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporter.java Tue Oct 28 11:01:29 2014
@@ -40,7 +40,7 @@ public class LocalReplicationPackageExpo
         this.packageBuilder = packageBuilder;
     }
 
-    public List<ReplicationPackage> exportPackage(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
+    public List<ReplicationPackage> exportPackages(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
         List<ReplicationPackage> result = new ArrayList<ReplicationPackage>();
 
         ReplicationPackage createdPackage = packageBuilder.createPackage(resourceResolver, replicationRequest);
@@ -50,7 +50,7 @@ public class LocalReplicationPackageExpo
         return result;
     }
 
-    public ReplicationPackage exportPackageById(ResourceResolver resourceResolver, String replicationPackageId) {
+    public ReplicationPackage getPackage(ResourceResolver resourceResolver, String replicationPackageId) {
         return packageBuilder.getPackage(resourceResolver, replicationPackageId);
     }
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterFactory.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterFactory.java Tue Oct 28 11:01:29 2014
@@ -67,11 +67,11 @@ public class LocalReplicationPackageExpo
     }
 
 
-    public List<ReplicationPackage> exportPackage(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
-        return exporter.exportPackage(resourceResolver, replicationRequest);
+    public List<ReplicationPackage> exportPackages(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
+        return exporter.exportPackages(resourceResolver, replicationRequest);
     }
 
-    public ReplicationPackage exportPackageById(ResourceResolver resourceResolver, String replicationPackageId) {
-        return exporter.exportPackageById(resourceResolver, replicationPackageId);
+    public ReplicationPackage getPackage(ResourceResolver resourceResolver, String replicationPackageId) {
+        return exporter.getPackage(resourceResolver, replicationPackageId);
     }
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporter.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporter.java Tue Oct 28 11:01:29 2014
@@ -71,7 +71,7 @@ public class RemoteReplicationPackageExp
                 transportEndpointStrategyType);
     }
 
-    public List<ReplicationPackage> exportPackage(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
+    public List<ReplicationPackage> exportPackages(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
         try {
             List<ReplicationPackage> replicationPackages = transportHandler.retrievePackages(resourceResolver, replicationRequest);
 //            for (ReplicationPackage replicationPackage : replicationPackages) {
@@ -83,7 +83,7 @@ public class RemoteReplicationPackageExp
         }
     }
 
-    public ReplicationPackage exportPackageById(ResourceResolver resourceResolver, String replicationPackageId) {
+    public ReplicationPackage getPackage(ResourceResolver resourceResolver, String replicationPackageId) {
         return packageBuilder.getPackage(resourceResolver, replicationPackageId);
     }
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.java Tue Oct 28 11:01:29 2014
@@ -101,12 +101,12 @@ public class RemoteReplicationPackageExp
         exporter = null;
     }
 
-    public List<ReplicationPackage> exportPackage(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
-        return exporter.exportPackage(resourceResolver, replicationRequest);
+    public List<ReplicationPackage> exportPackages(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
+        return exporter.exportPackages(resourceResolver, replicationRequest);
     }
 
-    public ReplicationPackage exportPackageById(ResourceResolver resourceResolver, String replicationPackageId) {
-        return exporter.exportPackageById(resourceResolver, replicationPackageId);
+    public ReplicationPackage getPackage(ResourceResolver resourceResolver, String replicationPackageId) {
+        return exporter.getPackage(resourceResolver, replicationPackageId);
     }
 
     public <ComponentType extends ReplicationComponent> ComponentType getComponent(Class<ComponentType> type, String componentName) {

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/AdvancedRemoteReplicationPackageImporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/AdvancedRemoteReplicationPackageImporter.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/AdvancedRemoteReplicationPackageImporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/AdvancedRemoteReplicationPackageImporter.java Tue Oct 28 11:01:29 2014
@@ -38,6 +38,7 @@ import org.apache.sling.replication.comm
 import org.apache.sling.replication.event.ReplicationEventFactory;
 import org.apache.sling.replication.packaging.ReplicationPackage;
 import org.apache.sling.replication.packaging.ReplicationPackageImporter;
+import org.apache.sling.replication.packaging.ReplicationPackageUploadException;
 import org.apache.sling.replication.serialization.ReplicationPackageReadingException;
 import org.apache.sling.replication.transport.ReplicationTransportHandler;
 import org.apache.sling.replication.transport.authentication.TransportAuthenticationProvider;
@@ -140,7 +141,7 @@ public class AdvancedRemoteReplicationPa
         return result;
     }
 
-    public ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException {
+    public ReplicationPackage uploadPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageUploadException {
         return null;
     }
 

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporter.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporter.java Tue Oct 28 11:01:29 2014
@@ -27,7 +27,9 @@ import org.apache.sling.api.resource.Res
 import org.apache.sling.replication.event.ReplicationEventFactory;
 import org.apache.sling.replication.event.ReplicationEventType;
 import org.apache.sling.replication.packaging.ReplicationPackage;
+import org.apache.sling.replication.packaging.ReplicationPackageImportException;
 import org.apache.sling.replication.packaging.ReplicationPackageImporter;
+import org.apache.sling.replication.packaging.ReplicationPackageUploadException;
 import org.apache.sling.replication.serialization.ReplicationPackageBuilder;
 import org.apache.sling.replication.serialization.ReplicationPackageReadingException;
 import org.slf4j.Logger;
@@ -63,7 +65,7 @@ public class LocalReplicationPackageImpo
     }
 
 
-    public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) {
+    public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageImportException {
         boolean success = false;
         try {
             success = packageBuilder.installPackage(resourceResolver, replicationPackage);
@@ -76,23 +78,24 @@ public class LocalReplicationPackageImpo
                 dictionary.put("replication.path", replicationPackage.getPaths());
                 replicationEventFactory.generateEvent(ReplicationEventType.PACKAGE_INSTALLED, dictionary);
 
-                replicationPackage.delete();
             } else {
                 log.warn("could not read a replication package");
             }
         } catch (Exception e) {
             log.error("cannot import a package from the given stream of type {}", replicationPackage.getType());
+            throw new ReplicationPackageImportException(e);
         }
         return success;
     }
 
-    public ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException {
+    public ReplicationPackage uploadPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageUploadException {
         try {
             return packageBuilder.readPackage(resourceResolver, stream);
         } catch (Exception e) {
-            log.error("cannot read a package from the given stream");
+            log.error("cannot read a package from the given stream", e);
+            throw new ReplicationPackageUploadException(e);
+
         }
-        return null;
     }
 
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporterFactory.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporterFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporterFactory.java Tue Oct 28 11:01:29 2014
@@ -30,7 +30,9 @@ import org.apache.felix.scr.annotations.
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.component.ReplicationComponentFactory;
 import org.apache.sling.replication.packaging.ReplicationPackage;
+import org.apache.sling.replication.packaging.ReplicationPackageImportException;
 import org.apache.sling.replication.packaging.ReplicationPackageImporter;
+import org.apache.sling.replication.packaging.ReplicationPackageUploadException;
 import org.apache.sling.replication.serialization.ReplicationPackageReadingException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -65,12 +67,12 @@ public class LocalReplicationPackageImpo
     }
 
 
-    public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageReadingException {
+    public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageImportException {
         return importer.importPackage(resourceResolver, replicationPackage);
     }
 
-    public ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException {
-        return importer.readPackage(resourceResolver, stream);
+    public ReplicationPackage uploadPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageUploadException {
+        return importer.uploadPackage(resourceResolver, stream);
     }
 
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporter.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporter.java Tue Oct 28 11:01:29 2014
@@ -26,6 +26,7 @@ import org.apache.sling.api.resource.Res
 import org.apache.sling.replication.communication.ReplicationEndpoint;
 import org.apache.sling.replication.packaging.ReplicationPackage;
 import org.apache.sling.replication.packaging.ReplicationPackageImporter;
+import org.apache.sling.replication.packaging.ReplicationPackageUploadException;
 import org.apache.sling.replication.serialization.ReplicationPackageReadingException;
 import org.apache.sling.replication.transport.ReplicationTransportHandler;
 import org.apache.sling.replication.transport.authentication.TransportAuthenticationProvider;
@@ -80,7 +81,7 @@ public class RemoteReplicationPackageImp
         return result;
     }
 
-    public ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException {
+    public ReplicationPackage uploadPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageUploadException {
         return null;
     }
 

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporterFactory.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporterFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporterFactory.java Tue Oct 28 11:01:29 2014
@@ -34,7 +34,9 @@ import org.apache.sling.replication.comp
 import org.apache.sling.replication.component.ReplicationComponentFactory;
 import org.apache.sling.replication.component.ReplicationComponentProvider;
 import org.apache.sling.replication.packaging.ReplicationPackage;
+import org.apache.sling.replication.packaging.ReplicationPackageImportException;
 import org.apache.sling.replication.packaging.ReplicationPackageImporter;
+import org.apache.sling.replication.packaging.ReplicationPackageUploadException;
 import org.apache.sling.replication.serialization.ReplicationPackageReadingException;
 import org.apache.sling.replication.transport.authentication.TransportAuthenticationProvider;
 import org.osgi.framework.BundleContext;
@@ -92,12 +94,12 @@ public class RemoteReplicationPackageImp
 
     }
 
-    public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageReadingException {
+    public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageImportException {
         return importer.importPackage(resourceResolver, replicationPackage);
     }
 
-    public ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException {
-        return importer.readPackage(resourceResolver, stream);
+    public ReplicationPackage uploadPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageUploadException {
+        return importer.uploadPackage(resourceResolver, stream);
     }
 
     public <ComponentType extends ReplicationComponent> ComponentType getComponent(Class<ComponentType> type, String componentName) {

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RepositoryReplicationPackageImporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RepositoryReplicationPackageImporter.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RepositoryReplicationPackageImporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RepositoryReplicationPackageImporter.java Tue Oct 28 11:01:29 2014
@@ -38,7 +38,9 @@ import org.apache.sling.replication.comm
 import org.apache.sling.replication.event.ReplicationEventFactory;
 import org.apache.sling.replication.event.ReplicationEventType;
 import org.apache.sling.replication.packaging.ReplicationPackage;
+import org.apache.sling.replication.packaging.ReplicationPackageImportException;
 import org.apache.sling.replication.packaging.ReplicationPackageImporter;
+import org.apache.sling.replication.packaging.ReplicationPackageUploadException;
 import org.apache.sling.replication.serialization.ReplicationPackageReadingException;
 import org.apache.sling.replication.transport.authentication.TransportAuthenticationContext;
 import org.apache.sling.replication.transport.authentication.TransportAuthenticationProvider;
@@ -49,9 +51,6 @@ import org.slf4j.LoggerFactory;
  * {@link ReplicationPackageImporter} importing
  * {@link ReplicationPackage} stream + type into an underlying JCR repository.
  */
-@Component(label = "Repository Replication Package Importer")
-@Service(value = ReplicationPackageImporter.class)
-@Property(name = "name", value = RepositoryReplicationPackageImporter.NAME)
 public class RepositoryReplicationPackageImporter implements ReplicationPackageImporter {
 
     static final String NAME = "repository";
@@ -60,13 +59,10 @@ public class RepositoryReplicationPackag
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
-    @Reference
     private SlingRepository repository;
 
-    @Reference
     private ReplicationEventFactory replicationEventFactory;
 
-    @Reference
     private TransportAuthenticationProvider<SlingRepository, Session> transportAuthenticationProvider;
 
     public void deliverPackageToEndpoint(ReplicationPackage replicationPackage, ReplicationEndpoint replicationEndpoint)
@@ -113,11 +109,11 @@ public class RepositoryReplicationPackag
         }
     }
 
-    public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageReadingException {
+    public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageImportException {
         return false;
     }
 
-    public ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException {
+    public ReplicationPackage uploadPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageUploadException {
         return null;
     }
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/AbstractReplicationPackageBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/AbstractReplicationPackageBuilder.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/AbstractReplicationPackageBuilder.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/AbstractReplicationPackageBuilder.java Tue Oct 28 11:01:29 2014
@@ -141,9 +141,7 @@ public abstract class AbstractReplicatio
         } catch (Exception e) {
             throw new ReplicationPackageReadingException(e);
         } finally {
-            if (session != null) {
-                session.logout();
-            }
+            ungetSession(session);
         }
 
         return false;
@@ -171,6 +169,10 @@ public abstract class AbstractReplicatio
         return session;
     }
 
+    protected void ungetSession(Session session) {
+
+    }
+
 
     protected abstract ReplicationPackage createPackageForAdd(ResourceResolver resourceResolver, ReplicationRequest request)
             throws ReplicationPackageBuildingException;

Added: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/ResourceSharedReplicationPackage.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/ResourceSharedReplicationPackage.java?rev=1634843&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/ResourceSharedReplicationPackage.java (added)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/ResourceSharedReplicationPackage.java Tue Oct 28 11:01:29 2014
@@ -0,0 +1,141 @@
+/*
+ * 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.replication.serialization.impl;
+
+import org.apache.sling.api.resource.ModifiableValueMap;
+import org.apache.sling.api.resource.PersistenceException;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.replication.packaging.ReplicationPackage;
+import org.apache.sling.replication.packaging.ReplicationPackageInfo;
+import org.apache.sling.replication.packaging.SharedReplicationPackage;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ResourceSharedReplicationPackage implements SharedReplicationPackage {
+    private final Logger log = LoggerFactory.getLogger(getClass());
+    private static final Object syncObject = new Object();
+
+
+    private static final String  PN_REFERENCE_COUNT = "ref.count";
+
+    private final ResourceResolver resourceResolver;
+    private final String packagePath;
+    private final ReplicationPackage replicationPackage;
+
+    public ResourceSharedReplicationPackage(ResourceResolver resourceResolver, String packagePath, ReplicationPackage replicationPackage) {
+        this.resourceResolver = resourceResolver;
+        this.packagePath = packagePath;
+        this.replicationPackage = replicationPackage;
+    }
+
+    public void acquire() {
+        synchronized (syncObject) {
+            Resource resource = getProxyResource();
+            ModifiableValueMap valueMap = resource.adaptTo(ModifiableValueMap.class);
+            int refCount = valueMap.get(PN_REFERENCE_COUNT, 0);
+            refCount ++;
+            valueMap.put(PN_REFERENCE_COUNT, refCount);
+
+            try {
+                resourceResolver.commit();
+            } catch (PersistenceException e) {
+                log.error("cannot release package", e);
+            }
+        }
+    }
+
+    public void release() {
+        synchronized (syncObject) {
+            Resource resource = getProxyResource();
+            ModifiableValueMap valueMap = resource.adaptTo(ModifiableValueMap.class);
+            int refCount = valueMap.get(PN_REFERENCE_COUNT, 0);
+            refCount --;
+
+            if (refCount > 0) {
+                valueMap.put(PN_REFERENCE_COUNT, refCount);
+            }
+            else {
+                delete();
+            }
+
+            try {
+                resourceResolver.commit();
+            } catch (PersistenceException e) {
+                log.error("cannot release package", e);
+            }
+        }
+    }
+
+
+
+    public String getId() {
+        return packagePath;
+    }
+
+    public String[] getPaths() {
+        return replicationPackage.getPaths();
+    }
+
+    public String getAction() {
+        return replicationPackage.getAction();
+    }
+
+    public String getType() {
+        return replicationPackage.getType();
+    }
+
+    public InputStream createInputStream() throws IOException {
+        return replicationPackage.createInputStream();
+    }
+
+    public long getLength() {
+        return replicationPackage.getLength();
+    }
+
+    public void delete() {
+        Resource resource = getProxyResource();
+        try {
+            resourceResolver.delete(resource);
+            resourceResolver.commit();
+        } catch (PersistenceException e) {
+            log.error("cannot delete shared resource", e);
+        }
+        replicationPackage.delete();
+    }
+
+    public ReplicationPackageInfo getInfo() {
+        return replicationPackage.getInfo();
+    }
+
+    public ReplicationPackage getPackage() {
+        return replicationPackage;
+    }
+
+
+    private Resource getProxyResource() {
+        Resource resource = resourceResolver.getResource(packagePath);
+        return resource;
+    }
+
+}

Added: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/ResourceSharedReplicationPackageBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/ResourceSharedReplicationPackageBuilder.java?rev=1634843&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/ResourceSharedReplicationPackageBuilder.java (added)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/ResourceSharedReplicationPackageBuilder.java Tue Oct 28 11:01:29 2014
@@ -0,0 +1,117 @@
+package org.apache.sling.replication.serialization.impl;
+
+
+import org.apache.sling.api.resource.*;
+import org.apache.sling.replication.communication.ReplicationRequest;
+import org.apache.sling.replication.packaging.ReplicationPackage;
+import org.apache.sling.replication.packaging.SharedReplicationPackage;
+import org.apache.sling.replication.serialization.ReplicationPackageBuilder;
+import org.apache.sling.replication.serialization.ReplicationPackageBuildingException;
+import org.apache.sling.replication.serialization.ReplicationPackageReadingException;
+
+import java.io.InputStream;
+import java.util.*;
+
+public class ResourceSharedReplicationPackageBuilder implements ReplicationPackageBuilder {
+
+    private String PN_ORIGINAL_ID = "original.package.id";
+    private String PN_ORIGINAL_ACTION = "original.package.action";
+    private String PN_ORIGINAL_PATHS = "original.package.paths";
+
+    private String PACKAGE_NAME_PREFIX = "replpackage";
+    private String sharedPackagesRoot = "/var/slingreplication/";
+
+    private final ReplicationPackageBuilder replicationPackageBuilder;
+
+    public ResourceSharedReplicationPackageBuilder(ReplicationPackageBuilder replicationPackageExporter) {
+        this.replicationPackageBuilder = replicationPackageExporter;
+    }
+
+
+
+    public ReplicationPackage createPackage(ResourceResolver resourceResolver, ReplicationRequest request) throws ReplicationPackageBuildingException {
+        ReplicationPackage replicationPackage = replicationPackageBuilder.createPackage(resourceResolver, request);
+
+        if (replicationPackage == null) {
+            return null;
+        }
+
+        try {
+            String packagePath = generatePathFromId(resourceResolver, replicationPackage);
+            ReplicationPackage sharedReplicationPackage = new ResourceSharedReplicationPackage(resourceResolver, packagePath, replicationPackage);
+
+            return sharedReplicationPackage;
+        }
+        catch (PersistenceException e) {
+            throw new ReplicationPackageBuildingException(e);
+        }
+    }
+
+    public ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException {
+        ReplicationPackage replicationPackage = replicationPackageBuilder.readPackage(resourceResolver, stream);
+
+        if (replicationPackage == null) {
+            return null;
+        }
+
+        try {
+            String packagePath = generatePathFromId(resourceResolver, replicationPackage);
+            ReplicationPackage sharedReplicationPackage = new ResourceSharedReplicationPackage(resourceResolver, packagePath, replicationPackage);
+
+            return sharedReplicationPackage;
+        }
+        catch (PersistenceException e) {
+            throw new ReplicationPackageReadingException(e);
+        }
+    }
+
+    public ReplicationPackage getPackage(ResourceResolver resourceResolver, String replicationPackageId) {
+        String originalPackageId = retrieveIdFromPath(resourceResolver, replicationPackageId);
+        ReplicationPackage replicationPackage = replicationPackageBuilder.getPackage(resourceResolver, originalPackageId);
+
+        if (replicationPackage == null) {
+            return null;
+        }
+
+        ReplicationPackage sharedReplicationPackage = new ResourceSharedReplicationPackage(resourceResolver, replicationPackageId, replicationPackage);
+
+        return sharedReplicationPackage;
+    }
+
+    public boolean installPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageReadingException {
+        if (! (replicationPackage instanceof ResourceSharedReplicationPackage)) {
+            return false;
+        }
+
+        ResourceSharedReplicationPackage sharedReplicationPackage = (ResourceSharedReplicationPackage) replicationPackage;
+
+        ReplicationPackage originalPackage = sharedReplicationPackage.getPackage();
+        return replicationPackageBuilder.installPackage(resourceResolver, originalPackage);
+    }
+
+
+    private String generatePathFromId(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws PersistenceException {
+        String name = PACKAGE_NAME_PREFIX + "_" + System.currentTimeMillis() + "_" +  UUID.randomUUID();
+        String packagePath = sharedPackagesRoot + name;
+
+        Map<String, Object> properties = new HashMap<String, Object>();
+        properties.put(PN_ORIGINAL_ID, replicationPackage.getId());
+        properties.put(PN_ORIGINAL_ACTION, replicationPackage.getAction());
+        properties.put(PN_ORIGINAL_PATHS, replicationPackage.getPaths());
+
+        ResourceUtil.getOrCreateResource(resourceResolver, packagePath, properties, "nt:unstructured", true);
+        return packagePath;
+
+    }
+
+    private String retrieveIdFromPath(ResourceResolver resourceResolver, String packagePath) {
+        if (!packagePath.startsWith(sharedPackagesRoot)) return null;
+
+        Resource resource = resourceResolver.getResource(packagePath);
+
+        ValueMap properties = resource.adaptTo(ValueMap.class);
+
+
+        return properties.get(PN_ORIGINAL_ID, null);
+    }
+}

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilder.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilder.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilder.java Tue Oct 28 11:01:29 2014
@@ -98,9 +98,7 @@ public class FileVaultReplicationPackage
         } catch (Exception e) {
             throw new ReplicationPackageBuildingException(e);
         } finally {
-            if (session != null) {
-                session.logout();
-            }
+           ungetSession(session);
         }
     }
 
@@ -167,9 +165,7 @@ public class FileVaultReplicationPackage
             log.error("could not read / install the package", e);
             throw new ReplicationPackageReadingException(e);
         } finally {
-            if (session != null) {
-                session.logout();
-            }
+           ungetSession(session);
         }
         return false;
     }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageExporterServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageExporterServlet.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageExporterServlet.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageExporterServlet.java Tue Oct 28 11:01:29 2014
@@ -73,7 +73,7 @@ public class ReplicationPackageExporterS
 
         try {
             // get first item
-            List<ReplicationPackage> replicationPackages = replicationPackageExporter.exportPackage(resourceResolver, replicationRequest);
+            List<ReplicationPackage> replicationPackages = replicationPackageExporter.exportPackages(resourceResolver, replicationRequest);
 
             if (replicationPackages.size() > 0) {
                 log.info("{} package(s) available for fetching, the first will be delivered", replicationPackages.size());

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageImporterServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageImporterServlet.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageImporterServlet.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageImporterServlet.java Tue Oct 28 11:01:29 2014
@@ -66,9 +66,10 @@ public class ReplicationPackageImporterS
         InputStream stream = request.getInputStream();
         ResourceResolver resourceResolver = request.getResourceResolver();
         try {
-            ReplicationPackage replicationPackage = replicationPackageImporter.readPackage(resourceResolver, stream);
+            ReplicationPackage replicationPackage = replicationPackageImporter.uploadPackage(resourceResolver, stream);
             if (replicationPackage != null) {
                 success = replicationPackageImporter.importPackage(resourceResolver, replicationPackage);
+                replicationPackage.delete();
             }
             if (!success) {
                 log.warn("cannot import replication package from request {}", request);

Modified: sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentTest.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentTest.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentTest.java Tue Oct 28 11:01:29 2014
@@ -73,7 +73,7 @@ public class SimpleReplicationAgentTest 
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
 
         when(replicationPackage.getPaths()).thenReturn(new String[]{"/"});
-        when(packageExporter.exportPackage(any(ResourceResolver.class), any(ReplicationRequest.class)))
+        when(packageExporter.exportPackages(any(ResourceResolver.class), any(ReplicationRequest.class)))
                 .thenReturn(Arrays.asList(replicationPackage));
         when(queueProvider.getDefaultQueue(name)).thenReturn(
                 new SimpleReplicationQueue(name, "name"));
@@ -106,7 +106,7 @@ public class SimpleReplicationAgentTest 
         ReplicationQueueItemState state = new ReplicationQueueItemState();
         state.setItemState(ReplicationQueueItemState.ItemState.SUCCEEDED);
         when(distributionHandler.add(any(String.class), any(ReplicationQueueItem.class), eq(queueProvider))).thenReturn(state);
-        when(packageExporter.exportPackage(any(ResourceResolver.class), any(ReplicationRequest.class)))
+        when(packageExporter.exportPackages(any(ResourceResolver.class), any(ReplicationRequest.class)))
                 .thenReturn(Arrays.asList(replicationPackage));
         when(queueProvider.getDefaultQueue(name)).thenReturn(
                 new SimpleReplicationQueue(name, "name"));
@@ -137,9 +137,10 @@ public class SimpleReplicationAgentTest 
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
 
         when(replicationPackage.getPaths()).thenReturn(new String[]{"/"});
-        when(packageExporter.exportPackage(resourceResolver, request)).thenReturn(Arrays.asList(replicationPackage));
+        when(packageExporter.exportPackages(resourceResolver, request)).thenReturn(Arrays.asList(replicationPackage));
         when(queueProvider.getDefaultQueue(name)).thenReturn(
                 new SimpleReplicationQueue(name, "name"));
+
         agent.execute(resourceResolver, request);
     }
 

Modified: sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterTest.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterTest.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterTest.java Tue Oct 28 11:01:29 2014
@@ -41,7 +41,7 @@ public class LocalReplicationPackageExpo
         LocalReplicationPackageExporter localReplicationPackageExporter = new LocalReplicationPackageExporter(packageBuilder);
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
         ReplicationRequest replicationRequest = mock(ReplicationRequest.class);
-        List<ReplicationPackage> replicationPackages = localReplicationPackageExporter.exportPackage(resourceResolver, replicationRequest);
+        List<ReplicationPackage> replicationPackages = localReplicationPackageExporter.exportPackages(resourceResolver, replicationRequest);
         assertNotNull(replicationPackages);
         assertTrue(replicationPackages.isEmpty());
     }

Modified: sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterTest.java?rev=1634843&r1=1634842&r2=1634843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterTest.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterTest.java Tue Oct 28 11:01:29 2014
@@ -47,7 +47,7 @@ public class RemoteReplicationPackageExp
                     packageBuilder, authProvider, endpoints, strategy.name(), 1);
             ResourceResolver resourceResolver = mock(ResourceResolver.class);
             ReplicationRequest replicationRequest = mock(ReplicationRequest.class);
-            List<ReplicationPackage> replicationPackages = remoteReplicationPackageExporter.exportPackage(resourceResolver, replicationRequest);
+            List<ReplicationPackage> replicationPackages = remoteReplicationPackageExporter.exportPackages(resourceResolver, replicationRequest);
             assertNotNull(replicationPackages);
             assertTrue(replicationPackages.isEmpty());
         }