This is an automated email from the ASF dual-hosted git repository.
rmannibucau 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 87bbe67 [JOHNZON-347] some adjustment for recent java versions, need
some more love to be faster
87bbe67 is described below
commit 87bbe6797c24240e07709def235e18ec7282cb5a
Author: Romain Manni-Bucau
AuthorDate: Sun Jun 6 18:47:09 2021 +0200
[JOHNZON-347] some adjustment for recent java versions, need some more love
to be faster
---
.../java/org/apache/johnzon/mapper/Mapper.java | 28 ++
.../java/org/apache/johnzon/mapper/Mappings.java | 3 +++
.../johnzon/mapper/access/FieldAccessMode.java | 9 +--
3 files changed, 23 insertions(+), 17 deletions(-)
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 7d24e23..b74c105 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
@@ -163,7 +163,7 @@ public class Mapper implements Closeable {
}
final JsonObjectGenerator objectGenerator = new
JsonObjectGenerator(builderFactory);
writeObject(object, objectGenerator, null,
-isDeduplicateObjects(object.getClass()) ? new
JsonPointerTracker(null, "/") : null);
+isDedup(object.getClass()) ? new JsonPointerTracker(null, "/")
: null);
return objectGenerator.getResult();
}
@@ -193,19 +193,7 @@ public class Mapper implements Closeable {
public void writeObjectWithGenerator(final Object object, final
JsonGenerator generator) {
writeObject(object, generator, null,
-isDeduplicateObjects(object.getClass()) ? new
JsonPointerTracker(null, "/") : null);
-}
-
-private boolean isDeduplicateObjects(Class rootType) {
-Boolean dedup = config.isDeduplicateObjects();
-if (dedup == null) {
-Mappings.ClassMapping classMapping =
mappings.findOrCreateClassMapping(rootType);
-if (classMapping != null) {
-dedup = classMapping.isDeduplicateObjects();
-}
-}
-
-return dedup != null ? dedup : false;
+isDedup(object.getClass()) ? new JsonPointerTracker(null, "/")
: null);
}
public void writeObject(final Object object, final OutputStream stream) {
@@ -389,7 +377,17 @@ public class Mapper implements Closeable {
if (clazz instanceof Class &&
JsonValue.class != clazz && JsonStructure.class != clazz &&
JsonObject.class != clazz && JsonArray.class != clazz) {
-return isDeduplicateObjects((Class) clazz);
+Boolean dedup = config.isDeduplicateObjects();
+if (dedup == null) {
+// TODO: never call it more than once per clazz, should be
done after once ClassMapping is obtained, not here!
+// -> revisit
org.apache.johnzon.mapper.Mappings.findOrCreateClassMapping (isPrimitive should
drop)
+// -> revisit
org.apache.johnzon.mapper.access.FieldAccessMode.isIgnored(java.lang.String,
java.lang.Class)
+Mappings.ClassMapping classMapping =
mappings.findOrCreateClassMapping(clazz);
+if (classMapping != null) {
+dedup = classMapping.isDeduplicateObjects();
+}
+}
+return dedup != null ? dedup : false;
}
return false;
}
diff --git
a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mappings.java
b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mappings.java
index 37259d7..23141be 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mappings.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mappings.java
@@ -408,6 +408,9 @@ public class Mappings {
}
public ClassMapping findOrCreateClassMapping(final Type clazz) {
+if (isPrimitive(clazz)) {
+return null;
+}
return doFindOrCreateClassMapping(clazz, emptyMap(), false);
}
diff --git
a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAccessMode.java
b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAccessMode.java
index d87cd1b..d954cdc 100644
---
a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAccessMode.java
+++
b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAccessMode.java
@@ -23,6 +23,7 @@ import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.johnzon.mapper.Adapter;
@@ -41,7 +42,7 @@ public class FieldAccessMode extends