You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2014/08/12 16:52:48 UTC
svn commit: r1617497 - in /logging/log4j/log4j2/trunk/log4j-api/src:
main/java/org/apache/logging/log4j/message/ObjectMessage.java
test/java/org/apache/logging/log4j/message/ObjectMessageTest.java
Author: rpopma
Date: Tue Aug 12 14:52:47 2014
New Revision: 1617497
URL: http://svn.apache.org/r1617497
Log:
LOG4J2-763: change ObjectMessage.equals() to account for the fact that the parameter may have been converted to a String during serialization
Modified:
logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java
logging/log4j/log4j2/trunk/log4j-api/src/test/java/org/apache/logging/log4j/message/ObjectMessageTest.java
Modified: logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java?rev=1617497&r1=1617496&r2=1617497&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java (original)
+++ logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java Tue Aug 12 14:52:47 2014
@@ -83,7 +83,11 @@ public class ObjectMessage implements Me
}
final ObjectMessage that = (ObjectMessage) o;
- return obj == null ? that.obj == null : obj.equals(that.obj);
+ return obj == null ? that.obj == null : equalObjectsOrStrings(obj, that.obj);
+ }
+
+ private boolean equalObjectsOrStrings(Object left, Object right) {
+ return left.equals(right) || String.valueOf(left).equals(String.valueOf(right));
}
@Override
Modified: logging/log4j/log4j2/trunk/log4j-api/src/test/java/org/apache/logging/log4j/message/ObjectMessageTest.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-api/src/test/java/org/apache/logging/log4j/message/ObjectMessageTest.java?rev=1617497&r1=1617496&r2=1617497&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-api/src/test/java/org/apache/logging/log4j/message/ObjectMessageTest.java (original)
+++ logging/log4j/log4j2/trunk/log4j-api/src/test/java/org/apache/logging/log4j/message/ObjectMessageTest.java Tue Aug 12 14:52:47 2014
@@ -20,7 +20,6 @@ import java.io.Serializable;
import java.math.BigDecimal;
import org.apache.log4j.util.SerialUtil;
-import org.junit.Ignore;
import org.junit.Test;
import static org.junit.Assert.*;
@@ -77,16 +76,6 @@ public class ObjectMessageTest {
}
@Test
- public void testDeserializeNonSerializableParamNotEqualIfToStringDiffers() {
- ObjectMessageTest nonSerializable = new ObjectMessageTest();
- assertFalse(nonSerializable instanceof Serializable);
- ObjectMessage msg = new ObjectMessage(nonSerializable);
- ObjectMessage other = SerialUtil.deserialize(SerialUtil.serialize(msg));
- assertNotEquals("Expected different: toString is different", msg, other);
- }
-
- @Ignore
- @Test
public void testDeserializeNonSerializableParamEqualIfToStringSame() {
class NonSerializable {
public boolean equals(Object other) {
@@ -98,8 +87,7 @@ public class ObjectMessageTest {
ObjectMessage msg = new ObjectMessage(nonSerializable);
ObjectMessage other = SerialUtil.deserialize(SerialUtil.serialize(msg));
-// TODO this fails: msg.obj.equals(other.obj) is false...
-// TODO ObjectMessage.equals() implementation does not match the serialization mechanism
assertEquals(msg, other);
+ assertEquals(other, msg);
}
}