From 11e6b027e7026fba78b95c64d44bb52593d54ecc Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Mon, 24 Feb 2025 19:47:53 -0500 Subject: [PATCH] More informative `ObjectInfo` --- .../jboss/marshalling/TraceInformation.java | 29 +++++++------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/api/src/main/java/org/jboss/marshalling/TraceInformation.java b/api/src/main/java/org/jboss/marshalling/TraceInformation.java index 9c60f907..8c738023 100644 --- a/api/src/main/java/org/jboss/marshalling/TraceInformation.java +++ b/api/src/main/java/org/jboss/marshalling/TraceInformation.java @@ -129,15 +129,14 @@ public static void addFieldInformation(Throwable t, SerializableClass owner, Ser */ public static void addObjectInformation(Throwable t, Object targetObject) { final TraceInformation ti = getOrAddTraceInformation(t); - final String targetClassName = getNiceClassName(targetObject.getClass()); - int targetHashCode = 0; + String toString; try { - targetHashCode = targetObject.hashCode(); - } catch (Throwable ignored) { - // guess we won't know the hash code! + toString = targetObject.toString(); + } catch (Throwable error) { + toString = targetObject.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(targetObject)) + " [" + error + "]"; } final Info oldInfo = ti.info; - ti.info = new ObjectInfo(oldInfo, targetClassName, targetHashCode); + ti.info = new ObjectInfo(oldInfo, toString); } /** @@ -244,26 +243,20 @@ public static final class ObjectInfo extends Info implements Serializable { private static final long serialVersionUID = -8580895864558204394L; - private final String targetClassName; - private final int targetHashCode; + private final String toString; - ObjectInfo(final Info cause, final String targetClassName, final int targetHashCode) { + ObjectInfo(final Info cause, final String toString) { super(cause); - this.targetClassName = targetClassName; - this.targetHashCode = targetHashCode; - } - - public String getTargetClassName() { - return targetClassName; + this.toString = toString; } - public int getTargetHashCode() { - return targetHashCode; + public String getToString() { + return toString; } protected void toString(final StringBuilder builder) { super.toString(builder); - builder.append("\n\tin object ").append(targetClassName).append('@').append(Integer.toHexString(targetHashCode)); + builder.append("\n\tin object ").append(toString); } }