incubator-sling-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cziege...@apache.org
Subject svn commit: r1145904 - in /sling/trunk: bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/ bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/ bundles/scripting/jsp/src/main/java/org/apache/sling/scripti...
Date Wed, 13 Jul 2011 08:30:03 GMT
Author: cziegeler
Date: Wed Jul 13 08:30:02 2011
New Revision: 1145904

URL: http://svn.apache.org/viewvc?rev=1145904&view=rev
Log:
SLING-2094 : Adding support to call a sling resource for JSP page exception handler <%@
page errorPage ... %>

Added:
    sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingPageException.java
  (with props)
    sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/issues/SLING2094Test.java
  (with props)
    sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/
    sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/custom-error-page.jsp
  (with props)
    sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/sling2094.jsp
  (with props)
Modified:
    sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
    sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/Generator.java
    sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/runtime/PageContextImpl.java
    sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/servlet/JspServletWrapper.java
    sling/trunk/launchpad/builder/src/main/bundles/list.xml

Modified: sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java?rev=1145904&r1=1145903&r2=1145904&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
(original)
+++ sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
Wed Jul 13 08:30:02 2011
@@ -37,6 +37,8 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.SlingConstants;
 import org.apache.sling.api.SlingException;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingIOException;
 import org.apache.sling.api.SlingServletException;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.scripting.SlingBindings;
@@ -159,6 +161,54 @@ public class JspScriptEngineFactory
     }
 
     /**
+     * Call the error page
+     * @param bindings
+     * @param scriptHelper
+     * @param context
+     */
+    private void callErrorPageJsp(final Bindings bindings,
+                                  final SlingScriptHelper scriptHelper,
+                                  final ScriptContext context,
+                                  final String scriptName) {
+    	final SlingBindings slingBindings = new SlingBindings();
+        slingBindings.putAll(bindings);
+
+        ResourceResolver resolver = (ResourceResolver) context.getAttribute(SlingScriptConstants.ATTR_SCRIPT_RESOURCE_RESOLVER,
+                SlingScriptConstants.SLING_SCOPE);
+        if ( resolver == null ) {
+            resolver = scriptHelper.getScript().getScriptResource().getResourceResolver();
+        }
+        final SlingIOProvider io = this.ioProvider;
+        io.setRequestResourceResolver(resolver);
+		jspFactoryHandler.incUsage();
+		try {
+			final JspServletWrapperAdapter errorJsp = getJspWrapperAdapter(scriptName);
+			errorJsp.service(slingBindings);
+
+            // The error page could be inside an include.
+	        final SlingHttpServletRequest request = slingBindings.getRequest();
+            final Throwable t = (Throwable)request.getAttribute("javax.servlet.jsp.jspException");
+
+	        final Object newException = request
+                    .getAttribute("javax.servlet.error.exception");
+
+            // t==null means the attribute was not set.
+            if ((newException != null) && (newException == t)) {
+                request.removeAttribute("javax.servlet.error.exception");
+            }
+
+            // now clear the error code - to prevent double handling.
+            request.removeAttribute("javax.servlet.error.status_code");
+            request.removeAttribute("javax.servlet.error.request_uri");
+            request.removeAttribute("javax.servlet.error.status_code");
+            request.removeAttribute("javax.servlet.jsp.jspException");
+		} finally {
+			jspFactoryHandler.decUsage();
+			io.resetRequestResourceResolver();
+		}
+     }
+
+    /**
      * @param scriptHelper
      * @throws SlingServletException
      * @throws SlingIOException
@@ -187,13 +237,11 @@ public class JspScriptEngineFactory
         }
     }
 
-    private JspServletWrapperAdapter getJspWrapperAdapter(final SlingScriptHelper scriptHelper)
+    private JspServletWrapperAdapter getJspWrapperAdapter(final String scriptName)
     throws SlingException {
         final JspRuntimeContext rctxt = jspRuntimeContext;
 
-        final SlingScript script = scriptHelper.getScript();
-        final String scriptName = script.getScriptResource().getPath();
-        JspServletWrapperAdapter wrapper = (JspServletWrapperAdapter) rctxt.getWrapper(scriptName);
+    	JspServletWrapperAdapter wrapper = (JspServletWrapperAdapter) rctxt.getWrapper(scriptName);
         if (wrapper != null) {
             return wrapper;
         }
@@ -215,11 +263,18 @@ public class JspScriptEngineFactory
                 if (je.getCause() != null) {
                     throw new SlingException(je.getMessage(), je.getCause());
                 }
-                throw new SlingException("Cannot create JSP", je);
+                throw new SlingException("Cannot create JSP: " + scriptName, je);
             }
         }
     }
 
+    private JspServletWrapperAdapter getJspWrapperAdapter(final SlingScriptHelper scriptHelper)
+    throws SlingException {
+        final SlingScript script = scriptHelper.getScript();
+        final String scriptName = script.getScriptResource().getPath();
+        return getJspWrapperAdapter(scriptName);
+    }
+
     // ---------- SCR integration ----------------------------------------------
 
     /**
@@ -414,6 +469,8 @@ public class JspScriptEngineFactory
 
                     // fallback to standard behaviour
                     throw new BetterScriptException(e.getMessage(), e);
+                } catch (final SlingPageException sje) {
+                	callErrorPageJsp(props, scriptHelper, context, sje.getErrorPage());
 
                 } catch (Exception e) {
 

Added: sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingPageException.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingPageException.java?rev=1145904&view=auto
==============================================================================
--- sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingPageException.java
(added)
+++ sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingPageException.java
Wed Jul 13 08:30:02 2011
@@ -0,0 +1,41 @@
+/*
+  * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.scripting.jsp;
+
+import org.apache.sling.api.SlingException;
+
+/**
+ * The <code>SlingPageException</code> is a runtime exception.
+ * This exception is used to handle the JSP page exception handler
+ * <code><%@ page errorPage=</code> scenario and forward as a
+ *  runtime exception to be handled at the outermost level.
+ */
+public class SlingPageException extends SlingException {
+
+    private final String errorPage;
+
+    public SlingPageException(final String errorPage) {
+        this.errorPage = errorPage;
+    }
+
+    public String getErrorPage() {
+        return this.errorPage;
+    }
+
+}

Propchange: sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingPageException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingPageException.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Propchange: sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingPageException.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/Generator.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/Generator.java?rev=1145904&r1=1145903&r2=1145904&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/Generator.java
(original)
+++ sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/Generator.java
Wed Jul 13 08:30:02 2011
@@ -27,8 +27,8 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Enumeration;
-import java.util.Hashtable;
 import java.util.HashMap;
+import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Vector;
@@ -610,11 +610,13 @@ class Generator {
 
         if (pageInfo.isErrorPage()) {
             out.printil("Throwable exception = org.apache.sling.scripting.jsp.jasper.runtime.JspRuntimeLibrary.getThrowable(request);");
-            out.printil("if (exception != null) {");
+            // Removed the following block because of SLING-2094
+            // If we leave it in, an error handler will always set the status code to 500!
+     /*       out.printil("if (exception != null) {");
             out.pushIndent();
             out.printil("response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);");
             out.popIndent();
-            out.printil("}");
+            out.printil("}");*/
         }
 
         out.printil("ServletContext application = null;");

Modified: sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/runtime/PageContextImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/runtime/PageContextImpl.java?rev=1145904&r1=1145903&r2=1145904&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/runtime/PageContextImpl.java
(original)
+++ sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/runtime/PageContextImpl.java
Wed Jul 13 08:30:02 2011
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -47,7 +47,9 @@ import javax.servlet.jsp.el.ExpressionEv
 import javax.servlet.jsp.el.VariableResolver;
 import javax.servlet.jsp.tagext.BodyContent;
 
-import org.apache.sling.scripting.jsp.jasper.Constants;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
+import org.apache.sling.scripting.jsp.SlingPageException;
 import org.apache.sling.scripting.jsp.jasper.compiler.Localizer;
 import org.apache.sling.scripting.jsp.jasper.el.ELContextImpl;
 import org.apache.sling.scripting.jsp.jasper.el.ExpressionEvaluatorImpl;
@@ -59,7 +61,7 @@ import org.apache.sling.scripting.jsp.ja
 /**
  * Implementation of the PageContext class from the JSP spec. Also doubles as a
  * VariableResolver for the EL.
- * 
+ *
  * @author Anil K. Vijendran
  * @author Larry Cable
  * @author Hans Bergsten
@@ -70,6 +72,8 @@ import org.apache.sling.scripting.jsp.ja
  */
 public class PageContextImpl extends PageContext {
 
+	private Log log = LogFactory.getLog(PageContextImpl.class);
+
 	private BodyContentImpl[] outs;
 
 	private int depth;
@@ -94,12 +98,12 @@ public class PageContextImpl extends Pag
 	private transient ServletResponse response;
 
 	private transient HttpSession session;
-	
+
 	private transient ELContextImpl elContext;
 
 	private boolean isIncluded;
-	
-	
+
+
 	// initial output stream
 	private transient JspWriter out;
 
@@ -135,7 +139,7 @@ public class PageContextImpl extends Pag
 		this.errorPageURL = errorPageURL;
 		this.request = request;
 		this.response = response;
-		
+
 		// initialize application context
 		this.applicationContext = JspApplicationContextImpl.getInstance(context);
 
@@ -571,7 +575,7 @@ public class PageContextImpl extends Pag
 	 * Returns the exception associated with this page context, if any. <p/>
 	 * Added wrapping for Throwables to avoid ClassCastException: see Bugzilla
 	 * 31171 for details.
-	 * 
+	 *
 	 * @return The Exception associated with this page context, if any.
 	 */
 	public Exception getException() {
@@ -685,18 +689,9 @@ public class PageContextImpl extends Pag
 		}
 
 		final String path = getAbsolutePathRelativeToContext(relativeUrlPath);
-		String includeUri = (String) request
-				.getAttribute(Constants.INC_SERVLET_PATH);
 
-		if (includeUri != null)
-			request.removeAttribute(Constants.INC_SERVLET_PATH);
-		try {
-			context.getRequestDispatcher(path).forward(request, response);
-		} finally {
-			if (includeUri != null)
-				request.setAttribute(Constants.INC_SERVLET_PATH, includeUri);
-		}
-	}
+		throw new SlingPageException(path);
+ 	}
 
 	public BodyContent pushBody() {
 		return (BodyContent) pushBody(null);
@@ -879,7 +874,7 @@ public class PageContextImpl extends Pag
 	 * go away once the EL interpreter moves out of JSTL and into its own
 	 * project. For now, this is necessary because the standard machinery is too
 	 * slow.
-	 * 
+	 *
 	 * @param expression
 	 *            The expression to be evaluated
 	 * @param expectedType

Modified: sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/servlet/JspServletWrapper.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/servlet/JspServletWrapper.java?rev=1145904&r1=1145903&r2=1145904&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/servlet/JspServletWrapper.java
(original)
+++ sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/servlet/JspServletWrapper.java
Wed Jul 13 08:30:02 2011
@@ -36,6 +36,7 @@ import org.apache.juli.logging.LogFactor
 import org.apache.sling.api.SlingException;
 import org.apache.sling.api.scripting.ScriptEvaluationException;
 import org.apache.sling.commons.classloader.DynamicClassLoader;
+import org.apache.sling.scripting.jsp.SlingPageException;
 import org.apache.sling.scripting.jsp.jasper.JasperException;
 import org.apache.sling.scripting.jsp.jasper.JspCompilationContext;
 import org.apache.sling.scripting.jsp.jasper.Options;
@@ -394,13 +395,13 @@ public class JspServletWrapper {
               ex);
             }
             return;
-        } catch (ServletException ex) {
+        } catch (final ServletException ex) {
             handleJspException(ex);
-        } catch (IOException ex) {
+        } catch (final IOException ex) {
             handleJspException(ex);
-        } catch (IllegalStateException ex) {
+        } catch (final IllegalStateException ex) {
             handleJspException(ex);
-        } catch (Exception ex) {
+        } catch (final Exception ex) {
             handleJspException(ex);
         }
 
@@ -438,13 +439,15 @@ public class JspServletWrapper {
                 (HttpServletResponse.SC_SERVICE_UNAVAILABLE,
                  ex.getMessage());
             return;
-        } catch (ServletException ex) {
+        } catch (final ServletException ex) {
             handleJspException(ex);
-        } catch (IOException ex) {
+        } catch (final IOException ex) {
             handleJspException(ex);
-        } catch (IllegalStateException ex) {
+        } catch (final IllegalStateException ex) {
             handleJspException(ex);
-        } catch (Exception ex) {
+        } catch (final SlingPageException ex) {
+        	throw ex;
+        }catch (final Exception ex) {
             handleJspException(ex);
         }
     }
@@ -491,7 +494,7 @@ public class JspServletWrapper {
      * @param ex the exception that was the cause of the problem.
      * @throws a ServletException with more detailed information
      */
-    protected void handleJspException(Exception ex)
+    protected void handleJspException(final Exception ex)
     throws ServletException {
         final Exception jspEx = handleJspExceptionInternal(ex);
         if ( jspEx instanceof ServletException ) {
@@ -503,9 +506,9 @@ public class JspServletWrapper {
     /**
      * Returns only a ServletException or a SlingException
      */
-    private Exception handleJspExceptionInternal(Exception ex)
+    private Exception handleJspExceptionInternal(final Exception ex)
     throws ServletException {
-        Throwable realException = ex;
+    	Throwable realException = ex;
         String exMessage = "";
         if (ex instanceof ServletException) {
             realException = ((ServletException) ex).getRootCause();

Modified: sling/trunk/launchpad/builder/src/main/bundles/list.xml
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/builder/src/main/bundles/list.xml?rev=1145904&r1=1145903&r2=1145904&view=diff
==============================================================================
--- sling/trunk/launchpad/builder/src/main/bundles/list.xml (original)
+++ sling/trunk/launchpad/builder/src/main/bundles/list.xml Wed Jul 13 08:30:02 2011
@@ -170,7 +170,7 @@
         <bundle>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.scripting.jsp</artifactId>
-            <version>2.0.16</version>
+            <version>2.0.17-SNAPSHOT</version>
         </bundle>
         <bundle>
             <groupId>org.apache.sling</groupId>

Added: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/issues/SLING2094Test.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/issues/SLING2094Test.java?rev=1145904&view=auto
==============================================================================
--- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/issues/SLING2094Test.java
(added)
+++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/issues/SLING2094Test.java
Wed Jul 13 08:30:02 2011
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.launchpad.webapp.integrationtest.issues;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.sling.launchpad.webapp.integrationtest.JspTestBase;
+
+/** Test the SLING-2094 JSP errorpage statement */
+public class SLING2094Test extends JspTestBase {
+    public final static String TEST_ROOT = "/apps/sling2094";
+    private String testNodePath;
+    
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        
+        scriptPath = TEST_ROOT;
+        
+        testClient.mkdirs(HTTP_BASE_URL, TEST_ROOT);
+        for(String file : new String[] { "custom-error-page.jsp", "sling2094.jsp" }) {
+            uploadTestScript("issues/sling2094/" + file, file);
+        }
+        
+        final Map<String, String> props = new HashMap<String, String>();
+        props.put(SLING_RESOURCE_TYPE, TEST_ROOT);
+        testNodePath = testClient.createNode(HTTP_BASE_URL + TEST_ROOT, props);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        testClient.delete(HTTP_BASE_URL + TEST_ROOT);
+    }
+    
+    public void testWithoutError() throws Exception {
+        final String expected = "All good, no exception";
+        final String url = testNodePath + ".html";
+        assertContains(getContent(url, CONTENT_TYPE_HTML), expected);
+    }
+    
+    public void testWithError() throws Exception {
+        final String expected = "witherror selector was specified";
+        final String url = testNodePath + ".witherror.html";
+        assertContains(getContent(url, CONTENT_TYPE_HTML), expected);
+    }
+}

Propchange: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/issues/SLING2094Test.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/issues/SLING2094Test.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Propchange: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/issues/SLING2094Test.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/custom-error-page.jsp
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/custom-error-page.jsp?rev=1145904&view=auto
==============================================================================
--- sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/custom-error-page.jsp
(added)
+++ sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/custom-error-page.jsp
Wed Jul 13 08:30:02 2011
@@ -0,0 +1,26 @@
+<!--
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<%@ page isErrorPage="true" %>
+
+<h1>Exception Class:</h1>
+<%= exception.getClass() %>
+
+<h2>Message:</h2>
+<%= exception.getMessage() %>

Propchange: sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/custom-error-page.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/custom-error-page.jsp
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/custom-error-page.jsp
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/sling2094.jsp
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/sling2094.jsp?rev=1145904&view=auto
==============================================================================
--- sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/sling2094.jsp
(added)
+++ sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/sling2094.jsp
Wed Jul 13 08:30:02 2011
@@ -0,0 +1,34 @@
+<!--
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<%@page 
+	session="false"
+	errorPage="/apps/sling2094/custom-error-page.jsp"
+	import="java.util.Arrays, org.apache.sling.api.SlingHttpServletRequest" 
+%>
+
+<%
+final String SELECTOR = "witherror";
+final SlingHttpServletRequest slingRequest = (SlingHttpServletRequest)request;
+if(Arrays.asList(slingRequest.getRequestPathInfo().getSelectors()).contains(SELECTOR)) {
+	throw new Exception(SELECTOR + " selector was specified");
+} else {
+	%>All good, no exception<%
+}
+%>
\ No newline at end of file

Propchange: sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/sling2094.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/sling2094.jsp
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/issues/sling2094/sling2094.jsp
------------------------------------------------------------------------------
    svn:mime-type = text/plain



Mime
View raw message