You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2015/06/01 23:15:23 UTC

tapestry-5 git commit: TAP5-2471: DefaultRequestExceptionHandler creating absolute links for xhr request

Repository: tapestry-5
Updated Branches:
  refs/heads/master 6e1ebb30c -> e25fac7e4


TAP5-2471: DefaultRequestExceptionHandler creating absolute links for xhr request


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/e25fac7e
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/e25fac7e
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/e25fac7e

Branch: refs/heads/master
Commit: e25fac7e44f4f043ec8e1787e1b3597173d70bbb
Parents: 6e1ebb3
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Mon Jun 1 13:50:08 2015 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Mon Jun 1 13:50:08 2015 -0700

----------------------------------------------------------------------
 .../apache/tapestry5/ContextAwareException.java | 10 +++++---
 .../tapestry5/ExceptionHandlerAssistant.java    | 26 +++++++++++++++++---
 .../DefaultRequestExceptionHandler.java         |  2 +-
 .../services/RequestExceptionHandler.java       | 11 ++++++++-
 4 files changed, 40 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/e25fac7e/tapestry-core/src/main/java/org/apache/tapestry5/ContextAwareException.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/ContextAwareException.java b/tapestry-core/src/main/java/org/apache/tapestry5/ContextAwareException.java
index 9c8b22c..a046fc7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/ContextAwareException.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/ContextAwareException.java
@@ -1,5 +1,3 @@
-// Copyright 2006, 2008, 2010, 2011 The Apache Software Foundation
-//
 // Licensed 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
@@ -14,6 +12,12 @@
 
 package org.apache.tapestry5;
 
-public interface ContextAwareException {
+/**
+ * An interface implemented by exceptions that get special handling in the default {@link org.apache.tapestry5.services.RequestExceptionHandler}
+ * service.
+ */
+public interface ContextAwareException
+{
+    /** @returns A page activation context for reporting the exception. */
     Object[] getContext();
 }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/e25fac7e/tapestry-core/src/main/java/org/apache/tapestry5/ExceptionHandlerAssistant.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/ExceptionHandlerAssistant.java b/tapestry-core/src/main/java/org/apache/tapestry5/ExceptionHandlerAssistant.java
index 7f76075..bfbc553 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/ExceptionHandlerAssistant.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/ExceptionHandlerAssistant.java
@@ -1,5 +1,3 @@
-// Copyright 2006, 2008, 2010, 2011 The Apache Software Foundation
-//
 // Licensed 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
@@ -14,9 +12,29 @@
 
 package org.apache.tapestry5;
 
+import org.apache.tapestry5.services.RequestExceptionHandler;
+
 import java.io.IOException;
 import java.util.List;
 
-public interface ExceptionHandlerAssistant {
-    public Object handleRequestException(Throwable exception, List<Object> exceptionContext) throws IOException;
+/**
+ * A contribution to the default {@link RequestExceptionHandler} service, this is mapped to an exception class,
+ * allowing class specific (based on an inheritance search) handling of an exception.
+ *
+ * @see ContextAwareException
+ */
+public interface ExceptionHandlerAssistant
+{
+    /**
+     * Handles the exception, returning a page class or link to redirect to.
+     *
+     * @param exception
+     *         the exception as thrown
+     * @param exceptionContext
+     *         a page activation context that is derived from the root-most exception
+     * @return either a page class or a {@link Link}; a page will be redirected to, with the exception context
+     * as the page activation context
+     * @throws IOException
+     */
+    Object handleRequestException(Throwable exception, List<Object> exceptionContext) throws IOException;
 }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/e25fac7e/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
index 26c0a63..39c4bac 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
@@ -207,7 +207,7 @@ public class DefaultRequestExceptionHandler implements RequestExceptionHandler
                 OutputStream os = response.getOutputStream("application/json;charset=UTF-8");
 
                 JSONObject reply = new JSONObject();
-                reply.in(InternalConstants.PARTIAL_KEY).put("redirectURL", link.toAbsoluteURI());
+                reply.in(InternalConstants.PARTIAL_KEY).put("redirectURL", link.toRedirectURI());
 
                 os.write(reply.toCompactString().getBytes("UTF-8"));
 

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/e25fac7e/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestExceptionHandler.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestExceptionHandler.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestExceptionHandler.java
index df4fe79..303cf9b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestExceptionHandler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestExceptionHandler.java
@@ -12,12 +12,20 @@
 
 package org.apache.tapestry5.services;
 
+import org.apache.tapestry5.ExceptionHandlerAssistant;
+import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
+
 import java.io.IOException;
 
 /**
  * Service invoked when an uncaught exception occurs. The error handler is responsible for providing a response to the
  * user to describe the error.
+ *
+ * The default implementation accepts the configuration, which maps an exception class to a corresponding helper.
+ * The helper is either an instance of {@link ExceptionHandlerAssistant} or is a Class for a page that will be redirected
+ * to, to present the exception.
  */
+@UsesMappedConfiguration(key = Class.class, value = Object.class)
 public interface RequestExceptionHandler
 {
     /**
@@ -29,7 +37,8 @@ public interface RequestExceptionHandler
      * These are very important in Ajax requests to allow the client-side logic to detect the error and present it to
      * the user.
      *
-     * @param exception uncaught exception to be reported
+     * @param exception
+     *         uncaught exception to be reported
      * @throws IOException
      */
     void handleRequestException(Throwable exception) throws IOException;