You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ju...@apache.org on 2010/06/11 05:17:30 UTC
svn commit: r953549 - in /sling/trunk/bundles:
api/src/main/java/org/apache/sling/api/scripting/SlingScriptHelper.java
scripting/core/pom.xml
scripting/core/src/main/java/org/apache/sling/scripting/core/ScriptHelper.java
Author: justin
Date: Fri Jun 11 03:17:27 2010
New Revision: 953549
URL: http://svn.apache.org/viewvc?rev=953549&view=rev
Log:
SLING-1552 - implementing include/forward methods using Resource objects
Modified:
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/scripting/SlingScriptHelper.java
sling/trunk/bundles/scripting/core/pom.xml
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/ScriptHelper.java
Modified: sling/trunk/bundles/api/src/main/java/org/apache/sling/api/scripting/SlingScriptHelper.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/scripting/SlingScriptHelper.java?rev=953549&r1=953548&r2=953549&view=diff
==============================================================================
--- sling/trunk/bundles/api/src/main/java/org/apache/sling/api/scripting/SlingScriptHelper.java (original)
+++ sling/trunk/bundles/api/src/main/java/org/apache/sling/api/scripting/SlingScriptHelper.java Fri Jun 11 03:17:27 2010
@@ -21,6 +21,7 @@ package org.apache.sling.api.scripting;
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.Resource;
/**
* The <code>SlingScriptHelper</code> interface defines the API of a helper
@@ -114,6 +115,73 @@ public interface SlingScriptHelper {
void include(String path, RequestDispatcherOptions options);
/**
+ * Same as {@link #include(Resource,RequestDispatcherOptions)}, but using
+ * empty options.
+ *
+ * @throws org.apache.sling.api.SlingIOException Wrapping a <code>IOException</code> thrown
+ * while handling the include.
+ * @throws org.apache.sling.api.SlingServletException Wrapping a <code>ServletException</code>
+ * thrown while handling the include.
+ */
+ void include(Resource resource);
+
+ /**
+ * Helper method to include the result of processing the request for the
+ * given <code>resource</code> and <code>requestDispatcherOptions</code>.
+ * This method is intended to be implemented as follows:
+ *
+ * <pre>
+ * RequestDispatcher dispatcher = getRequest().getRequestDispatcher(resource,
+ * "option:xyz");
+ * if (dispatcher != null) {
+ * dispatcher.include(getRequest(), getResponse());
+ * }
+ * </pre>
+ *
+ * <p>
+ * This method creates a <code>RequestDispatcherOptions</code> object by
+ * calling the
+ * {@link RequestDispatcherOptions#RequestDispatcherOptions(String)}
+ * constructor.
+ *
+ * @param resource The resource to include.
+ * @param requestDispatcherOptions influence the rendering of the included
+ * Resource
+ * @throws org.apache.sling.api.SlingIOException Wrapping a <code>IOException</code> thrown
+ * while handling the include.
+ * @throws org.apache.sling.api.SlingServletException Wrapping a <code>ServletException</code>
+ * thrown while handling the include.
+ * @see RequestDispatcherOptions#RequestDispatcherOptions(String)
+ * @see #include(String, RequestDispatcherOptions)
+ */
+ void include(Resource resource, String requestDispatcherOptions);
+
+ /**
+ * Helper method to include the result of processing the request for the
+ * given <code>resource</code> and <code>options</code>. This method is
+ * intended to be implemented as follows:
+ *
+ * <pre>
+ * RequestDispatcherOptions opts = new RequestDispatcherOptions();
+ * opts.put("option", "xyz");
+ * RequestDispatcher dispatcher = getRequest().getRequestDispatcher(resource, opts);
+ * if (dispatcher != null) {
+ * dispatcher.include(getRequest(), getResponse());
+ * }
+ * </pre>
+ *
+ * @param path The resource to include.
+ * @param options influence the rendering of the included Resource
+ * @throws org.apache.sling.api.SlingIOException Wrapping a <code>IOException</code> thrown
+ * while handling the include.
+ * @throws org.apache.sling.api.SlingServletException Wrapping a <code>ServletException</code>
+ * thrown while handling the include.
+ * @see RequestDispatcherOptions
+ * @see #include(String, String)
+ */
+ void include(Resource resource, RequestDispatcherOptions options);
+
+ /**
* Same as {@link #forward(String,RequestDispatcherOptions)}, but using
* empty options.
*
@@ -181,6 +249,73 @@ public interface SlingScriptHelper {
void forward(String path, RequestDispatcherOptions options);
/**
+ * Same as {@link #forward(Resource,RequestDispatcherOptions)}, but using
+ * empty options.
+ *
+ * @throws org.apache.sling.api.SlingIOException Wrapping a <code>IOException</code> thrown
+ * while handling the forward.
+ * @throws org.apache.sling.api.SlingServletException Wrapping a <code>ServletException</code>
+ * thrown while handling the forward.
+ */
+ void forward(Resource resource);
+
+ /**
+ * Helper method to forward the request to a Servlet or script for the given
+ * <code>resource</code> and <code>requestDispatcherOptions</code>. This method
+ * is intended to be implemented as follows:
+ *
+ * <pre>
+ * RequestDispatcher dispatcher = getRequest().getRequestDispatcher(resource,
+ * "option:xyz");
+ * if (dispatcher != null) {
+ * dispatcher.forward(getRequest(), getResponse());
+ * }
+ * </pre>
+ *
+ * <p>
+ * This method creates a <code>RequestDispatcherOptions</code> object by
+ * calling the
+ * {@link RequestDispatcherOptions#RequestDispatcherOptions(String)}
+ * constructor.
+ *
+ * @param path The resource to forward to.
+ * @param requestDispatcherOptions influence the rendering of the forwarded
+ * Resource
+ * @throws org.apache.sling.api.SlingIOException Wrapping a <code>IOException</code> thrown
+ * while handling the forward.
+ * @throws org.apache.sling.api.SlingServletException Wrapping a <code>ServletException</code>
+ * thrown while handling the forward.
+ * @see RequestDispatcherOptions#RequestDispatcherOptions(String)
+ * @see #forward(String, RequestDispatcherOptions)
+ */
+ void forward(Resource resource, String requestDispatcherOptions);
+
+ /**
+ * Helper method to forward the request to a Servlet or script for the given
+ * <code>resource</code> and <code>options</code>. This method is intended
+ * to be implemented as follows:
+ *
+ * <pre>
+ * RequestDispatcherOptions opts = new RequestDispatcherOptions();
+ * opts.put("option", "xyz");
+ * RequestDispatcher dispatcher = getRequest().getRequestDispatcher(resource, opts);
+ * if (dispatcher != null) {
+ * dispatcher.forward(getRequest(), getResponse());
+ * }
+ * </pre>
+ *
+ * @param path The resource to forward the request to.
+ * @param options influence the rendering of the forwarded Resource
+ * @throws org.apache.sling.api.SlingIOException Wrapping a <code>IOException</code> thrown
+ * while handling the forward.
+ * @throws org.apache.sling.api.SlingServletException Wrapping a <code>ServletException</code>
+ * thrown while handling the forward.
+ * @throws IllegalStateException If the respoonse has already been committed
+ * @see RequestDispatcherOptions
+ */
+ void forward(Resource resource, RequestDispatcherOptions options);
+
+ /**
* Lookup a single service
*
* @param serviceType The type (interface) of the service.
Modified: sling/trunk/bundles/scripting/core/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/pom.xml?rev=953549&r1=953548&r2=953549&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/core/pom.xml (original)
+++ sling/trunk/bundles/scripting/core/pom.xml Fri Jun 11 03:17:27 2010
@@ -91,7 +91,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.api</artifactId>
- <version>2.0.8</version>
+ <version>2.0.9-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
Modified: sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/ScriptHelper.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/ScriptHelper.java?rev=953549&r1=953548&r2=953549&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/ScriptHelper.java (original)
+++ sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/ScriptHelper.java Fri Jun 11 03:17:27 2010
@@ -33,6 +33,7 @@ import org.apache.sling.api.SlingHttpSer
import org.apache.sling.api.SlingIOException;
import org.apache.sling.api.SlingServletException;
import org.apache.sling.api.request.RequestDispatcherOptions;
+import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.scripting.InvalidServiceFilterSyntaxException;
import org.apache.sling.api.scripting.SlingScript;
import org.apache.sling.api.scripting.SlingScriptHelper;
@@ -265,4 +266,69 @@ public class ScriptHelper implements Sli
this.services.clear();
}
}
+
+ /**
+ * @see org.apache.sling.api.scripting.SlingScriptHelper#forward(org.apache.sling.api.resource.Resource)
+ */
+ public void forward(Resource resource) {
+ forward(resource, (RequestDispatcherOptions) null);
+ }
+
+
+ /**
+ * @see org.apache.sling.api.scripting.SlingScriptHelper#forward(org.apache.sling.api.resource.Resource, java.lang.String)
+ */
+ public void forward(Resource resource, String options) {
+ forward(resource, new RequestDispatcherOptions(options));
+ }
+
+ /**
+ * @see org.apache.sling.api.scripting.SlingScriptHelper#forward(org.apache.sling.api.resource.Resource, org.apache.sling.api.request.RequestDispatcherOptions)
+ */
+ public void forward(Resource resource, RequestDispatcherOptions options) {
+ final RequestDispatcher dispatcher = getRequest().getRequestDispatcher(
+ resource, options);
+
+ if (dispatcher != null) {
+ try {
+ dispatcher.forward(getRequest(), getResponse());
+ } catch (IOException ioe) {
+ throw new SlingIOException(ioe);
+ } catch (ServletException se) {
+ throw new SlingServletException(se);
+ }
+ }
+ }
+
+ /**
+ * @see org.apache.sling.api.scripting.SlingScriptHelper#forward(org.apache.sling.api.resource.Resource)
+ */
+ public void include(Resource resource) {
+ include(resource, (RequestDispatcherOptions) null);
+ }
+
+ /**
+ * @see org.apache.sling.api.scripting.SlingScriptHelper#include(org.apache.sling.api.resource.Resource, java.lang.String)
+ */
+ public void include(Resource resource, String options) {
+ include(resource, new RequestDispatcherOptions(options));
+ }
+
+ /**
+ * @see org.apache.sling.api.scripting.SlingScriptHelper#include(org.apache.sling.api.resource.Resource, org.apache.sling.api.request.RequestDispatcherOptions)
+ */
+ public void include(Resource resource, RequestDispatcherOptions options) {
+ final RequestDispatcher dispatcher = getRequest().getRequestDispatcher(
+ resource, options);
+
+ if (dispatcher != null) {
+ try {
+ dispatcher.include(getRequest(), getResponse());
+ } catch (IOException ioe) {
+ throw new SlingIOException(ioe);
+ } catch (ServletException se) {
+ throw new SlingServletException(se);
+ }
+ }
+ }
}