You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2009/05/20 21:36:56 UTC

svn commit: r776818 - in /incubator/sling/trunk/bundles/engine: ./ src/main/java/org/apache/sling/engine/impl/ src/main/java/org/apache/sling/engine/impl/request/

Author: fmeschbe
Date: Wed May 20 19:36:56 2009
New Revision: 776818

URL: http://svn.apache.org/viewvc?rev=776818&view=rev
Log:
SLING-979 Implement the Adaptable interface in the request and
response implementations based on the AdapterManager service
bound to the SlingMainServlet

Modified:
    incubator/sling/trunk/bundles/engine/pom.xml
    incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
    incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java
    incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java
    incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java

Modified: incubator/sling/trunk/bundles/engine/pom.xml
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/bundles/engine/pom.xml?rev=776818&r1=776817&r2=776818&view=diff
==============================================================================
--- incubator/sling/trunk/bundles/engine/pom.xml (original)
+++ incubator/sling/trunk/bundles/engine/pom.xml Wed May 20 19:36:56 2009
@@ -96,7 +96,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.api</artifactId>
-            <version>2.0.4-incubator</version>
+            <version>2.0.5-incubator-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>

Modified: incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java?rev=776818&r1=776817&r2=776818&view=diff
==============================================================================
--- incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java (original)
+++ incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java Wed May 20 19:36:56 2009
@@ -38,6 +38,7 @@
 import javax.servlet.http.HttpServletRequestWrapper;
 
 import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.adapter.AdapterManager;
 import org.apache.sling.api.request.RequestDispatcherOptions;
 import org.apache.sling.api.request.RequestParameter;
 import org.apache.sling.api.request.RequestParameterMap;
@@ -82,6 +83,20 @@
         return this.requestData;
     }
 
+    //---------- Adaptable interface
+    
+    public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
+        AdapterManager adapterManager = getRequestData().getAdapterManager();
+        if (adapterManager != null) {
+            return adapterManager.getAdapter(this, type);
+        }
+        
+        // no adapter manager, nothing to adapt to
+        return null;
+    }
+    
+    //---------- SlingHttpServletRequest interface
+
     ParameterSupport getParameterSupport() {
         return this.getRequestData().getParameterSupport();
     }

Modified: incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java?rev=776818&r1=776817&r2=776818&view=diff
==============================================================================
--- incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java (original)
+++ incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java Wed May 20 19:36:56 2009
@@ -35,6 +35,7 @@
 import javax.servlet.http.HttpServletResponseWrapper;
 
 import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.adapter.AdapterManager;
 import org.apache.sling.engine.impl.request.RequestData;
 import org.apache.sling.engine.servlets.ErrorHandler;
 
@@ -119,6 +120,20 @@
         return requestData;
     }
 
+    //---------- Adaptable interface
+    
+    public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
+        AdapterManager adapterManager = getRequestData().getAdapterManager();
+        if (adapterManager != null) {
+            return adapterManager.getAdapter(this, type);
+        }
+        
+        // no adapter manager, nothing to adapt to
+        return null;
+    }
+    
+    //---------- SlingHttpServletResponse interface
+    
     @Override
     public void flushBuffer() throws IOException {
         getRequestData().getContentData().flushBuffer();

Modified: incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java?rev=776818&r1=776817&r2=776818&view=diff
==============================================================================
--- incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java (original)
+++ incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java Wed May 20 19:36:56 2009
@@ -50,6 +50,7 @@
 import org.apache.sling.api.SlingException;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.adapter.AdapterManager;
 import org.apache.sling.api.request.RequestPathInfo;
 import org.apache.sling.api.request.RequestProgressTracker;
 import org.apache.sling.api.resource.Resource;
@@ -157,6 +158,9 @@
 
     /** @scr.reference cardinality="0..1" policy="dynamic" */
     private RequestLogger requestLogger;
+    
+    /** @scr.reference cardinality="0..1" policy="dynamic" */
+    private AdapterManager adapterManager;
 
     private SlingFilterChainHelper requestFilterChain = new SlingFilterChainHelper();
 
@@ -525,6 +529,14 @@
         ErrorHandler eh = errorHandler;
         return (eh != null) ? eh : this;
     }
+    
+    /**
+     * Returns the {@link AdapterManager} bound to this instance or
+     * <code>null</code> if no adapter manager is bound to this instance.
+     */
+    public AdapterManager getAdapterManager() {
+        return adapterManager;
+    }
 
     // ---------- Property Setter for SCR --------------------------------------
 
@@ -608,6 +620,7 @@
         }
     }
 
+    @SuppressWarnings("unused")
     protected void deactivate(ComponentContext componentContext) {
 
         // first of all, we have to unregister

Modified: incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java?rev=776818&r1=776817&r2=776818&view=diff
==============================================================================
--- incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java (original)
+++ incubator/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java Wed May 20 19:36:56 2009
@@ -42,6 +42,7 @@
 import org.apache.sling.api.SlingConstants;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.adapter.AdapterManager;
 import org.apache.sling.api.request.RecursionTooDeepException;
 import org.apache.sling.api.request.RequestPathInfo;
 import org.apache.sling.api.request.RequestProgressTracker;
@@ -636,6 +637,15 @@
         return activeServletName;
     }
 
+    /**
+     * Returns the <code>AdapterManager</code> instance bound to the
+     * {@link SlingMainServlet} of this request data instance. This may be
+     * <code>null</code> if no adapter manager is bound to the SlingMainServlet.
+     */
+    public AdapterManager getAdapterManager() {
+        return slingMainServlet.getAdapterManager();
+    }
+    
     // ---------- BufferProvider -----------------------------------------
 
     public BufferProvider getBufferProvider() {