You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by rm...@apache.org on 2020/02/21 06:26:45 UTC

[johnzon] branch master updated: JOHNZON-302 enable from/to parser/generator in jsonb impl

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 165fb6c  JOHNZON-302 enable from/to parser/generator in jsonb impl
165fb6c is described below

commit 165fb6c39a6fa675fd51478b0d3f8834d2bfea17
Author: Romain Manni-Bucau <rm...@apache.org>
AuthorDate: Fri Feb 21 07:26:31 2020 +0100

    JOHNZON-302 enable from/to parser/generator in jsonb impl
---
 .../apache/johnzon/core/JsonParserFactoryImpl.java |  4 ++
 .../apache/johnzon/core/JsonReaderFactoryImpl.java | 15 +++---
 .../org/apache/johnzon/jsonb/JohnzonJsonb.java     | 40 ++++++++++++++
 .../jsonb/api/experimental/JsonbExtension.java     | 19 ++++++-
 .../johnzon/jsonb/ParserGeneratorMappingTest.java  | 60 +++++++++++++++++++++
 .../org/apache/johnzon/jsonb/test/JsonbRule.java   | 22 ++++++++
 .../org/apache/johnzon/mapper/JohnzonCores.java    | 62 ++++++++++++++++++++++
 .../johnzon/mapper/JohnzonReaderHandler.java       | 41 --------------
 .../java/org/apache/johnzon/mapper/Mapper.java     | 27 +++++++++-
 .../org/apache/johnzon/mapper/MapperBuilder.java   | 42 ++++++++-------
 .../org/apache/johnzon/mapper/ReaderHandler.java   | 53 ------------------
 11 files changed, 260 insertions(+), 125 deletions(-)

diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonParserFactoryImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonParserFactoryImpl.java
index a1651df..b1ef5c6 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonParserFactoryImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonParserFactoryImpl.java
@@ -71,6 +71,10 @@ public class JsonParserFactoryImpl extends AbstractJsonFactory implements JsonPa
         this.defaultEncoding = ofNullable(getString(ENCODING, null)).map(Charset::forName).orElse(null);
     }
 
+    public BufferStrategy.BufferProvider<char[]> getValueBufferProvider() {
+        return valueBufferProvider;
+    }
+
     private JsonStreamParserImpl getDefaultJsonParserImpl(final InputStream in) {
         if (defaultEncoding != null) {
             return getDefaultJsonParserImpl(in, defaultEncoding);
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderFactoryImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderFactoryImpl.java
index 106de0a..4f98812 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderFactoryImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderFactoryImpl.java
@@ -29,6 +29,7 @@ import java.util.Map;
 
 import javax.json.JsonReader;
 import javax.json.JsonReaderFactory;
+import javax.json.stream.JsonParser;
 
 class JsonReaderFactoryImpl extends AbstractJsonFactory implements JsonReaderFactory {
     static final Collection<String> SUPPORTED_CONFIG_KEYS = asList(
@@ -43,25 +44,25 @@ class JsonReaderFactoryImpl extends AbstractJsonFactory implements JsonReaderFac
 
     @Override
     public JsonReader createReader(final Reader reader) {
-        return new JsonReaderImpl(parserFactory.createInternalParser(reader), getCharArrayProvider());
+        return new JsonReaderImpl(parserFactory.createInternalParser(reader), parserFactory.getValueBufferProvider());
     }
 
     @Override
     public JsonReader createReader(final InputStream in) {
-        return new JsonReaderImpl(parserFactory.createInternalParser(in), getCharArrayProvider());
+        return new JsonReaderImpl(parserFactory.createInternalParser(in), parserFactory.getValueBufferProvider());
     }
 
     @Override
     public JsonReader createReader(final InputStream in, final Charset charset) {
-        return new JsonReaderImpl(parserFactory.createInternalParser(in, charset), getCharArrayProvider());
+        return new JsonReaderImpl(parserFactory.createInternalParser(in, charset), parserFactory.getValueBufferProvider());
+    }
+
+    public JsonReader createReader(final JsonParser parser) {
+        return new JsonReaderImpl(parser, parserFactory.getValueBufferProvider());
     }
 
     @Override
     public Map<String, ?> getConfigInUse() {
         return Collections.unmodifiableMap(internalConfig);
     }
-
-    private BufferStrategy.BufferProvider<char[]> getCharArrayProvider() {
-        return getBufferProvider().newCharProvider(1024);
-    }
 }
diff --git a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonJsonb.java b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonJsonb.java
index ba2d8b2..c3aa979 100644
--- a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonJsonb.java
+++ b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonJsonb.java
@@ -32,6 +32,9 @@ import javax.json.JsonStructure;
 import javax.json.JsonValue;
 import javax.json.bind.Jsonb;
 import javax.json.bind.JsonbException;
+import javax.json.stream.JsonGenerator;
+import javax.json.stream.JsonParser;
+
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.Reader;
@@ -533,6 +536,43 @@ public class JohnzonJsonb implements Jsonb, AutoCloseable, JsonbExtension {
         }
     }
 
+    @Override
+    public <T> T fromJson(final JsonParser json, final Class<T> type) {
+        return type.cast(fromJson(json, Type.class.cast(type)));
+    }
+
+    @Override
+    public <T> T fromJson(final JsonParser parser, final Type runtimeType) {
+        try {
+            if (isArray(runtimeType)) {
+                final Class<T> type = Class.class.cast(runtimeType);
+                return delegate.readTypedArray(parser, type.getComponentType(), type);
+            } else if (JsonArray.class == runtimeType) {
+                return (T) delegate.readJsonArray(parser);
+            } else if (isCollection(runtimeType)) {
+                return (T) delegate.readCollection(parser, ParameterizedType.class.cast(runtimeType));
+            }
+            final Type mappingType = unwrapPrimitiveOptional(runtimeType);
+            final Object object = delegate.readObject(parser, mappingType);
+            if (mappingType != runtimeType) {
+                return wrapPrimitiveOptional(object, runtimeType);
+            }
+            return (T) object;
+        } catch (final MapperException me) {
+            throw new JsonbException(me.getMessage(), me);
+        }
+    }
+
+    @Override
+    public void toJson(final Object object, final JsonGenerator jsonGenerator) {
+        delegate.writeObjectWithGenerator(unwrapOptional(object), jsonGenerator);
+    }
+
+    @Override
+    public void toJson(final Object object, final Type runtimeType, final JsonGenerator jsonGenerator) {
+        toJson(object, jsonGenerator);
+    }
+
     private boolean isValueProvider(final Reader reader) {
         final Class<? extends Reader> key = reader.getClass();
         Boolean exists = structureAwareIo.get(key);
diff --git a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/api/experimental/JsonbExtension.java b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/api/experimental/JsonbExtension.java
index aa8c342..d32e68c 100644
--- a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/api/experimental/JsonbExtension.java
+++ b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/api/experimental/JsonbExtension.java
@@ -21,14 +21,29 @@ package org.apache.johnzon.jsonb.api.experimental;
 import java.lang.reflect.Type;
 
 import javax.json.JsonValue;
+import javax.json.stream.JsonGenerator;
+import javax.json.stream.JsonParser;
 
-// https://github.com/eclipse-ee4j/jsonb-api/issues/111
 public interface JsonbExtension {
+    // https://github.com/eclipse-ee4j/jsonb-api/issues/111
+
     <T> T fromJsonValue(JsonValue json, Class<T> type);
 
     <T> T fromJsonValue(JsonValue json, Type runtimeType);
 
     JsonValue toJsonValue(Object object);
 
-    JsonValue toJsonValue (Object object, Type runtimeType);
+    JsonValue toJsonValue(Object object, Type runtimeType);
+
+    // https://github.com/eclipse-ee4j/jsonb-api/issues/224
+
+
+
+    <T> T fromJson(JsonParser json, Class<T> type);
+
+    <T> T fromJson(JsonParser json, Type runtimeType);
+
+    void toJson(Object object, JsonGenerator jsonGenerator);
+
+    void toJson(Object object, Type runtimeType, JsonGenerator jsonGenerator);
 }
diff --git a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/ParserGeneratorMappingTest.java b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/ParserGeneratorMappingTest.java
new file mode 100644
index 0000000..e414e81
--- /dev/null
+++ b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/ParserGeneratorMappingTest.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.johnzon.jsonb;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+
+import javax.json.Json;
+import javax.json.stream.JsonGenerator;
+import javax.json.stream.JsonParser;
+
+import org.apache.johnzon.jsonb.test.JsonbRule;
+import org.junit.Rule;
+import org.junit.Test;
+
+public class ParserGeneratorMappingTest {
+    @Rule
+    public final JsonbRule rule = new JsonbRule();
+
+    @Test
+    public void parser() {
+        try (final JsonParser parser = Json.createParser(new StringReader("{\"name\":\"bar\"}"))) {
+            final Foo foo = rule.fromJson(parser, Foo.class);
+            assertEquals("bar", foo.name);
+        }
+    }
+
+    @Test
+    public void generator() {
+        final StringWriter writer = new StringWriter();
+        try (final JsonGenerator generator = Json.createGenerator(writer)) {
+            final Foo foo = new Foo();
+            foo.name = "bar";
+            rule.toJson(foo, generator);
+        }
+        assertEquals("{\"name\":\"bar\"}", writer.toString());
+    }
+
+    public static class Foo {
+        public String name;
+    }
+}
diff --git a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/test/JsonbRule.java b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/test/JsonbRule.java
index bd164fa..b62d689 100644
--- a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/test/JsonbRule.java
+++ b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/test/JsonbRule.java
@@ -29,6 +29,8 @@ import javax.json.bind.Jsonb;
 import javax.json.bind.JsonbBuilder;
 import javax.json.bind.JsonbConfig;
 import javax.json.bind.JsonbException;
+import javax.json.stream.JsonGenerator;
+import javax.json.stream.JsonParser;
 
 import org.apache.johnzon.jsonb.api.experimental.JsonbExtension;
 import org.junit.rules.TestRule;
@@ -144,4 +146,24 @@ public class JsonbRule implements TestRule, Jsonb, JsonbExtension {
     public JsonValue toJsonValue(final Object object, final Type runtimeType) {
         return JsonbExtension.class.cast(jsonb).toJsonValue(object, runtimeType);
     }
+
+    @Override
+    public <T> T fromJson(final JsonParser json, final Class<T> type) {
+        return JsonbExtension.class.cast(jsonb).fromJson(json, type);
+    }
+
+    @Override
+    public <T> T fromJson(final JsonParser json, final Type runtimeType) {
+        return JsonbExtension.class.cast(jsonb).fromJson(json, runtimeType);
+    }
+
+    @Override
+    public void toJson(final Object object, final JsonGenerator jsonGenerator) {
+        JsonbExtension.class.cast(jsonb).toJson(object, jsonGenerator);
+    }
+
+    @Override
+    public void toJson(final Object object, final Type runtimeType, final JsonGenerator jsonGenerator) {
+        JsonbExtension.class.cast(jsonb).toJson(object, runtimeType, jsonGenerator);
+    }
 }
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/JohnzonCores.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/JohnzonCores.java
new file mode 100644
index 0000000..91e0e2d
--- /dev/null
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/JohnzonCores.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.johnzon.mapper;
+
+import static java.util.Optional.ofNullable;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import javax.json.JsonReader;
+import javax.json.JsonReaderFactory;
+import javax.json.stream.JsonParser;
+
+public final class JohnzonCores {
+    private static final Method CREATE_READER;
+
+    static {
+        Method m = null;
+        try {
+            final Class<?> jrfi = ofNullable(JohnzonCores.class.getClassLoader())
+                    .orElseGet(ClassLoader::getSystemClassLoader)
+                    .loadClass("org.apache.johnzon.core.JsonReaderFactoryImpl");
+            m = jrfi.getDeclaredMethod("createReader", JsonParser.class);
+            if (!m.isAccessible()) {
+                m.setAccessible(true);
+            }
+        } catch (final Exception e) {
+            // no-op
+        }
+        CREATE_READER = m;
+    }
+
+    private JohnzonCores() {
+        // no-op
+    }
+
+    public static JsonReader map(final JsonParser parser, final JsonReaderFactory readerFactory) {
+        try {
+            return JsonReader.class.cast(CREATE_READER.invoke(readerFactory, parser));
+        } catch (final IllegalAccessException e) {
+            throw new IllegalStateException(e);
+        } catch (final InvocationTargetException e) {
+            throw new IllegalStateException(e.getTargetException());
+        }
+    }
+}
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/JohnzonReaderHandler.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/JohnzonReaderHandler.java
deleted file mode 100644
index a89a354..0000000
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/JohnzonReaderHandler.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.johnzon.mapper;
-
-import org.apache.johnzon.core.JsonLongImpl;
-import org.apache.johnzon.core.JsonReaderImpl;
-
-import javax.json.JsonNumber;
-import javax.json.JsonReader;
-import javax.json.JsonValue;
-
-// just for classloading
-public class JohnzonReaderHandler {
-    private JohnzonReaderHandler() {
-        // no-op
-    }
-
-    public static JsonValue read(final JsonReader reader) {
-        return JsonReaderImpl.class.cast(reader).readValue();
-    }
-
-    public static boolean isLong(final JsonNumber number) {
-        return JsonLongImpl.class.isInstance(number);
-    }
-}
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 4a9639c..3616bf7 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
@@ -49,6 +49,7 @@ import javax.json.JsonValue;
 import javax.json.spi.JsonProvider;
 import javax.json.stream.JsonGenerator;
 import javax.json.stream.JsonGeneratorFactory;
+import javax.json.stream.JsonParser;
 
 import org.apache.johnzon.mapper.internal.JsonPointerTracker;
 import org.apache.johnzon.mapper.reflection.JohnzonCollectionType;
@@ -62,7 +63,6 @@ public class Mapper implements Closeable {
     protected final JsonGeneratorFactory generatorFactory;
     protected final JsonBuilderFactory builderFactory;
     protected final JsonProvider provider;
-    protected final ReaderHandler readerHandler;
     protected final Collection<Closeable> closeables;
     protected final Charset charset;
 
@@ -75,7 +75,6 @@ public class Mapper implements Closeable {
         this.provider = provider;
         this.config = config;
         this.mappings = new Mappings(config);
-        this.readerHandler = ReaderHandler.create(readerFactory);
         this.closeables = closeables;
         this.charset = config.getEncoding();
     }
@@ -298,6 +297,12 @@ public class Mapper implements Closeable {
         }
     }
 
+    public <T> T readObject(final JsonParser stream, final Type clazz) {
+        try (final JsonReader reader = JohnzonCores.map(stream, readerFactory)) {
+            return mapObject(clazz, reader);
+        }
+    }
+
     public <T> T readObject(final InputStream stream, final Type clazz) {
         try (final JsonReader reader = charset == null ? readerFactory.createReader(stream(stream)) : readerFactory.createReader(
                 stream(stream), charset)) {
@@ -325,6 +330,12 @@ public class Mapper implements Closeable {
         }
     }
 
+    public <T> Collection<T> readCollection(final JsonParser stream, final ParameterizedType genericType) {
+        try (final JsonReader reader = JohnzonCores.map(stream, readerFactory)) {
+            return mapObject(genericType, reader);
+        }
+    }
+
     public <T> T[] readArray(final Reader stream, final Class<T> clazz) {
         try (final JsonReader reader = readerFactory.createReader(stream(stream))) {
             return (T[]) mapArray(clazz, reader);
@@ -343,12 +354,24 @@ public class Mapper implements Closeable {
         }
     }
 
+    public <T> T readTypedArray(final JsonParser parser, final Class<?> elementType, final Class<T> arrayType) {
+        try (final JsonReader reader = JohnzonCores.map(parser, readerFactory)) {
+            return arrayType.cast(mapArray(elementType, reader));
+        }
+    }
+
     public JsonArray readJsonArray(final Reader stream) {
         try (final JsonReader reader = readerFactory.createReader(stream(stream))) {
             return reader.readArray();
         }
     }
 
+    public JsonArray readJsonArray(final JsonParser stream) {
+        try (final JsonReader reader = JohnzonCores.map(stream, readerFactory)) {
+            return reader.readArray();
+        }
+    }
+
     public <T> T[] readArray(final InputStream stream, final Class<T> clazz) {
         try (final JsonReader reader = charset == null ? readerFactory.createReader(stream(stream)): readerFactory.createReader(stream(stream), charset)) {
             return (T[]) mapArray(clazz, reader);
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 0de82c4..81cc049 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
@@ -169,32 +169,34 @@ public class MapperBuilder {
             if (bufferStrategy != null) {
                 config.put("org.apache.johnzon.buffer-strategy", bufferStrategy);
             }
-            if (pretty) {
-                config.put(JsonGenerator.PRETTY_PRINTING, true);
-            }
 
             if (generatorFactory == null) {
+                if (pretty) {
+                    config.put(JsonGenerator.PRETTY_PRINTING, true);
+                }
                 generatorFactory = provider.createGeneratorFactory(config);
             }
 
-            config.remove(JsonGenerator.PRETTY_PRINTING); // doesnt mean anything anymore for reader
-            if (supportsComments) {
-                config.put("org.apache.johnzon.supports-comments", "true");
-            }
-            if (maxSize > 0) {
-                config.put("org.apache.johnzon.max-string-length", maxSize);
-            }
-            if (bufferSize > 0) {
-                config.put("org.apache.johnzon.default-char-buffer", bufferSize);
-            }
-            if (autoAdjustStringBuffers) {
-                config.put("org.apache.johnzon.auto-adjust-buffer", true);
-            }
-            if (encoding != null) {
-                config.put("org.apache.johnzon.encoding", encoding.name());
+            if (readerFactory == null) {
+                config.remove(JsonGenerator.PRETTY_PRINTING); // doesnt mean anything anymore for reader
+                if (supportsComments) {
+                    config.put("org.apache.johnzon.supports-comments", "true");
+                }
+                if (maxSize > 0) {
+                    config.put("org.apache.johnzon.max-string-length", maxSize);
+                }
+                if (bufferSize > 0) {
+                    config.put("org.apache.johnzon.default-char-buffer", bufferSize);
+                }
+                if (autoAdjustStringBuffers) {
+                    config.put("org.apache.johnzon.auto-adjust-buffer", true);
+                }
+                if (encoding != null) {
+                    config.put("org.apache.johnzon.encoding", encoding.name());
+                }
+                readerFactory = provider.createReaderFactory(config);
             }
-        }
-        if (this.provider == null) {
+        } else if (this.provider == null) {
             this.provider = JsonProvider.provider();
         }
         if (builderFactory == null) {
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/ReaderHandler.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/ReaderHandler.java
deleted file mode 100644
index c317cab..0000000
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/ReaderHandler.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.johnzon.mapper;
-
-import javax.json.JsonNumber;
-import javax.json.JsonReader;
-import javax.json.JsonReaderFactory;
-import javax.json.JsonValue;
-
-public class ReaderHandler {
-    private final boolean johnzon;
-
-    private ReaderHandler(final boolean johnzon) {
-        this.johnzon = johnzon;
-    }
-
-    public static ReaderHandler create(final JsonReaderFactory readerFactory) {
-        if (readerFactory.getClass().getName().equals("org.apache.johnzon.core.JsonReaderFactoryImpl")) {
-            return new ReaderHandler(true);
-        }
-        return new ReaderHandler(false);
-    }
-
-    public JsonValue read(final JsonReader reader) {
-        if (johnzon) {
-            return JohnzonReaderHandler.read(reader);
-        }
-        return reader.read();
-    }
-
-    public boolean isJsonLong(final JsonNumber number) {
-        if (johnzon) {
-            return JohnzonReaderHandler.isLong(number);
-        }
-        return false; // will be slower but not a big deal
-    }
-}