This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git
The following commit(s) were added to refs/heads/master by this push:
new 69c3a3e SLING-7792 - Resource Resolver should return more than one
resolved path if available
69c3a3e is described below
commit 69c3a3e19fcb90b14bd736bbf906bb9b6cd02a5e
Author: Robert Munteanu <[email protected]>
AuthorDate: Fri Aug 17 16:44:54 2018 +0200
SLING-7792 - Resource Resolver should return more than one resolved path
if available
Include the additional mapping information in the web console page.
---
.../console/ResourceResolverWebConsolePlugin.java | 34 ++++++++++++++++++++--
1 file changed, 31 insertions(+), 3 deletions(-)
diff --git
a/src/main/java/org/apache/sling/resourceresolver/impl/console/ResourceResolverWebConsolePlugin.java
b/src/main/java/org/apache/sling/resourceresolver/impl/console/ResourceResolverWebConsolePlugin.java
index 4aed714..99d7276 100644
---
a/src/main/java/org/apache/sling/resourceresolver/impl/console/ResourceResolverWebConsolePlugin.java
+++
b/src/main/java/org/apache/sling/resourceresolver/impl/console/ResourceResolverWebConsolePlugin.java
@@ -28,6 +28,7 @@ import java.util.Collection;
import java.util.Dictionary;
import java.util.HashSet;
import java.util.Hashtable;
+import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -40,6 +41,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.sling.api.request.ResponseUtil;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.mapping.ResourceMapper;
import org.apache.sling.api.resource.runtime.RuntimeService;
import org.apache.sling.api.resource.runtime.dto.ResourceProviderDTO;
import org.apache.sling.api.resource.runtime.dto.ResourceProviderFailureDTO;
@@ -153,7 +155,9 @@ public class ResourceResolverWebConsolePlugin extends
HttpServlet {
+ "current request into account, provide a full URL
whose "
+ "scheme/host/port prefix will then be used as the
request "
+ "information. The path passed to map will always be
the path part "
- + "of the URL.");
+ + "of the URL. In case multiple mapping candidates are
found, the "
+ + "primary one, which would be returned by
ResourceResolver.map, is "
+ + "clearly marked, and the others listed for
completeness.");
pw.println("<tr class='content'>");
pw.println("<td class='content'>Test</td>");
@@ -222,10 +226,11 @@ public class ResourceResolverWebConsolePlugin extends
HttpServlet {
// map or resolve as instructed
Object result;
if ("Map".equals(request.getParameter(ATTR_SUBMIT))) {
+ ResourceMapper mapper =
resolver.adaptTo(ResourceMapper.class);
if (helper.getServerName() == null) {
- result = resolver.map(helper.getPathInfo());
+ result =
mappingsToString(mapper.getAllMappings(helper.getPathInfo()));
} else {
- result = resolver.map(helper, helper.getPathInfo());
+ result =
mappingsToString(mapper.getAllMappings(helper.getPathInfo(), helper));
}
} else {
result = resolver.resolve(helper, helper.getPathInfo());
@@ -260,6 +265,29 @@ public class ResourceResolverWebConsolePlugin extends
HttpServlet {
response.sendRedirect(redirectTo);
}
+ private static String mappingsToString(Collection<String> allMappings) {
+ if ( allMappings.size() == 0 )
+ return ""; // should not happen
+ if ( allMappings.size() == 1)
+ return allMappings.iterator().next();
+
+ StringBuilder out = new StringBuilder();
+ for ( Iterator<String> it = allMappings.iterator(); it.hasNext(); ) {
+ if ( out.length() == 0 ) {
+ out.append("Primary: ").append(it.next());
+ if ( it.hasNext() )
+ out.append(". Other candidates:");
+ }
+ else
+ out.append(' ').append(it.next()).append(',');
+ }
+
+ out.setCharAt(out.length() - 1, '.');
+
+ return out.toString();
+
+ }
+
private String encodeParam(final String value) {
try {
return URLEncoder.encode(value, "UTF-8");