You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by sc...@apache.org on 2009/10/24 18:38:09 UTC
svn commit: r829404 - in
/commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception:
ContextedException.java ContextedRuntimeException.java
DefaultExceptionContext.java ExceptionContext.java ExceptionUtils.java
Author: scolebourne
Date: Sat Oct 24 16:38:08 2009
New Revision: 829404
URL: http://svn.apache.org/viewvc?rev=829404&view=rev
Log:
Allow contexted exception to store non-serializable objects (more flexible, and doesn't prevent serialization)
Modified:
commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ContextedException.java
commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ContextedRuntimeException.java
commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/DefaultExceptionContext.java
commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ExceptionContext.java
commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ExceptionUtils.java
Modified: commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ContextedException.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ContextedException.java?rev=829404&r1=829403&r2=829404&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ContextedException.java (original)
+++ commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ContextedException.java Sat Oct 24 16:38:08 2009
@@ -16,7 +16,6 @@
*/
package org.apache.commons.lang.exception;
-import java.io.Serializable;
import java.util.Set;
/**
@@ -141,15 +140,13 @@
* the problem. For the information to be meaningful, the value passed
* should have a reasonable toString() implementation.
* <p>
- * Note: If the value provided isn't Serializable, one solution would be
- * to provide its toString() if it has a meaningful implementation or
- * individual properties of the value object instead.
+ * Note: This exception is only serializable if the object added is serializable.
*
* @param label a textual label associated with information, null not recommended
* @param value information needed to understand exception, may be null
* @return this, for method chaining
*/
- public ContextedException addLabeledValue(String label, Serializable value) {
+ public ContextedException addLabeledValue(String label, Object value) {
exceptionContext.addLabeledValue(label, value);
return this;
}
@@ -160,7 +157,7 @@
* @param label the label to get the contextual value for, may be null
* @return the contextual value associated with the label, may be null
*/
- public Serializable getLabeledValue(String label) {
+ public Object getLabeledValue(String label) {
return exceptionContext.getLabeledValue(label);
}
Modified: commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ContextedRuntimeException.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ContextedRuntimeException.java?rev=829404&r1=829403&r2=829404&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ContextedRuntimeException.java (original)
+++ commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ContextedRuntimeException.java Sat Oct 24 16:38:08 2009
@@ -16,7 +16,6 @@
*/
package org.apache.commons.lang.exception;
-import java.io.Serializable;
import java.util.Set;
/**
@@ -142,15 +141,13 @@
* the problem. For the information to be meaningful, the value passed
* should have a reasonable toString() implementation.
* <p>
- * Note: If the value provided isn't Serializable, one solution would be
- * to provide its toString() if it has a meaningful implementation or
- * individual properties of the value object instead.
+ * Note: This exception is only serializable if the object added is serializable.
*
* @param label a textual label associated with information, null not recommended
* @param value information needed to understand exception, may be null
* @return this, for method chaining
*/
- public ContextedRuntimeException addLabeledValue(String label, Serializable value) {
+ public ContextedRuntimeException addLabeledValue(String label, Object value) {
exceptionContext.addLabeledValue(label, value);
return this;
}
@@ -161,7 +158,7 @@
* @param label the label to get the contextual value for, may be null
* @return the contextual value associated with the label, may be null
*/
- public Serializable getLabeledValue(String label) {
+ public Object getLabeledValue(String label) {
return exceptionContext.getLabeledValue(label);
}
Modified: commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/DefaultExceptionContext.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/DefaultExceptionContext.java?rev=829404&r1=829403&r2=829404&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/DefaultExceptionContext.java (original)
+++ commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/DefaultExceptionContext.java Sat Oct 24 16:38:08 2009
@@ -25,16 +25,19 @@
/**
* Default implementation of the context storing the label-value pairs for contexted exceptions.
+ * <p>
+ * This implementation is serializable, however this is dependent on the values that
+ * are added also being serializable.
*
* @author D. Ashmore
* @since 3.0
*/
-class DefaultExceptionContext implements ExceptionContext {
+class DefaultExceptionContext implements ExceptionContext, Serializable {
/** The serialization version. */
private static final long serialVersionUID = 293747957535772807L;
/** The ordered map storing the label-data pairs. */
- private Map<String, Serializable> contextValueMap = new LinkedHashMap<String, Serializable>();
+ private Map<String, Object> contextValueMap = new LinkedHashMap<String, Object>();
/**
* Adds a contextual label-value pair into this context.
@@ -45,7 +48,7 @@
* @param value the value of item to add, may be null
* @return this, for method chaining
*/
- public ExceptionContext addLabeledValue(String label, Serializable value) {
+ public ExceptionContext addLabeledValue(String label, Object value) {
contextValueMap.put(label, value);
return this;
}
@@ -56,7 +59,7 @@
* @param label the label to get the contextual value for, may be null
* @return the contextual value associated with the label, may be null
*/
- public Serializable getLabeledValue(String label) {
+ public Object getLabeledValue(String label) {
return contextValueMap.get(label);
}
Modified: commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ExceptionContext.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ExceptionContext.java?rev=829404&r1=829403&r2=829404&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ExceptionContext.java (original)
+++ commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ExceptionContext.java Sat Oct 24 16:38:08 2009
@@ -16,21 +16,18 @@
*/
package org.apache.commons.lang.exception;
-import java.io.Serializable;
import java.util.Set;
-
/**
- * Provides context information for exceptions. It is available as separate interface to allow
- * it usage independently from the {@link ContextedException} and
- * {@link ContextedRuntimeException}.
+ * Allows the storage and retrieval of contextual information based on label-value
+ * pairs for exceptions.
*
* @see ContextedException
* @see ContextedRuntimeException
* @author D. Ashmore
* @since 3.0
*/
-public interface ExceptionContext extends Serializable {
+public interface ExceptionContext {
/**
* Adds a contextual label-value pair into this context.
@@ -41,7 +38,7 @@
* @param value the value of item to add, may be null
* @return context itself to allow method chaining
*/
- public ExceptionContext addLabeledValue(String label, Serializable value);
+ public ExceptionContext addLabeledValue(String label, Object value);
/**
* Retrieves a contextual data value associated with the label.
@@ -49,7 +46,7 @@
* @param label the label to get the contextual value for, may be null
* @return the contextual value associated with the label, may be null
*/
- public Serializable getLabeledValue(String label);
+ public Object getLabeledValue(String label);
/**
* Retrieves the labels defined in the contextual data.
Modified: commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ExceptionUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ExceptionUtils.java?rev=829404&r1=829403&r2=829404&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ExceptionUtils.java (original)
+++ commons/proper/lang/trunk/src/java/org/apache/commons/lang/exception/ExceptionUtils.java Sat Oct 24 16:38:08 2009
@@ -18,7 +18,6 @@
import java.io.PrintStream;
import java.io.PrintWriter;
-import java.io.Serializable;
import java.io.StringWriter;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
@@ -26,14 +25,9 @@
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
-import java.util.Set;
import java.util.StringTokenizer;
-//import net.jcip.annotations.GuardedBy;
-//import net.jcip.annotations.ThreadSafe;
-
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.ClassUtils;
import org.apache.commons.lang.StringUtils;
@@ -88,37 +82,10 @@
* <p>The Method object for Java 1.4 getCause.</p>
*/
private static final Method THROWABLE_CAUSE_METHOD;
-
/**
* <p>The Method object for Java 1.4 initCause.</p>
*/
private static final Method THROWABLE_INITCAUSE_METHOD;
-
- /**
- * An empty {@link ExceptionContext}.
- * @since 3.0
- */
- public static final ExceptionContext EMPTY_CONTEXT = new ExceptionContext() {
-
- private static final long serialVersionUID = 1L;
-
- public ExceptionContext addLabeledValue(String label, Serializable value) {
- throw new UnsupportedOperationException();
- }
-
- public Serializable getLabeledValue(String label) {
- return null;
- }
-
- public Set<String> getLabelSet() {
- return Collections.<String>emptySet();
- }
-
- public String getFormattedExceptionMessage(String baseMessage) {
- return baseMessage;
- }
-
- };
static {
Method causeMethod;
try {
@@ -134,7 +101,7 @@
}
THROWABLE_INITCAUSE_METHOD = causeMethod;
}
-
+
/**
* <p>
* Public constructor allows an instance of <code>ExceptionUtils</code> to be created, although that is not