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 <[email protected]>
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)));