You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cs...@apache.org on 2021/01/25 14:45:44 UTC
[sling-whiteboard] branch master updated: SLING-10067 workaround
for quoting paths
This is an automated email from the ASF dual-hosted git repository.
cschneider pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
The following commit(s) were added to refs/heads/master by this push:
new c0214fb SLING-10067 workaround for quoting paths
c0214fb is described below
commit c0214fb71fad36a92db81742ab11de45defcb4c1
Author: Christian Schneider <cs...@adobe.com>
AuthorDate: Mon Jan 25 15:45:32 2021 +0100
SLING-10067 workaround for quoting paths
---
.../distribution/chunked/ChunkedDistribution.java | 26 +++++++++++++++-------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/chunked-distribution/src/main/java/org/apache/sling/distribution/chunked/ChunkedDistribution.java b/chunked-distribution/src/main/java/org/apache/sling/distribution/chunked/ChunkedDistribution.java
index f040c94..b88dd8c 100644
--- a/chunked-distribution/src/main/java/org/apache/sling/distribution/chunked/ChunkedDistribution.java
+++ b/chunked-distribution/src/main/java/org/apache/sling/distribution/chunked/ChunkedDistribution.java
@@ -21,6 +21,7 @@ package org.apache.sling.distribution.chunked;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
+import java.util.regex.Pattern;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
@@ -62,19 +63,19 @@ public class ChunkedDistribution implements JobExecutor {
@Override
public JobExecutionResult process(Job job, JobExecutionContext context) {
+ String path = requireParam(job, KEY_PATH, String.class);
+ String modeSt = requireParam(job, KEY_MODE, String.class);
+ Mode mode = Mode.valueOf(modeSt);
+ Integer chunkSize = requireParam(job, KEY_CHUNK_SIZE, Integer.class);
+ log.info("Starting chunked tree distribution for path {}", path);
try {
- String path = requireParam(job, KEY_PATH, String.class);
- String modeSt = requireParam(job, KEY_MODE, String.class);
- Mode mode = Mode.valueOf(modeSt);
- Integer chunkSize = requireParam(job, KEY_CHUNK_SIZE, Integer.class);
- log.info("Starting chunked tree distribution for path {}", path);
try (ResourceResolver resolver = resolverFactory.getServiceResourceResolver(null)) {
distribute(resolver, path, mode, chunkSize, context);
log.info("Finished chunked tree distribution for path {}", path);
return context.result().succeeded();
}
} catch (Exception e) {
- log.warn(e.getMessage(), e);
+ log.warn("Error distributing tree {} with mode {}", path, mode, e);
context.log(e.getMessage());
return context.result().message(e.getMessage()).cancelled();
}
@@ -119,7 +120,7 @@ public class ChunkedDistribution implements JobExecutor {
private void distributeChunk(ResourceResolver resolver, List<String> paths, JobExecutionContext context) {
try {
- String[] pathsAr = paths.toArray(new String[] {});
+ String[] pathsAr = quote(paths);
DistributionRequest request = new SimpleDistributionRequest(DistributionRequestType.ADD, pathsAr);
distributor.distribute("publish", resolver, request);
} catch (Exception e) {
@@ -128,5 +129,14 @@ public class ChunkedDistribution implements JobExecutor {
throw new RuntimeException(msg, e);
}
}
-
+
+ private String[] quote(List<String> paths) {
+ return paths.stream().map(this::quotePath).toArray(String[]::new);
+ }
+
+ // Workaround for https://issues.apache.org/jira/browse/SLING-10088
+ private String quotePath(String path) {
+ return (path.contains("(")) ? Pattern.quote(path) : path;
+ }
+
}