You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2020/04/24 09:59:48 UTC
[sling-org-apache-sling-servlets-resolver] branch issues/SLING-9365
updated: Remove servlet extensions from main scripts and adaptto servlets
directly if they are provided by us.
This is an automated email from the ASF dual-hosted git repository.
pauls pushed a commit to branch issues/SLING-9365
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-resolver.git
The following commit(s) were added to refs/heads/issues/SLING-9365 by this push:
new e2c3b19 Remove servlet extensions from main scripts and adaptto servlets directly if they are provided by us.
e2c3b19 is described below
commit e2c3b194d141ca3faf4f754e7fb6c3fa89b54269
Author: Karl Pauls <ka...@gmail.com>
AuthorDate: Fri Apr 24 11:59:32 2020 +0200
Remove servlet extensions from main scripts and adaptto servlets directly if they are provided by us.
---
.../apache/sling/servlets/resolver/internal/ScriptResource.java | 9 ++++++---
.../servlets/resolver/internal/ScriptResourceDecorator.java | 3 ++-
.../servlets/resolver/internal/resource/ServletResource.java | 2 +-
.../internal/resource/ServletResourceProviderFactory.java | 8 ++++++--
4 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/src/main/java/org/apache/sling/servlets/resolver/internal/ScriptResource.java b/src/main/java/org/apache/sling/servlets/resolver/internal/ScriptResource.java
index 0994f26..ff995bb 100644
--- a/src/main/java/org/apache/sling/servlets/resolver/internal/ScriptResource.java
+++ b/src/main/java/org/apache/sling/servlets/resolver/internal/ScriptResource.java
@@ -29,6 +29,7 @@ import org.apache.sling.api.resource.ResourceMetadata;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.api.scripting.SlingScript;
+import org.apache.sling.servlets.resolver.internal.resource.ServletResource;
/**
* ScriptResource is a resource wrapper of a resource fetched by a
@@ -100,9 +101,11 @@ public class ScriptResource extends AbstractResource {
@Override
public <AdapterType> AdapterType adaptTo(final Class<AdapterType> type) {
if ( type == Servlet.class ) {
- final Servlet s = (Servlet)super.adaptTo(type);
- if ( s != null ) {
- return (AdapterType)s;
+ if (! (this.getActiveResource() instanceof ServletResource)) {
+ final Servlet s = (Servlet) super.adaptTo(type);
+ if ( s != null ) {
+ return (AdapterType)s;
+ }
}
} else if ( type == SlingScript.class ) {
final SlingScript s = (SlingScript)super.adaptTo(type);
diff --git a/src/main/java/org/apache/sling/servlets/resolver/internal/ScriptResourceDecorator.java b/src/main/java/org/apache/sling/servlets/resolver/internal/ScriptResourceDecorator.java
index e7ec555..b2827d0 100644
--- a/src/main/java/org/apache/sling/servlets/resolver/internal/ScriptResourceDecorator.java
+++ b/src/main/java/org/apache/sling/servlets/resolver/internal/ScriptResourceDecorator.java
@@ -19,6 +19,7 @@
package org.apache.sling.servlets.resolver.internal;
import java.util.Iterator;
+import javax.servlet.Servlet;
import javax.servlet.http.HttpServletRequest;
import org.apache.sling.api.resource.Resource;
@@ -71,7 +72,7 @@ public class ScriptResourceDecorator implements ResourceDecorator
@Override
public ResourceResolver getResourceResolver()
{
- return resource.getResourceResolver();
+ return new ScriptResourceResolver(resource.getResourceResolver(), () -> m_provider);
}
@Override
diff --git a/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResource.java b/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResource.java
index 9ee7266..16d1c5a 100644
--- a/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResource.java
+++ b/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResource.java
@@ -31,7 +31,7 @@ import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.api.wrappers.ValueMapDecorator;
-class ServletResource extends AbstractResource {
+public class ServletResource extends AbstractResource {
private final ResourceResolver resourceResolver;
diff --git a/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderFactory.java b/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderFactory.java
index e4f6995..7e61e31 100644
--- a/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderFactory.java
+++ b/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderFactory.java
@@ -34,6 +34,7 @@ import java.util.Set;
import javax.servlet.Servlet;
+import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.api.servlets.HttpConstants;
@@ -220,8 +221,11 @@ public class ServletResourceProviderFactory {
// add the unmodified path
pathSet.add(path);
- // ensure we have another entry which has the .servlet ext.
- pathSet.add(ensureServletNameExtension(path));
+ if (StringUtils.isEmpty(FilenameUtils.getExtension(path))) {
+ // ensure we have another entry which has the .servlet ext. if there wasn't one to begin with
+ // Radu says: this will make sure that scripts are equal to servlets in the resolution process
+ pathSet.add(ensureServletNameExtension(path));
+ }
}
}
}