SLING-7140 Support redirects to URLs provided by the underlying resource provider.



git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1812621 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index cfddb76..6ebf489 100644
--- a/pom.xml
+++ b/pom.xml
@@ -92,7 +92,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.api</artifactId>
-            <version>2.7.0</version>
+            <version>2.16.3-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/src/main/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererServlet.java b/src/main/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererServlet.java
index b5e7bb9..1da4444 100644
--- a/src/main/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererServlet.java
+++ b/src/main/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererServlet.java
@@ -42,6 +42,7 @@
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.api.request.RequestDispatcherOptions;
+import org.apache.sling.api.resource.ExternalizableInputStream;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceMetadata;
 import org.apache.sling.api.resource.ResourceNotFoundException;
@@ -50,6 +51,7 @@
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.api.servlets.HttpConstants;
 import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.apache.sling.api.resource.ExternalizableInputStream;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -167,6 +169,10 @@
         }
         InputStream stream = resource.adaptTo(InputStream.class);
         if (stream != null) {
+            if ( stream instanceof ExternalizableInputStream) {
+                response.sendRedirect(((ExternalizableInputStream)stream).getURI().toString());
+                return;
+            }
             if (isHeadRequest(request)) {
                 setContentLength(response, resource.getResourceMetadata().getContentLength());
                 setHeaders(resource, response);