You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ra...@apache.org on 2016/11/28 18:11:41 UTC

svn commit: r1771783 - in /sling/trunk/bundles/scripting: api/ api/src/main/java/org/apache/sling/scripting/api/resource/ core/ core/src/main/java/org/apache/sling/scripting/core/impl/

Author: radu
Date: Mon Nov 28 18:11:41 2016
New Revision: 1771783

URL: http://svn.apache.org/viewvc?rev=1771783&view=rev
Log:
SLING-6165 - Expose a service for Sling Scripting that provides request-scoped Resource Resolvers for scripting dependencies

* correctly register the ScriptingResourceResolverProviderImpl as a ServletRequestListener through Whiteboard
* extended the ResourceResolverWrapper provided through SLING-6336, in order to avoid importing the
org.apache.sling.api.resource package with a minor-limited import range

Modified:
    sling/trunk/bundles/scripting/api/pom.xml
    sling/trunk/bundles/scripting/api/src/main/java/org/apache/sling/scripting/api/resource/ScriptingResourceResolverProvider.java
    sling/trunk/bundles/scripting/api/src/main/java/org/apache/sling/scripting/api/resource/package-info.java
    sling/trunk/bundles/scripting/core/pom.xml
    sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolver.java
    sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolverProviderImpl.java

Modified: sling/trunk/bundles/scripting/api/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/api/pom.xml?rev=1771783&r1=1771782&r2=1771783&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/api/pom.xml (original)
+++ sling/trunk/bundles/scripting/api/pom.xml Mon Nov 28 18:11:41 2016
@@ -56,7 +56,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.api</artifactId>
-            <version>2.11.0</version>
+            <version>2.15.1-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

Modified: sling/trunk/bundles/scripting/api/src/main/java/org/apache/sling/scripting/api/resource/ScriptingResourceResolverProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/api/src/main/java/org/apache/sling/scripting/api/resource/ScriptingResourceResolverProvider.java?rev=1771783&r1=1771782&r2=1771783&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/api/src/main/java/org/apache/sling/scripting/api/resource/ScriptingResourceResolverProvider.java (original)
+++ sling/trunk/bundles/scripting/api/src/main/java/org/apache/sling/scripting/api/resource/ScriptingResourceResolverProvider.java Mon Nov 28 18:11:41 2016
@@ -17,8 +17,7 @@
 package org.apache.sling.scripting.api.resource;
 
 import org.apache.sling.api.resource.ResourceResolver;
-
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
 
 /**
  * The {@code ScriptingResourceResolverProvider} provides methods to obtain {@link ResourceResolver}s that can be used by scripting

Modified: sling/trunk/bundles/scripting/api/src/main/java/org/apache/sling/scripting/api/resource/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/api/src/main/java/org/apache/sling/scripting/api/resource/package-info.java?rev=1771783&r1=1771782&r2=1771783&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/api/src/main/java/org/apache/sling/scripting/api/resource/package-info.java (original)
+++ sling/trunk/bundles/scripting/api/src/main/java/org/apache/sling/scripting/api/resource/package-info.java Mon Nov 28 18:11:41 2016
@@ -22,8 +22,7 @@
  * context of a Servlet API Request might lead to improper cleaning of objects whose life-cycle should not be longer than the request to
  * which they're bound to (for example per-thread objects)</i>.</p>
  *
- * <p>This package depends on the {@link org.apache.sling.api.resource} API, version 2.9.0 (bundle {@code org.apache.sling.api}, version
- * 2.11.0).</p>
+ * <p>This package depends on the {@link org.apache.sling.api.resource} API, version >= 2.10.0.</p>
  */
 @Version("1.0.0")
 package org.apache.sling.scripting.api.resource;

Modified: sling/trunk/bundles/scripting/core/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/pom.xml?rev=1771783&r1=1771782&r2=1771783&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/core/pom.xml (original)
+++ sling/trunk/bundles/scripting/core/pom.xml Mon Nov 28 18:11:41 2016
@@ -124,7 +124,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.api</artifactId>
-            <version>2.14.2</version>
+            <version>2.15.1-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

Modified: sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolver.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolver.java?rev=1771783&r1=1771782&r2=1771783&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolver.java (original)
+++ sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolver.java Mon Nov 28 18:11:41 2016
@@ -18,20 +18,17 @@ package org.apache.sling.scripting.core.
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
-import java.util.Iterator;
 import java.util.Map;
 import javax.annotation.Nonnull;
-import javax.servlet.http.HttpServletRequest;
 
 import org.apache.sling.api.resource.LoginException;
-import org.apache.sling.api.resource.PersistenceException;
-import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverWrapper;
 import org.apache.sling.scripting.api.resource.ScriptingResourceResolverProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class ScriptingResourceResolver implements ResourceResolver {
+public class ScriptingResourceResolver extends ResourceResolverWrapper {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ScriptingResourceResolver.class);
 
@@ -39,101 +36,18 @@ public class ScriptingResourceResolver i
     private boolean shouldLogClosing = false;
 
     public ScriptingResourceResolver(boolean shouldLogClosing, ResourceResolver delegate) {
+        super(delegate);
         this.shouldLogClosing = shouldLogClosing;
         this.delegate = delegate;
     }
 
     @Nonnull
     @Override
-    public Resource resolve(@Nonnull HttpServletRequest request, @Nonnull String absPath) {
-        return delegate.resolve(request, absPath);
-    }
-
-    @Nonnull
-    @Override
-    public Resource resolve(@Nonnull String absPath) {
-        return delegate.resolve(absPath);
-    }
-
-    @Nonnull
-    @Override
-    public Resource resolve(@Nonnull HttpServletRequest request) {
-        return delegate.resolve(request);
-    }
-
-    @Nonnull
-    @Override
-    public String map(@Nonnull String resourcePath) {
-        return delegate.map(resourcePath);
-    }
-
-    @Override
-    public String map(@Nonnull HttpServletRequest request, @Nonnull String resourcePath) {
-        return delegate.map(request, resourcePath);
-    }
-
-    @Override
-    public Resource getResource(@Nonnull String path) {
-        return delegate.getResource(path);
-    }
-
-    @Override
-    public Resource getResource(Resource base, @Nonnull String path) {
-        return delegate.getResource(base, path);
-    }
-
-    @Nonnull
-    @Override
-    public String[] getSearchPath() {
-        return delegate.getSearchPath();
-    }
-
-    @Nonnull
-    @Override
-    public Iterator<Resource> listChildren(@Nonnull Resource parent) {
-        return delegate.listChildren(parent);
-    }
-
-    @Override
-    public Resource getParent(@Nonnull Resource child) {
-        return delegate.getParent(child);
-    }
-
-    @Nonnull
-    @Override
-    public Iterable<Resource> getChildren(@Nonnull Resource parent) {
-        return delegate.getChildren(parent);
-    }
-
-    @Nonnull
-    @Override
-    public Iterator<Resource> findResources(@Nonnull String query, String language) {
-        return delegate.findResources(query, language);
-    }
-
-    @Nonnull
-    @Override
-    public Iterator<Map<String, Object>> queryResources(@Nonnull String query, String language) {
-        return delegate.queryResources(query, language);
-    }
-
-    @Override
-    public boolean hasChildren(@Nonnull Resource resource) {
-        return delegate.hasChildren(resource);
-    }
-
-    @Nonnull
-    @Override
     public ResourceResolver clone(Map<String, Object> authenticationInfo) throws LoginException {
         return new ScriptingResourceResolver(shouldLogClosing, delegate.clone(null));
     }
 
     @Override
-    public boolean isLive() {
-        return delegate.isLive();
-    }
-
-    @Override
     public void close() {
         LOGGER.warn("Attempted to call close on the scripting per-request resource resolver. This is handled automatically by the {}.",
                 ScriptingResourceResolverProvider.class.getName());
@@ -149,80 +63,4 @@ public class ScriptingResourceResolver i
         delegate.close();
     }
 
-    @Override
-    public String getUserID() {
-        return delegate.getUserID();
-    }
-
-    @Nonnull
-    @Override
-    public Iterator<String> getAttributeNames() {
-        return delegate.getAttributeNames();
-    }
-
-    @Override
-    public Object getAttribute(@Nonnull String name) {
-        return delegate.getAttribute(name);
-    }
-
-    @Override
-    public void delete(@Nonnull Resource resource) throws PersistenceException {
-        delegate.delete(resource);
-    }
-
-    @Nonnull
-    @Override
-    public Resource create(@Nonnull Resource parent, @Nonnull String name, Map<String, Object> properties) throws PersistenceException {
-        return delegate.create(parent, name, properties);
-    }
-
-    @Override
-    public void revert() {
-        delegate.revert();
-    }
-
-    @Override
-    public void commit() throws PersistenceException {
-        delegate.commit();
-    }
-
-    @Override
-    public boolean hasChanges() {
-        return delegate.hasChanges();
-    }
-
-    @Override
-    public String getParentResourceType(Resource resource) {
-        return delegate.getParentResourceType(resource);
-    }
-
-    @Override
-    public String getParentResourceType(String resourceType) {
-        return delegate.getParentResourceType(resourceType);
-    }
-
-    @Override
-    public boolean isResourceType(Resource resource, String resourceType) {
-        return delegate.isResourceType(resource, resourceType);
-    }
-
-    @Override
-    public void refresh() {
-        delegate.refresh();
-    }
-
-    @Override
-    public Resource copy(String srcAbsPath, String destAbsPath) throws PersistenceException {
-        return delegate.copy(srcAbsPath, destAbsPath);
-    }
-
-    @Override
-    public Resource move(String srcAbsPath, String destAbsPath) throws PersistenceException {
-        return delegate.move(srcAbsPath, destAbsPath);
-    }
-
-    @Override
-    public <AdapterType> AdapterType adaptTo(@Nonnull Class<AdapterType> type) {
-        return delegate.adaptTo(type);
-    }
 }

Modified: sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolverProviderImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolverProviderImpl.java?rev=1771783&r1=1771782&r2=1771783&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolverProviderImpl.java (original)
+++ sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolverProviderImpl.java Mon Nov 28 18:11:41 2016
@@ -27,6 +27,7 @@ import org.osgi.framework.Constants;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
 import org.osgi.service.metatype.annotations.AttributeDefinition;
 import org.osgi.service.metatype.annotations.Designate;
 import org.osgi.service.metatype.annotations.ObjectClassDefinition;
@@ -37,7 +38,10 @@ import org.slf4j.LoggerFactory;
         service = {ScriptingResourceResolverProvider.class, ServletRequestListener.class},
         property = {
                 Constants.SERVICE_DESCRIPTION + "=Apache Sling Scripting Resource Resolver Provider",
-                Constants.SERVICE_VENDOR + "=The Apache Software Foundation"
+                Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
+                HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_SELECT + "=(" + HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_NAME +
+                        "=*)",
+                HttpWhiteboardConstants.HTTP_WHITEBOARD_LISTENER + "=true"
         }
 
 )
@@ -79,7 +83,7 @@ public class ScriptingResourceResolverPr
                 threadResolver = new ScriptingResourceResolver(logStackTraceOnResolverClose, delegate);
                 perThreadResourceResolver.set(threadResolver);
                 if (LOGGER.isDebugEnabled()) {
-                    LOGGER.debug("Setting per thread resource resolver for thread {}.", Thread.currentThread().getName());
+                    LOGGER.debug("Set per thread resource resolver for thread {}.", Thread.currentThread().getId());
                 }
             } catch (LoginException e) {
                 throw new IllegalStateException("Cannot create per thread resource resolver.", e);
@@ -99,10 +103,11 @@ public class ScriptingResourceResolverPr
         if (scriptingResourceResolver != null) {
             scriptingResourceResolver._close();
             perThreadResourceResolver.remove();
+            if (LOGGER.isDebugEnabled()) {
+                LOGGER.debug("Removed per thread resource resolver for thread {}.", Thread.currentThread().getId());
+            }
         }
-        if (LOGGER.isDebugEnabled()) {
-            LOGGER.debug("Removing per thread resource resolver for thread {}.", Thread.currentThread().getName());
-        }
+
     }
 
     @Activate