[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...
Gavin King
gavin.king at jboss.com
Sat Feb 3 20:13:19 EST 2007
User: gavin
Date: 07/02/03 20:13:19
Modified: src/main/org/jboss/seam/core Exceptions.java
HttpError.java Interpolator.java Manager.java
Added: src/main/org/jboss/seam/core RedirectException.java
Log:
redesigned exception handling
Revision Changes Path
1.24 +10 -19 jboss-seam/src/main/org/jboss/seam/core/Exceptions.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Exceptions.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Exceptions.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- Exceptions.java 2 Feb 2007 07:44:31 -0000 1.23
+++ Exceptions.java 4 Feb 2007 01:13:19 -0000 1.24
@@ -7,7 +7,6 @@
import java.util.ArrayList;
import java.util.List;
-
import org.dom4j.Element;
import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
@@ -17,14 +16,12 @@
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.exceptions.AnnotationErrorHandler;
+import org.jboss.seam.exceptions.AnnotationRedirectHandler;
import org.jboss.seam.exceptions.ConfigErrorHandler;
import org.jboss.seam.exceptions.ConfigRedirectHandler;
-import org.jboss.seam.exceptions.ConfigRenderHandler;
import org.jboss.seam.exceptions.DebugPageHandler;
-import org.jboss.seam.exceptions.AnnotationErrorHandler;
import org.jboss.seam.exceptions.ExceptionHandler;
-import org.jboss.seam.exceptions.AnnotationRedirectHandler;
-import org.jboss.seam.exceptions.AnnotationRenderHandler;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
import org.jboss.seam.util.EJB;
@@ -49,7 +46,7 @@
private List<ExceptionHandler> exceptionHandlers = new ArrayList<ExceptionHandler>();
- public Object handle(Exception e) throws Exception
+ public void handle(Exception e) throws Exception
{
//build a list of the nested exceptions
List<Exception> causes = new ArrayList<Exception>();
@@ -66,7 +63,8 @@
Exception cause = causes.get(i);
if ( eh.isHandler(cause) )
{
- return eh.handle(cause);
+ eh.handle(cause);
+ return;
}
}
}
@@ -78,12 +76,14 @@
@Create
public void initialize() throws Exception
{
- InputStream stream = Resources.getResourceAsStream("/WEB-INF/exceptions.xml"); //deprecated
- if (stream==null) stream = Resources.getResourceAsStream("/WEB-INF/pages.xml");
+ String fileName = "/WEB-INF/exceptions.xml";
+ InputStream stream = Resources.getResourceAsStream(fileName); //deprecated
+ fileName = "/WEB-INF/pages.xml";
+ if (stream==null) stream = Resources.getResourceAsStream(fileName);
ExceptionHandler anyhandler = null;
if (stream!=null)
{
- log.info("reading exceptions.xml");
+ log.info("reading exception mappings from " + fileName);
List<Element> elements = XML.getRootElement(stream).elements("exception");
for (final Element exception: elements)
{
@@ -100,7 +100,6 @@
}
}
- exceptionHandlers.add( new AnnotationRenderHandler() );
exceptionHandlers.add( new AnnotationRedirectHandler() );
exceptionHandlers.add( new AnnotationErrorHandler() );
if ( Init.instance().isDebug() )
@@ -116,14 +115,6 @@
final boolean endConversation = exception.elementIterator("end-conversation").hasNext();
final boolean rollback = exception.elementIterator("rollback").hasNext();
- Element render = exception.element("render");
- if (render!=null)
- {
- final String viewId = render.attributeValue("view-id");
- final String message = render.getTextTrim();
- return new ConfigRenderHandler(message, viewId, clazz, rollback, endConversation);
- }
-
Element redirect = exception.element("redirect");
if (redirect!=null)
{
1.4 +2 -2 jboss-seam/src/main/org/jboss/seam/core/HttpError.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: HttpError.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/HttpError.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- HttpError.java 24 Nov 2006 23:15:17 -0000 1.3
+++ HttpError.java 4 Feb 2007 01:13:19 -0000 1.4
@@ -1,4 +1,4 @@
-//$Id: HttpError.java,v 1.3 2006/11/24 23:15:17 gavin Exp $
+//$Id: HttpError.java,v 1.4 2007/02/04 01:13:19 gavin Exp $
package org.jboss.seam.core;
import static org.jboss.seam.InterceptionType.NEVER;
@@ -71,7 +71,7 @@
{
throw new IllegalStateException("No active application scope");
}
- return (HttpError) Component.getInstance(HttpError.class, true);
+ return (HttpError) Component.getInstance(HttpError.class, ScopeType.APPLICATION);
}
}
1.19 +21 -9 jboss-seam/src/main/org/jboss/seam/core/Interpolator.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Interpolator.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Interpolator.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- Interpolator.java 1 Feb 2007 19:58:07 -0000 1.18
+++ Interpolator.java 4 Feb 2007 01:13:19 -0000 1.19
@@ -10,6 +10,7 @@
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
import org.jboss.seam.Component;
+import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Intercept;
import org.jboss.seam.annotations.Name;
@@ -25,7 +26,8 @@
@Scope(STATELESS)
@Name("org.jboss.seam.core.interpolator")
@Install(precedence=BUILT_IN)
-public class Interpolator {
+public class Interpolator
+{
private static final LogProvider log = Logging.getLogProvider(Interpolator.class);
@@ -33,7 +35,7 @@
{
if ( Contexts.isApplicationContextActive() )
{
- return (Interpolator) Component.getInstance(Interpolator.class, true);
+ return (Interpolator) Component.getInstance(Interpolator.class, ScopeType.APPLICATION);
}
else
{
@@ -60,7 +62,8 @@
throw new IllegalArgumentException("more than 10 parameters");
}
- if (string.indexOf('#')>=0 || string.indexOf('{')>=0) {
+ if (string.indexOf('#')>=0 || string.indexOf('{')>=0)
+ {
string = interpolateExpressions(string, params);
}
@@ -112,19 +115,25 @@
builder.append("#").append(nextTok);
}
}
- } else if ("{".equals(tok)) {
+ }
+ else if ("{".equals(tok))
+ {
StringBuilder expr = new StringBuilder();
expr.append(tok);
int level = 1;
- while (tokens.hasMoreTokens()) {
+ while (tokens.hasMoreTokens())
+ {
String nextTok = tokens.nextToken();
expr.append(nextTok);
- if (nextTok.equals("{")) {
+ if (nextTok.equals("{"))
+ {
++level;
- } else if (nextTok.equals("}")) {
+ }
+ else if (nextTok.equals("}"))
+ {
if (--level == 0) {
String value = new MessageFormat(expr.toString(), Locale.instance()).format(params);
builder.append(value);
@@ -135,10 +144,13 @@
}
}
- if (expr != null) {
+ if (expr != null)
+ {
builder.append(expr);
}
- } else {
+ }
+ else
+ {
builder.append(tok);
}
}
1.135 +2 -2 jboss-seam/src/main/org/jboss/seam/core/Manager.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Manager.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Manager.java,v
retrieving revision 1.134
retrieving revision 1.135
diff -u -b -r1.134 -r1.135
--- Manager.java 26 Jan 2007 14:53:28 -0000 1.134
+++ Manager.java 4 Feb 2007 01:13:19 -0000 1.135
@@ -41,7 +41,7 @@
*
* @author Gavin King
* @author <a href="mailto:theute at jboss.org">Thomas Heute</a>
- * @version $Revision: 1.134 $
+ * @version $Revision: 1.135 $
*/
@Scope(ScopeType.EVENT)
@Name("org.jboss.seam.core.manager")
@@ -954,7 +954,7 @@
}
catch (IOException ioe)
{
- throw new RuntimeException("could not redirect to: " + url, ioe);
+ throw new RedirectException(ioe);
}
finally
{
1.1 date: 2007/02/04 01:13:19; author: gavin; state: Exp;jboss-seam/src/main/org/jboss/seam/core/RedirectException.java
Index: RedirectException.java
===================================================================
package org.jboss.seam.core;
import java.io.IOException;
public class RedirectException extends RuntimeException
{
public RedirectException(IOException ioe)
{
super(ioe);
}
}
More information about the jboss-cvs-commits
mailing list