You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hivemind.apache.org by hl...@apache.org on 2004/11/01 17:38:03 UTC
cvs commit: jakarta-hivemind/framework/src/test/org/apache/hivemind TestApplicationRuntimeException.java
hlship 2004/11/01 08:38:03
Modified: . status.xml
framework/src/java/org/apache/hivemind
ApplicationRuntimeException.java
Added: framework/src/test/org/apache/hivemind
TestApplicationRuntimeException.java
Log:
Change ApplicationRuntimeException to includethe location of the exception, if known, in toString() (used by printStackTrace()).
Revision Changes Path
1.72 +4 -0 jakarta-hivemind/status.xml
Index: status.xml
===================================================================
RCS file: /home/cvs/jakarta-hivemind/status.xml,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -r1.71 -r1.72
--- status.xml 1 Nov 2004 01:55:47 -0000 1.71
+++ status.xml 1 Nov 2004 16:38:03 -0000 1.72
@@ -71,6 +71,10 @@
<action type="add" dev="HLS">
Move some logic related to primitive Java types and arrays from Tapestry directly into DefaultClassResolver.
</action>
+ <action type="update" dev="HLS">
+ ApplicationRuntimeException will now display the location (if known) as part of its toString() method, making it
+ much easier to track down problems in stack traces (especially deeply nested ones).
+ </action>
</release>
<release version="1.0" date="Sep 22 2004">
1.4 +37 -18 jakarta-hivemind/framework/src/java/org/apache/hivemind/ApplicationRuntimeException.java
Index: ApplicationRuntimeException.java
===================================================================
RCS file: /home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/ApplicationRuntimeException.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ApplicationRuntimeException.java 19 Aug 2004 13:25:58 -0000 1.3
+++ ApplicationRuntimeException.java 1 Nov 2004 16:38:03 -0000 1.4
@@ -15,19 +15,20 @@
package org.apache.hivemind;
/**
- * General wrapper for any exception (normal or runtime) that may occur during
- * runtime processing for the application. This is exception is used
- * when the intent is to communicate a low-level failure to the user or
- * developer; it is not expected to be caught. The {@link #getRootCause() rootCause}
- * property is a <em>nested</em> exception.
- *
- * @author Howard Lewis Ship
+ * General wrapper for any exception (normal or runtime) that may occur during runtime processing
+ * for the application. This is exception is used when the intent is to communicate a low-level
+ * failure to the user or developer; it is not expected to be caught. The
+ * {@link #getRootCause() rootCause}property is a <em>nested</em> exception.
+ *
+ * @author Howard Lewis Ship
*/
public class ApplicationRuntimeException extends RuntimeException implements Locatable
{
private Throwable _rootCause;
+
private transient Location _location;
+
private transient Object _component;
public ApplicationRuntimeException(Throwable rootCause)
@@ -45,18 +46,16 @@
this(message, null, null, rootCause);
}
- public ApplicationRuntimeException(
- String message,
- Object component,
- Location location,
- Throwable rootCause)
+ public ApplicationRuntimeException(String message, Object component, Location location,
+ Throwable rootCause)
{
super(message);
_rootCause = rootCause;
_component = component;
- _location = HiveMind.findLocation(new Object[] { location, rootCause, component });
+ _location = HiveMind.findLocation(new Object[]
+ { location, rootCause, component });
}
public ApplicationRuntimeException(String message, Location location, Throwable rootCause)
@@ -79,13 +78,33 @@
return _component;
}
- /**
- * This method is for compatibility with JDK 1.4 ... under 1.4, this will look like
- * an override, allowing <code>printStackTrace()</code> to descending into the root cause
- * exception and print its stack trace too.
- */
+ /**
+ * This method is for compatibility with JDK 1.4 ... under 1.4, this will look like an override,
+ * allowing <code>printStackTrace()</code> to descending into the root cause exception and
+ * print its stack trace too.
+ */
public Throwable getCause()
{
return _rootCause;
+ }
+
+ /**
+ * Overrides the default implementation of <code>toString</code>, suffixing the normal result
+ * with the {@link #getLocation() location}of the exception (if non null). Example:
+ * <code>org.apache.hivemind.ApplicationRuntimeException: Exception Message [file:foo/bar/baz, line 13]</code>.
+ *
+ * @since 1.1
+ */
+ public String toString()
+ {
+ if (_location == null)
+ return super.toString();
+
+ StringBuffer buffer = new StringBuffer(super.toString());
+ buffer.append(" [");
+ buffer.append(_location);
+ buffer.append("]");
+
+ return buffer.toString();
}
}
1.1 jakarta-hivemind/framework/src/test/org/apache/hivemind/TestApplicationRuntimeException.java
Index: TestApplicationRuntimeException.java
===================================================================
//Copyright 2004 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
//
// 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.hivemind;
import org.apache.hivemind.test.HiveMindTestCase;
/**
* Tests some features of {@link org.apache.hivemind.ApplicationRuntimeException}.
*
* @author Howard M. Lewis Ship
* @since 1.1
*/
public class TestApplicationRuntimeException extends HiveMindTestCase
{
public void testToStringNoLocation()
{
ApplicationRuntimeException ex = new ApplicationRuntimeException("some message");
assertEquals("org.apache.hivemind.ApplicationRuntimeException: some message", ex.toString());
}
public void testToStringWithLocation()
{
Location l = fabricateLocation(22);
ApplicationRuntimeException ex = new ApplicationRuntimeException("my message", l, null);
assertEquals(
"org.apache.hivemind.ApplicationRuntimeException: my message [" + l + "]",
ex.toString());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-cvs-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-cvs-help@jakarta.apache.org