This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/johnzon.git


The following commit(s) were added to refs/heads/master by this push:
     new b8529a3  JOHNZON-333 respect RFC 7159 Section 7 (Strings)
b8529a3 is described below

commit b8529a3b8c45c759ccdd3d9ae2f27d67a5bb2d87
Author: Mark Struberg <strub...@apache.org>
AuthorDate: Mon Jan 25 22:44:26 2021 +0100

    JOHNZON-333 respect RFC 7159 Section 7 (Strings)
    
    "test" as Java Object should result in a String "\"test\"".
    Because the quotes are part of the JSON notation of a string.
    This is nothing we may 'enforce' - this is clearly requrested by
    the JSON RFC. And the JSON-B Spec points to the RFC.
---
 .../apache/johnzon/jaxrs/ConfigurableJohnzonProvider.java  |  4 ----
 .../johnzon/jaxrs/WildcardConfigurableJohnzonProvider.java |  4 ----
 .../main/java/org/apache/johnzon/jsonb/JohnzonBuilder.java |  3 ---
 .../java/org/apache/johnzon/jsonb/DefaultMappingTest.java  | 14 +++++++++-----
 .../src/main/java/org/apache/johnzon/mapper/Mapper.java    |  8 +++++++-
 .../main/java/org/apache/johnzon/mapper/MapperBuilder.java | 12 +-----------
 .../main/java/org/apache/johnzon/mapper/MapperConfig.java  |  8 +-------
 .../java/org/apache/johnzon/mapper/MapperConfigTest.java   |  2 +-
 .../test/java/org/apache/johnzon/mapper/MapperTest.java    |  3 +--
 .../src/test/java/org/superbiz/ExtendMappingTest.java      |  2 +-
 10 files changed, 21 insertions(+), 39 deletions(-)

diff --git 
a/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/ConfigurableJohnzonProvider.java
 
b/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/ConfigurableJohnzonProvider.java
index edcf545..ab616cc 100644
--- 
a/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/ConfigurableJohnzonProvider.java
+++ 
b/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/ConfigurableJohnzonProvider.java
@@ -282,10 +282,6 @@ public class ConfigurableJohnzonProvider<T> implements 
MessageBodyWriter<T>, Mes
         builder.setReadAttributeBeforeWrite(rabw);
     }
 
-    public void setEnforceQuoteString(final boolean val) {
-        builder.setEnforceQuoteString(val);
-    }
-
     public void setPrimitiveConverters(final boolean val) {
         builder.setPrimitiveConverters(val);
     }
diff --git 
a/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/WildcardConfigurableJohnzonProvider.java
 
b/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/WildcardConfigurableJohnzonProvider.java
index 5fc52fa..e841125 100644
--- 
a/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/WildcardConfigurableJohnzonProvider.java
+++ 
b/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/WildcardConfigurableJohnzonProvider.java
@@ -222,10 +222,6 @@ public class WildcardConfigurableJohnzonProvider<T> 
implements MessageBodyWriter
         builder.setEncoding(encoding);
     }
 
-    public void setEnforceQuoteString(final boolean val) {
-        builder.setEnforceQuoteString(val);
-    }
-
     public void setPrimitiveConverters(final boolean val) {
         builder.setPrimitiveConverters(val);
     }
diff --git 
a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonBuilder.java 
b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonBuilder.java
index 0b749a4..d21bb18 100644
--- a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonBuilder.java
+++ b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonBuilder.java
@@ -164,9 +164,6 @@ public class JohnzonBuilder implements JsonbBuilder {
                 .map(PropertyVisibilityStrategy.class::cast).orElse(new 
DefaultPropertyVisibilityStrategy());
 
         config.getProperty("johnzon.attributeOrder").ifPresent(comp -> 
builder.setAttributeOrder(Comparator.class.cast(comp)));
-        config.getProperty("johnzon.enforceQuoteString")
-                .map(this::toBool)
-                .ifPresent(builder::setEnforceQuoteString);
         config.getProperty("johnzon.primitiveConverters")
                 .map(this::toBool)
                 .ifPresent(builder::setPrimitiveConverters);
diff --git 
a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/DefaultMappingTest.java 
b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/DefaultMappingTest.java
index f8738ef..c930b44 100644
--- 
a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/DefaultMappingTest.java
+++ 
b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/DefaultMappingTest.java
@@ -61,6 +61,7 @@ import static org.junit.Assert.fail;
 // taken from the examples of the spec
 // TODO: bunch of asserts
 //CHECKSTYLE:OFF
+
 public class DefaultMappingTest {
     private static final Jsonb JSONB = JsonbBuilder.create();
 
@@ -150,11 +151,11 @@ public class DefaultMappingTest {
 
     @Test
     public void simpleValues() {
-        assertEquals("\"strValue\"", JSONB.toJson("\"strValue\""));
-        assertEquals("true", JSONB.toJson("true"));
-        assertEquals("false", JSONB.toJson("false"));
-        assertEquals("null", JSONB.toJson("null"));
-        assertEquals("strValue", JSONB.toJson(Optional.of("strValue")));
+        assertEquals("\"\"strValue\"\"", JSONB.toJson("\"strValue\""));
+        assertEquals("\"true\"", JSONB.toJson("true"));
+        assertEquals("\"false\"", JSONB.toJson("false"));
+        assertEquals("\"null\"", JSONB.toJson("null"));
+        assertEquals("\"strValue\"", JSONB.toJson(Optional.of("strValue")));
         assertEquals("null", JSONB.toJson(Optional.ofNullable(null)));
         assertEquals("null", JSONB.toJson(Optional.empty()));
         assertEquals("1", JSONB.toJson(OptionalInt.of(1)));
@@ -195,6 +196,9 @@ public class DefaultMappingTest {
 
         OptionalDouble emptyOptionalDouble = JSONB.fromJson("null", 
OptionalDouble.class);
         assertTrue(!emptyOptionalDouble.isPresent());
+
+        final String testText = "test";
+        assertEquals(testText, JSONB.fromJson(JSONB.toJson(testText), 
String.class));
     }
 
     public static void fromJsonPrimitives() {
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java 
b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
index 709801f..775e7b6 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
@@ -173,7 +173,13 @@ public class Mapper implements Closeable {
                 || object == null) {
             try {
                 final String valueOf = String.valueOf(object);
-                stream.write(config.isEnforceQuoteString() && 
String.class.isInstance(object) && !valueOf.startsWith("\"") ? '"' + valueOf + 
'"' : valueOf);
+                if (object instanceof String) {
+                    stream.write('"');
+                    stream.write(valueOf);
+                    stream.write('"');
+                }  else {
+                    stream.write(valueOf);
+                }
             } catch (final IOException e) {
                 throw new MapperException(e);
             } finally {
diff --git 
a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperBuilder.java 
b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperBuilder.java
index 9646a90..cf6de3d 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperBuilder.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperBuilder.java
@@ -88,7 +88,6 @@ public class MapperBuilder {
     private boolean treatByteArrayAsBase64;
     private boolean treatByteArrayAsBase64URL;
     private boolean readAttributeBeforeWrite;
-    private boolean enforceQuoteString;
     private AccessMode accessMode;
     private Charset encoding = 
Charset.forName(System.getProperty("johnzon.mapper.encoding", "UTF-8"));
     private LazyConverterMap adapters = new LazyConverterMap();
@@ -231,7 +230,7 @@ public class MapperBuilder {
                         version, close,
                         skipNull, skipEmptyArray,
                         treatByteArrayAsBase64, treatByteArrayAsBase64URL, 
readAttributeBeforeWrite,
-                        accessMode, encoding, attributeOrder, 
enforceQuoteString, failOnUnknownProperties,
+                        accessMode, encoding, attributeOrder, 
failOnUnknownProperties,
                         serializeValueFilter, useBigDecimalForFloats, 
deduplicateObjects,
                         interfaceImplementationMapping, useJsRange, 
useBigDecimalForObjectNumbers,
                         supportEnumContainerDeserialization,
@@ -457,15 +456,6 @@ public class MapperBuilder {
         return this;
     }
 
-    public MapperBuilder setEnforceQuoteString() {
-        return setEnforceQuoteString(true);
-    }
-
-    public MapperBuilder setEnforceQuoteString(final boolean val) {
-        this.enforceQuoteString = val;
-        return this;
-    }
-
     public MapperBuilder setPrimitiveConverters(final boolean val) {
         this.primitiveConverters = val;
         return this;
diff --git 
a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperConfig.java 
b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperConfig.java
index 6e2906b..eea1716 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperConfig.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperConfig.java
@@ -73,7 +73,6 @@ public /* DON'T MAKE IT HIDDEN */ class MapperConfig 
implements Cloneable {
     private final Map<Class<?>, ObjectConverter.Writer<?>> 
objectConverterWriters;
     private final Map<Class<?>, ObjectConverter.Reader<?>> 
objectConverterReaders;
     private final Comparator<String> attributeOrder;
-    private final boolean enforceQuoteString;
     private final boolean failOnUnknown;
     private final SerializeValueFilter serializeValueFilter;
     private final boolean useBigDecimalForFloats;
@@ -106,7 +105,7 @@ public /* DON'T MAKE IT HIDDEN */ class MapperConfig 
implements Cloneable {
                         final boolean readAttributeBeforeWrite,
                         final AccessMode accessMode, final Charset encoding,
                         final Comparator<String> attributeOrder,
-                        final boolean enforceQuoteString, final boolean 
failOnUnknown,
+                        final boolean failOnUnknown,
                         final SerializeValueFilter serializeValueFilter,
                         final boolean useBigDecimalForFloats,
                         final Boolean deduplicateObjects,
@@ -149,7 +148,6 @@ public /* DON'T MAKE IT HIDDEN */ class MapperConfig 
implements Cloneable {
 
 
         this.attributeOrder = attributeOrder;
-        this.enforceQuoteString = enforceQuoteString;
         this.failOnUnknown = failOnUnknown;
         this.serializeValueFilter = serializeValueFilter == null ? (name, 
value) -> false : serializeValueFilter;
         this.interfaceImplementationMapping = interfaceImplementationMapping;
@@ -410,10 +408,6 @@ public /* DON'T MAKE IT HIDDEN */ class MapperConfig 
implements Cloneable {
         return attributeOrder;
     }
 
-    public boolean isEnforceQuoteString() {
-        return enforceQuoteString;
-    }
-
     public boolean isUseBigDecimalForFloats() {
         return useBigDecimalForFloats;
     }
diff --git 
a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperConfigTest.java 
b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperConfigTest.java
index 506e74e..d512b41 100644
--- 
a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperConfigTest.java
+++ 
b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperConfigTest.java
@@ -169,7 +169,7 @@ public class MapperConfigTest {
                                 new FieldAccessMode(true, true),
                                 StandardCharsets.UTF_8,
                                 null,
-                                false, false, null, false, false, emptyMap(), 
true, false, true,
+                                false, null, false, false, emptyMap(), true, 
false, true,
                                 null, null, null, null, null,
                                 type -> new EnumConverter(type));
     }
diff --git 
a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperTest.java 
b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperTest.java
index 45def70..58b0b2b 100644
--- a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperTest.java
+++ b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperTest.java
@@ -302,7 +302,6 @@ public class MapperTest {
     public void justObjectAsModel() {
         final Mapper encodingAwareMapper = new 
MapperBuilder().setEncoding("UTF-8" /*otherwise guess algo fails for too small 
string*/).build();
         final Mapper simpleMapper = new MapperBuilder().build();
-        final Mapper enforcedQuotes = new 
MapperBuilder().setEnforceQuoteString().build();
         { // object
             final String object = 
"{\"a\":1,\"b\":true,\"c\":null,\"d\":[1,2]," +
                     
"\"e\":[\"i\",\"j\"],\"k\":{\"a\":1,\"b\":true,\"c\":null,\"d\":[1,2],\"e\":[\"i\",\"j\"]}}";
@@ -339,7 +338,7 @@ public class MapperTest {
             assertEquals("true", simpleMapper.writeObjectAsString(true));
             assertEquals("false", simpleMapper.writeObjectAsString(false));
             assertEquals("1", simpleMapper.writeObjectAsString(1));
-            assertEquals("\"val\"", enforcedQuotes.writeObjectAsString("val"));
+            assertEquals("\"val\"", simpleMapper.writeObjectAsString("val"));
             assertEquals("[\"val1\",\"val2\"]", 
simpleMapper.writeObjectAsString(asList("val1", "val2")));
             assertEquals("{\"a\":\"val\",\"b\":true,\"c\":1,\"d\":true}", 
simpleMapper.writeObjectAsString(new TreeMap<String, Object>() {{
                 put("a", "val");
diff --git a/johnzon-mapper/src/test/java/org/superbiz/ExtendMappingTest.java 
b/johnzon-mapper/src/test/java/org/superbiz/ExtendMappingTest.java
index fb6ccf8..febe682 100644
--- a/johnzon-mapper/src/test/java/org/superbiz/ExtendMappingTest.java
+++ b/johnzon-mapper/src/test/java/org/superbiz/ExtendMappingTest.java
@@ -61,7 +61,7 @@ public class ExtendMappingTest {
                     new LazyConverterMap(), new HashMap<>(), new HashMap<>(),
                     -1, true, true, true, false, false, false,
                     new FieldAccessMode(false, false),
-                    StandardCharsets.UTF_8, String::compareTo, false, false, 
null, false, false,
+                    StandardCharsets.UTF_8, String::compareTo, false, null, 
false, false,
                     emptyMap(), true, false, true,
                     null, null, null, null, null,
                     type -> new EnumConverter(type)));

Reply via email to