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 2007/09/23 19:36:35 UTC

svn commit: r578588 - in /incubator/sling/trunk: scripting-core/src/main/java/org/apache/sling/scripting/ scripting-jsp/src/main/java/org/apache/sling/scripting/jsp/

Author: fmeschbe
Date: Sun Sep 23 10:36:33 2007
New Revision: 578588

URL: http://svn.apache.org/viewvc?rev=578588&view=rev
Log:
SLING-19 stackoverflow trying to run jsp scripting

Removed:
    incubator/sling/trunk/scripting-core/src/main/java/org/apache/sling/scripting/HttpServletAdapter.java
Modified:
    incubator/sling/trunk/scripting-core/src/main/java/org/apache/sling/scripting/Util.java
    incubator/sling/trunk/scripting-jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptHandler.java
    incubator/sling/trunk/scripting-jsp/src/main/java/org/apache/sling/scripting/jsp/JspServletWrapperAdapter.java

Modified: incubator/sling/trunk/scripting-core/src/main/java/org/apache/sling/scripting/Util.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/scripting-core/src/main/java/org/apache/sling/scripting/Util.java?rev=578588&r1=578587&r2=578588&view=diff
==============================================================================
--- incubator/sling/trunk/scripting-core/src/main/java/org/apache/sling/scripting/Util.java (original)
+++ incubator/sling/trunk/scripting-core/src/main/java/org/apache/sling/scripting/Util.java Sun Sep 23 10:36:33 2007
@@ -21,8 +21,6 @@
 public class Util {
 
     public static final String ATTR_COMPONENT = "org.apache.sling.scripting.component";
-    public static final String ATTR_RENDER_REQUEST = "org.apache.sling.scripting.render_request";
-    public static final String ATTR_RENDER_RESPONSE = "org.apache.sling.scripting.render_response";
 
     public static Object replaceAttribute(ComponentRequest request, String attrName, Object value) {
         // get the old value

Modified: incubator/sling/trunk/scripting-jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptHandler.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/scripting-jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptHandler.java?rev=578588&r1=578587&r2=578588&view=diff
==============================================================================
--- incubator/sling/trunk/scripting-jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptHandler.java (original)
+++ incubator/sling/trunk/scripting-jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptHandler.java Sun Sep 23 10:36:33 2007
@@ -140,7 +140,7 @@
 
     public ComponentRenderer getComponentRenderer(Component component,
             String scriptName) {
-        return this.getJspWrapperAdapter(component, scriptName).getServletAdapter();
+        return getJspWrapperAdapter(component, scriptName);
     }
 
     private JspServletWrapperAdapter getJspWrapperAdapter(Component component,

Modified: incubator/sling/trunk/scripting-jsp/src/main/java/org/apache/sling/scripting/jsp/JspServletWrapperAdapter.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/scripting-jsp/src/main/java/org/apache/sling/scripting/jsp/JspServletWrapperAdapter.java?rev=578588&r1=578587&r2=578588&view=diff
==============================================================================
--- incubator/sling/trunk/scripting-jsp/src/main/java/org/apache/sling/scripting/jsp/JspServletWrapperAdapter.java (original)
+++ incubator/sling/trunk/scripting-jsp/src/main/java/org/apache/sling/scripting/jsp/JspServletWrapperAdapter.java Sun Sep 23 10:36:33 2007
@@ -21,93 +21,87 @@
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
 import org.apache.jasper.Options;
 import org.apache.jasper.compiler.JspRuntimeContext;
 import org.apache.jasper.servlet.JspServletWrapper;
-import org.apache.sling.scripting.HttpServletAdapter;
+import org.apache.sling.component.ComponentException;
+import org.apache.sling.component.ComponentRequest;
+import org.apache.sling.component.ComponentResponse;
+import org.apache.sling.scripting.ComponentRenderer;
 
 /**
  * The <code>JspServletWrapperAdapter</code> TODO
- *
+ * 
  * @author fmeschbe
  * @version $Rev:23741 $, $Date:2006-12-01 16:24:05 +0100 (Fr, 01 Dez 2006) $
  */
-public class JspServletWrapperAdapter extends JspServletWrapper {
-
-    private HttpServletAdapter httpServletAdapter;
+public class JspServletWrapperAdapter extends JspServletWrapper implements
+        ComponentRenderer {
 
     JspServletWrapperAdapter(ServletConfig config, Options options,
-        String jspUri, boolean isErrorPage, JspRuntimeContext rctxt)
+            String jspUri, boolean isErrorPage, JspRuntimeContext rctxt)
             throws JasperException {
         super(config, options, jspUri, isErrorPage, rctxt);
     }
 
-    HttpServletAdapter getServletAdapter() {
-        if (this.httpServletAdapter == null) {
-            this.httpServletAdapter = new JspHttpServletAdapter();
+    public void service(ComponentRequest request, ComponentResponse response)
+            throws IOException, ComponentException {
+        try {
+            service(request, response, preCompile(request));
+        } catch (ComponentException ce) {
+            // just rethrow
+            throw ce;
+        } catch (ServletException se) {
+            // convert to ComponentException
+            throw new ComponentException(se.getMessage(), se);
         }
-
-        return this.httpServletAdapter;
     }
 
-    private class JspHttpServletAdapter extends HttpServletAdapter {
+    /**
+     * <p>
+     * Look for a <em>precompilation request</em> as described in Section
+     * 8.4.2 of the JSP 1.2 Specification. <strong>WARNING</strong> - we cannot
+     * use <code>request.getParameter()</code> for this, because that will
+     * trigger parsing all of the request parameters, and not give a servlet the
+     * opportunity to call <code>request.setCharacterEncoding()</code> first.
+     * </p>
+     * 
+     * @param request The servlet requset we are processing
+     * @exception ServletException if an invalid parameter value for the
+     *                <code>jsp_precompile</code> parameter name is specified
+     */
+    boolean preCompile(HttpServletRequest request) throws ServletException {
+
+        // assume it is ok to access the parameters here, as we are not a
+        // toplevel servlet
+        String jspPrecompile = request.getParameter(Constants.PRECOMPILE);
+        if (jspPrecompile == null) {
+            return false;
+        }
+
+        if (jspPrecompile.length() == 0) {
+            return true; // ?jsp_precompile
+        }
 
-        protected void service(HttpServletRequest request,
-                HttpServletResponse response) throws IOException,
-                ServletException {
-            JspServletWrapperAdapter.this.service(request, response,
-                this.preCompile(request));
+        if (jspPrecompile.equals("true")) {
+            return true; // ?jsp_precompile=true
         }
 
-        /**
-         * <p>
-         * Look for a <em>precompilation request</em> as described in Section
-         * 8.4.2 of the JSP 1.2 Specification. <strong>WARNING</strong> - we
-         * cannot use <code>request.getParameter()</code> for this, because
-         * that will trigger parsing all of the request parameters, and not give
-         * a servlet the opportunity to call
-         * <code>request.setCharacterEncoding()</code> first.
-         * </p>
-         *
-         * @param request The servlet requset we are processing
-         * @exception ServletException if an invalid parameter value for the
-         *                <code>jsp_precompile</code> parameter name is
-         *                specified
-         */
-        boolean preCompile(HttpServletRequest request) throws ServletException {
-
-            // assume it is ok to access the parameters here, as we are not a
-            // toplevel servlet
-            String jspPrecompile = request.getParameter(Constants.PRECOMPILE);
-            if (jspPrecompile == null) {
-                return false;
-            }
-
-            if (jspPrecompile.length() == 0) {
-                return true; // ?jsp_precompile
-            }
-
-            if (jspPrecompile.equals("true")) {
-                return true; // ?jsp_precompile=true
-            }
-
-            if (jspPrecompile.equals("false")) {
-                // Spec says if jsp_precompile=false, the request should not
-                // be delivered to the JSP page; the easiest way to implement
-                // this is to set the flag to true, and precompile the page
-                // anyway.
-                // This still conforms to the spec, since it says the
-                // precompilation request can be ignored.
-                return true; // ?jsp_precompile=false
-            }
-
-            // unexpected value, fail
-            throw new ServletException("Cannot have request parameter "
-                + Constants.PRECOMPILE + " set to " + jspPrecompile);
+        if (jspPrecompile.equals("false")) {
+            // Spec says if jsp_precompile=false, the request should not
+            // be delivered to the JSP page; the easiest way to implement
+            // this is to set the flag to true, and precompile the page
+            // anyway.
+            // This still conforms to the spec, since it says the
+            // precompilation request can be ignored.
+            return true; // ?jsp_precompile=false
         }
+
+        // unexpected value, fail
+        throw new ServletException("Cannot have request parameter "
+            + Constants.PRECOMPILE + " set to " + jspPrecompile);
     }
 }