Skip to content

Commit

Permalink
Encode Boolean values without XMLEncoder
Browse files Browse the repository at this point in the history
  • Loading branch information
Martijn Dirkse committed Sep 23, 2024
1 parent 34c4da8 commit a910caa
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/main/java/nl/nn/testtool/MessageEncoderImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,10 @@ public ToStringResult toString(Object message, String charset) {
} else if (message instanceof String) {
toStringResult = new ToStringResult((String)message, null);
} else {
if (message instanceof byte[]) {
if (message instanceof Boolean) {
toStringResult = new ToStringResult(Boolean.toString((Boolean) message), null, Boolean.class.getName());
}
else if (message instanceof byte[]) {
String encoding;
if (charset == null) {
charset = "UTF-8";
Expand Down Expand Up @@ -147,6 +150,11 @@ public <T> T toObject(Checkpoint originalCheckpoint, T messageToStub) {
} else {
String message = originalCheckpoint.getMessage();
String encoding = originalCheckpoint.getEncoding();
String messageClassName = originalCheckpoint.getMessageClassName();
if (messageClassName.equals(Boolean.class.getName())) {
Object rawResult = Boolean.valueOf(message);
return (T) rawResult;
}
if (encoding == null) {
if (originalCheckpoint.getStreaming() == null) {
return (T)message;
Expand Down
43 changes: 43 additions & 0 deletions src/test/java/nl/nn/testtool/MessageEncoderTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package nl.nn.testtool;

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;

public class MessageEncoderTest {
@Test
public void encode_and_decode_boolean_true() {
MessageEncoder instance = new MessageEncoderImpl();
MessageEncoder.ToStringResult encoded = instance.toString(true, null);
assertEquals("true", encoded.getString());
assertEquals("java.lang.Boolean", encoded.getMessageClassName());
Checkpoint checkpoint = new Checkpoint();
checkpoint.setMessage(encoded.getString());
checkpoint.setEncoding(encoded.getEncoding());
checkpoint.setMessageClassName(encoded.getMessageClassName());
Object back = instance.toObject(checkpoint);
if(! (back instanceof Boolean)) {
fail("Expected to get back Boolean");
}
assertTrue((Boolean) back);
}

@Test
public void encode_decode_boolean_false() {
MessageEncoder instance = new MessageEncoderImpl();
MessageEncoder.ToStringResult encoded = instance.toString(false, null);
assertEquals("false", encoded.getString());
assertEquals("java.lang.Boolean", encoded.getMessageClassName());
Checkpoint checkpoint = new Checkpoint();
checkpoint.setMessage(encoded.getString());
checkpoint.setEncoding(encoded.getEncoding());
checkpoint.setMessageClassName(encoded.getMessageClassName());
Object back = instance.toObject(checkpoint);
if(! (back instanceof Boolean)) {
fail("Expected to get back Boolean");
}
assertFalse((Boolean) back);
}
}

0 comments on commit a910caa

Please sign in to comment.