diff --git a/Plugins/BatchProcessing/src/main/java/de/fraunhofer/iosb/ilt/frostserver/plugin/batchprocessing/BatchProcessor.java b/Plugins/BatchProcessing/src/main/java/de/fraunhofer/iosb/ilt/frostserver/plugin/batchprocessing/BatchProcessor.java index 3b1bb1364..f2b12a526 100644 --- a/Plugins/BatchProcessing/src/main/java/de/fraunhofer/iosb/ilt/frostserver/plugin/batchprocessing/BatchProcessor.java +++ b/Plugins/BatchProcessing/src/main/java/de/fraunhofer/iosb/ilt/frostserver/plugin/batchprocessing/BatchProcessor.java @@ -75,6 +75,7 @@ public Request processHttpRequest(Service service, Request httpRequest, boolean .withRequestType(type) .withUrl(httpRequest.getPath() == null ? null : StringHelper.urlDecode(httpRequest.getPath())) .withContent(httpRequest.getData()) + .withUserPrincipal(httpRequest.getUserPrincipal()) .build(); PluginService plugin = coreSettings.getPluginManager().getServiceForRequestType(serviceRequest.getVersion(), serviceRequest.getRequestType()); final ServiceResponseDefault serviceResponse = new ServiceResponseDefault(); @@ -136,7 +137,7 @@ public Content processChangeset(ServiceRequest batchRequest, Service service, Ba if (content instanceof Request) { Request request = (Request) content; request.updateUsingContentIds(contentIds); - + request.setUserPrincipal(changeset.getUserPrincipal()); Request httpResponse = processHttpRequest(service, request, true); if (httpResponse.isExecuteFailed()) { service.rollbackTransaction(); @@ -168,12 +169,14 @@ public Batch processBatch(ServiceRequest batchRequest, Service service, Batch Content content = part.getContent(); if (content instanceof Batch) { Batch changset = (Batch) content; + changset.setUserPrincipal(batchRequest.getUserPrincipal()); Content changesetResponse = processChangeset(batchRequest, service, changset); Part newPart = batchFactory.createPart(batchVersion, service.getSettings(), false, ""); newPart.setContent(changesetResponse); batchResponse.addPart(newPart); } else if (content instanceof Request) { Request request = (Request) content; + request.setUserPrincipal(batchRequest.getUserPrincipal()); Request httpResponse = processHttpRequest(service, request, false); Part newPart = batchFactory.createPart(batchVersion, service.getSettings(), false, ""); newPart.setContent(httpResponse); diff --git a/Plugins/BatchProcessing/src/main/java/de/fraunhofer/iosb/ilt/frostserver/plugin/batchprocessing/batch/Batch.java b/Plugins/BatchProcessing/src/main/java/de/fraunhofer/iosb/ilt/frostserver/plugin/batchprocessing/batch/Batch.java index 33062faf4..224c54da6 100644 --- a/Plugins/BatchProcessing/src/main/java/de/fraunhofer/iosb/ilt/frostserver/plugin/batchprocessing/batch/Batch.java +++ b/Plugins/BatchProcessing/src/main/java/de/fraunhofer/iosb/ilt/frostserver/plugin/batchprocessing/batch/Batch.java @@ -3,6 +3,7 @@ import de.fraunhofer.iosb.ilt.frostserver.path.Version; import de.fraunhofer.iosb.ilt.frostserver.service.ServiceRequest; import de.fraunhofer.iosb.ilt.frostserver.settings.CoreSettings; +import java.security.Principal; import java.util.ArrayList; import java.util.List; @@ -26,6 +27,7 @@ public abstract class Batch implements Content { protected final boolean isChangeSet; protected final Version batchVersion; + protected Principal userPrincipal; protected Batch(Version batchVersion, CoreSettings settings, boolean isChangeSet) { this.batchVersion = batchVersion; @@ -59,4 +61,12 @@ public Batch addPart(Part part) { return this; } + public Principal getUserPrincipal() { + return userPrincipal; + } + + public void setUserPrincipal(Principal userPrincipal) { + this.userPrincipal = userPrincipal; + } + } diff --git a/Plugins/BatchProcessing/src/main/java/de/fraunhofer/iosb/ilt/frostserver/plugin/batchprocessing/batch/Request.java b/Plugins/BatchProcessing/src/main/java/de/fraunhofer/iosb/ilt/frostserver/plugin/batchprocessing/batch/Request.java index 282964d40..12f89a9c3 100644 --- a/Plugins/BatchProcessing/src/main/java/de/fraunhofer/iosb/ilt/frostserver/plugin/batchprocessing/batch/Request.java +++ b/Plugins/BatchProcessing/src/main/java/de/fraunhofer/iosb/ilt/frostserver/plugin/batchprocessing/batch/Request.java @@ -3,6 +3,7 @@ import de.fraunhofer.iosb.ilt.frostserver.model.core.Id; import de.fraunhofer.iosb.ilt.frostserver.path.Version; import de.fraunhofer.iosb.ilt.frostserver.util.HttpMethod; +import java.security.Principal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -24,6 +25,8 @@ public abstract class Request implements Content { protected HttpMethod method; protected String version; protected String path; + /** Batch request user. */ + protected Principal userPrincipal; protected final Map headersOuter = new HashMap<>(); protected final Map headersInner = new HashMap<>(); @@ -134,6 +137,14 @@ public Map getHeaders() { return headersOuter; } + public Principal getUserPrincipal() { + return userPrincipal; + } + + public void setUserPrincipal(Principal userPrincipal) { + this.userPrincipal = userPrincipal; + } + public String getVersion() { return version; }