Do not include property values in error messages
diff --git a/src/main/java/org/eclipse/yasson/internal/properties/MessageKeys.java b/src/main/java/org/eclipse/yasson/internal/properties/MessageKeys.java index fdd3793..95fb57e 100644 --- a/src/main/java/org/eclipse/yasson/internal/properties/MessageKeys.java +++ b/src/main/java/org/eclipse/yasson/internal/properties/MessageKeys.java
@@ -68,7 +68,6 @@ INCOMPATIBLE_FACTORY_CREATOR_RETURN_TYPE("incompatibleFactoryCreatorReturnType"), MULTIPLE_JSONB_CREATORS("multipleJsonbCreators"), INTERNAL_ERROR("internalError"), - SERIALIZE_VALUE_ERROR("serializeValueError"), SERIALIZE_PROPERTY_ERROR("serializePropertyError"), DESERIALIZE_VALUE_ERROR("deserializeValueError"), PARSING_NUMBER("parsingNumber"),
diff --git a/src/main/java/org/eclipse/yasson/internal/serializer/AbstractValueTypeSerializer.java b/src/main/java/org/eclipse/yasson/internal/serializer/AbstractValueTypeSerializer.java index 721a1a6..ab81280 100644 --- a/src/main/java/org/eclipse/yasson/internal/serializer/AbstractValueTypeSerializer.java +++ b/src/main/java/org/eclipse/yasson/internal/serializer/AbstractValueTypeSerializer.java
@@ -15,10 +15,7 @@ import org.eclipse.yasson.internal.Marshaller; import org.eclipse.yasson.internal.model.customization.Customization; -import org.eclipse.yasson.internal.properties.MessageKeys; -import org.eclipse.yasson.internal.properties.Messages; -import javax.json.bind.JsonbException; import javax.json.bind.serializer.JsonbSerializer; import javax.json.bind.serializer.SerializationContext; import javax.json.stream.JsonGenerator; @@ -51,12 +48,7 @@ @Override public void serialize(T obj, JsonGenerator generator, SerializationContext ctx) { Marshaller marshaller = (Marshaller) ctx; - try { - serialize(obj, generator, marshaller); - } catch (Exception e) { - throw new JsonbException(Messages.getMessage(MessageKeys.SERIALIZE_VALUE_ERROR, - obj, obj.getClass().getCanonicalName(), e.getMessage())); - } + serialize(obj, generator, marshaller); } protected abstract void serialize(T obj, JsonGenerator generator, Marshaller marshaller);
diff --git a/src/main/java/org/eclipse/yasson/internal/serializer/ObjectSerializer.java b/src/main/java/org/eclipse/yasson/internal/serializer/ObjectSerializer.java index f791645..7ab0f6a 100644 --- a/src/main/java/org/eclipse/yasson/internal/serializer/ObjectSerializer.java +++ b/src/main/java/org/eclipse/yasson/internal/serializer/ObjectSerializer.java
@@ -59,14 +59,15 @@ @Override protected void serializeInternal(T object, JsonGenerator generator, SerializationContext ctx) { - final PropertyModel[] allProperties = ((Marshaller) ctx).getMappingContext().getOrCreateClassModel(object.getClass()).getSortedProperties(); + final PropertyModel[] allProperties = ((Marshaller) ctx).getMappingContext() + .getOrCreateClassModel(object.getClass()).getSortedProperties(); for (PropertyModel model : allProperties) { - try { - marshallProperty(object, generator, ctx, model); - } catch (Exception e) { - throw new JsonbException(Messages.getMessage(MessageKeys.SERIALIZE_PROPERTY_ERROR, - model.getWriteName(), object.getClass().getCanonicalName(), model.getValue(object)), e); - } + try { + marshallProperty(object, generator, ctx, model); + } catch (Exception e) { + throw new JsonbException(Messages.getMessage(MessageKeys.SERIALIZE_PROPERTY_ERROR, model.getWriteName(), + object.getClass().getCanonicalName()), e); + } } }
diff --git a/src/main/resources/yasson-messages.properties b/src/main/resources/yasson-messages.properties index 55c2b78..b0efc2b 100644 --- a/src/main/resources/yasson-messages.properties +++ b/src/main/resources/yasson-messages.properties
@@ -63,8 +63,7 @@ incompatibleFactoryCreatorReturnType=Return type of creator {0} must be of type {1}. multipleJsonbCreators=More than one @JsonbCreator declared in class {0}. internalError=Internal error: {0} -serializeValueError=Unable to serialize value ''{0}'' of type {1} because of: {2} -serializePropertyError=Unable to serialize property ''{0}'' from {1} with value ''{2}'' +serializePropertyError=Unable to serialize property ''{0}'' from {1} deserializeValueError=Error deserialize JSON value into type: {0}. parsingNumber=Error parsing number {0} with format {1}. unknownBinaryDataStrategy=Unknown binary data strategy: {0}
diff --git a/src/test/java/org/eclipse/yasson/Assertions.java b/src/test/java/org/eclipse/yasson/Assertions.java index c1b19e2..509ba75 100644 --- a/src/test/java/org/eclipse/yasson/Assertions.java +++ b/src/test/java/org/eclipse/yasson/Assertions.java
@@ -46,9 +46,10 @@ operation.get(); fail("The operation should have failed with a " + expectedType.getCanonicalName() + " but it succeeded."); } catch (Throwable t) { - String fullErrorMessage = t.getMessage(); - for (Throwable current = t; current.getCause() != null && current.getCause() != current; current = current.getCause()) { - fullErrorMessage += current.getMessage(); + String fullErrorMessage = ""; + for (Throwable current = t; current != null && current.getCause() != current; current = current.getCause()) { + fullErrorMessage += current.getClass().getCanonicalName() + ": "; + fullErrorMessage += current.getMessage() + "\n"; } if (expectedType.isAssignableFrom(t.getClass())) { if (!checkExceptionMessage.apply(fullErrorMessage)) {
diff --git a/src/test/java/org/eclipse/yasson/defaultmapping/basic/NumberTest.java b/src/test/java/org/eclipse/yasson/defaultmapping/basic/NumberTest.java index 8dfa547..16d5e5d 100644 --- a/src/test/java/org/eclipse/yasson/defaultmapping/basic/NumberTest.java +++ b/src/test/java/org/eclipse/yasson/defaultmapping/basic/NumberTest.java
@@ -225,30 +225,28 @@ @Test public void testSerializeInvalidDouble() { - shouldFail(() -> jsonb.toJson(Double.POSITIVE_INFINITY), - msg -> msg.contains("Unable to serialize value") && msg.contains("java.lang.Double")); - - NumberContainer obj = new NumberContainer(); - obj.doubleProp = Double.POSITIVE_INFINITY; - shouldFail(() -> jsonb.toJson(obj), - msg -> msg.contains("doubleProp") && msg.contains("NumberContainer")); + shouldFail(() -> jsonb.toJson(Double.POSITIVE_INFINITY)); + + NumberContainer obj = new NumberContainer(); + obj.doubleProp = Double.POSITIVE_INFINITY; + shouldFail(() -> jsonb.toJson(obj), msg -> msg.contains("doubleProp") && msg.contains("NumberContainer")); } @Test public void testSerializeInvalidDoubleCollection() { - NumberContainer obj = new NumberContainer(); - obj.collectionProp = Collections.singleton(Double.POSITIVE_INFINITY); - shouldFail(() -> jsonb.toJson(obj), - msg -> msg.contains("collectionProp") && msg.contains("NumberContainer") && msg.contains("Infinity")); + NumberContainer obj = new NumberContainer(); + obj.collectionProp = Collections.singleton(Double.POSITIVE_INFINITY); + shouldFail(() -> jsonb.toJson(obj), + msg -> msg.contains("collectionProp") && msg.contains("NumberContainer")); } - + @Test public void testSerializeInvalidDoubleMap() { - NumberContainer obj = new NumberContainer(); - obj.mapProp = Collections.singletonMap("doubleKey", Double.POSITIVE_INFINITY); - shouldFail(() -> jsonb.toJson(obj), - msg -> msg.contains("mapProp") && msg.contains("NumberContainer") && msg.contains("Infinity")); + NumberContainer obj = new NumberContainer(); + obj.mapProp = Collections.singletonMap("doubleKey", Double.POSITIVE_INFINITY); + shouldFail(() -> jsonb.toJson(obj), + msg -> msg.contains("mapProp") && msg.contains("NumberContainer")); } }
diff --git a/src/test/java/org/eclipse/yasson/defaultmapping/modifiers/ClassModifiersTest.java b/src/test/java/org/eclipse/yasson/defaultmapping/modifiers/ClassModifiersTest.java index bf2a7b4..8bb67eb 100644 --- a/src/test/java/org/eclipse/yasson/defaultmapping/modifiers/ClassModifiersTest.java +++ b/src/test/java/org/eclipse/yasson/defaultmapping/modifiers/ClassModifiersTest.java
@@ -17,6 +17,7 @@ import javax.json.bind.JsonbBuilder; import javax.json.bind.JsonbException; +import org.eclipse.yasson.Assertions; import org.eclipse.yasson.defaultmapping.modifiers.model.ChildOfPackagePrivateParent; import org.eclipse.yasson.defaultmapping.modifiers.model.FieldModifiersClass; import org.junit.Before; @@ -67,14 +68,9 @@ NestedPackageChild child = new NestedPackageChild(); child.id = 1; child.name = "SomeName"; - try { - jsonb.toJson(child); - fail(); - } catch (JsonbException ex) { - if (!(ex.getCause() instanceof IllegalAccessException)) { - fail(); - } - } + Assertions.shouldFail(() -> jsonb.toJson(child), + msg -> msg.contains("Unable to serialize property 'id'") && + msg.contains("java.lang.IllegalAccessException")); } private class NestedPrivateParent { @@ -90,14 +86,8 @@ NestedPrivateChild child = new NestedPrivateChild(); child.id = 1; child.name = "SomeName"; - try { - jsonb.toJson(child); - fail(); - } catch (JsonbException ex) { - if (!(ex.getCause() instanceof IllegalAccessException)) { - fail(); - } - } + Assertions.shouldFail(() -> jsonb.toJson(child), + msg -> msg.contains("java.lang.IllegalAccessException")); } @@ -114,14 +104,8 @@ NestedStaticPackageChild child = new NestedStaticPackageChild(); child.id = 1; child.name = "SomeName"; - try { - jsonb.toJson(child); - fail(); - } catch (JsonbException ex) { - if (!(ex.getCause() instanceof IllegalAccessException)) { - fail(); - } - } + Assertions.shouldFail(() -> jsonb.toJson(child), + msg -> msg.contains("java.lang.IllegalAccessException")); } private static class NestedStaticPrivateParent { @@ -137,14 +121,8 @@ NestedStaticPrivateChild child = new NestedStaticPrivateChild(); child.id = 1; child.name = "SomeName"; - try { - jsonb.toJson(child); - fail(); - } catch (JsonbException ex) { - if (!(ex.getCause() instanceof IllegalAccessException)) { - fail(); - } - } + Assertions.shouldFail(() -> jsonb.toJson(child), + msg -> msg.contains("java.lang.IllegalAccessException")); } }