Author: tommaso Date: Wed Oct 15 07:49:18 2014 New Revision: 1631965 URL: http://svn.apache.org/r1631965 Log: SLING-3899 - correct check on agent session
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/packaging/impl/exporter/strategy/PrivilegeReplicationPackageExporterStrategy.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=1631965&r1=1631964&r2=1631965&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 Wed Oct 15 07:49:18 2014 @@ -141,7 +141,15 @@ public class SimpleReplicationAgent impl List<ReplicationPackage> exportedPackages = replicationPackageExporterStrategy.exportPackages(resourceResolver, replicationRequest, - replicationPackageExporter); + new ReplicationPackageExporter() { + public List<ReplicationPackage> exportPackage(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException { + return replicationPackageExporter.exportPackage(getAgentResourceResolver(), replicationRequest); + } + + public ReplicationPackage exportPackageById(ResourceResolver resourceResolver, String replicationPackageId) { + return replicationPackageExporter.exportPackageById(getAgentResourceResolver(), replicationPackageId); + } + }); replicationPackages.addAll(exportedPackages); return replicationPackages; @@ -242,7 +250,7 @@ public class SimpleReplicationAgent impl private boolean processTransportQueue(ReplicationQueueItem queueItem) { boolean success = false; log.debug("reading package with id {}", queueItem.getId()); - ResourceResolver resourceResolver = getResourceResolver(); + ResourceResolver resourceResolver = getAgentResourceResolver(); try { ReplicationPackage replicationPackage = replicationPackageExporter.exportPackageById(resourceResolver, queueItem.getId()); @@ -263,7 +271,7 @@ public class SimpleReplicationAgent impl return success; } - private ResourceResolver getResourceResolver() { + private ResourceResolver getAgentResourceResolver() { ResourceResolver resourceResolver = null; Map<String, Object> authenticationInfo = new HashMap<String, Object>(); @@ -293,7 +301,7 @@ public class SimpleReplicationAgent impl public void handle(ReplicationRequest request) { try { - ResourceResolver resourceResolver = getResourceResolver(); + ResourceResolver resourceResolver = getAgentResourceResolver(); agent.execute(resourceResolver, request); } catch (AgentReplicationException e) { log.error("Error executing handler", e); Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/PrivilegeReplicationPackageExporterStrategy.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/PrivilegeReplicationPackageExporterStrategy.java?rev=1631965&r1=1631964&r2=1631965&view=diff ============================================================================== --- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/PrivilegeReplicationPackageExporterStrategy.java (original) +++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/PrivilegeReplicationPackageExporterStrategy.java Wed Oct 15 07:49:18 2014 @@ -31,7 +31,6 @@ import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.security.AccessControlManager; import javax.jcr.security.Privilege; -import java.nio.file.AccessDeniedException; import java.util.List; import java.util.Map; @@ -76,7 +75,7 @@ public class PrivilegeReplicationPackage throws RepositoryException, ReplicationPackageBuildingException { AccessControlManager acMgr = session.getAccessControlManager(); - Privilege[] privileges = new Privilege[] { acMgr.privilegeFromName(jcrPrivilege) }; + Privilege[] privileges = new Privilege[] { acMgr.privilegeFromName(jcrPrivilege), acMgr.privilegeFromName(Privilege.JCR_READ) }; for (String path : paths) { if(!acMgr.hasPrivileges(path, privileges)) { throw new ReplicationPackageBuildingException("Not enough privileges"); @@ -89,7 +88,7 @@ public class PrivilegeReplicationPackage throws RepositoryException, ReplicationPackageBuildingException { AccessControlManager acMgr = session.getAccessControlManager(); - Privilege[] privileges = new Privilege[] { acMgr.privilegeFromName(jcrPrivilege) }; + Privilege[] privileges = new Privilege[] { acMgr.privilegeFromName(jcrPrivilege), acMgr.privilegeFromName(Privilege.JCR_REMOVE_NODE) }; for (String path : paths) { if(session.nodeExists(path) && !acMgr.hasPrivileges(path, privileges)) { throw new ReplicationPackageBuildingException("Not enough privileges");