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 2014/07/07 07:58:26 UTC

git commit: getting rid of some System properties configuring the factory

Repository: incubator-fleece
Updated Branches:
  refs/heads/master 3a8b2e884 -> 64b94e665


getting rid of some System properties configuring the factory


Project: http://git-wip-us.apache.org/repos/asf/incubator-fleece/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-fleece/commit/64b94e66
Tree: http://git-wip-us.apache.org/repos/asf/incubator-fleece/tree/64b94e66
Diff: http://git-wip-us.apache.org/repos/asf/incubator-fleece/diff/64b94e66

Branch: refs/heads/master
Commit: 64b94e6656a4bd216fc3ce5221327f27dd41ecc6
Parents: 3a8b2e8
Author: Romain Manni-Bucau <rm...@gmail.com>
Authored: Mon Jul 7 07:58:14 2014 +0200
Committer: Romain Manni-Bucau <rm...@gmail.com>
Committed: Mon Jul 7 07:58:14 2014 +0200

----------------------------------------------------------------------
 .../fleece/core/JsonParserFactoryImpl.java      |  45 ++++--
 .../apache/fleece/core/JsonProviderImpl.java    | 141 +++++++++++++++----
 .../fleece/core/JsonReaderFactoryImpl.java      |   9 +-
 .../org/apache/fleece/core/JsonReaderImpl.java  |  12 +-
 .../apache/fleece/core/JsonReaderImplTest.java  |  40 +++---
 pom.xml                                         |   2 +-
 6 files changed, 172 insertions(+), 77 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-fleece/blob/64b94e66/fleece-core/src/main/java/org/apache/fleece/core/JsonParserFactoryImpl.java
----------------------------------------------------------------------
diff --git a/fleece-core/src/main/java/org/apache/fleece/core/JsonParserFactoryImpl.java b/fleece-core/src/main/java/org/apache/fleece/core/JsonParserFactoryImpl.java
index ceeef70..e1eea34 100644
--- a/fleece-core/src/main/java/org/apache/fleece/core/JsonParserFactoryImpl.java
+++ b/fleece-core/src/main/java/org/apache/fleece/core/JsonParserFactoryImpl.java
@@ -31,33 +31,42 @@ import java.util.Map;
 
 public class JsonParserFactoryImpl implements JsonParserFactory {
     public static final String MAX_STRING_LENGTH = "org.apache.fleece.max-string-length";
+    public static final String BUFFER_LENGTH = "org.apache.fleece.default-char-buffer";
     public static final int DEFAULT_MAX_SIZE = Integer.getInteger(MAX_STRING_LENGTH, 8192);
 
     private final Map<String, ?> config;
     private final int maxSize;
+    private final int bufferSize;
 
     public JsonParserFactoryImpl(final Map<String, ?> config) {
         this.config = config;
-        final Object maxStringSize = config.get(MAX_STRING_LENGTH);
+        this.maxSize = getInt(MAX_STRING_LENGTH);
+        this.bufferSize = getInt(BUFFER_LENGTH);
+        if (bufferSize <= 0) {
+            throw new IllegalArgumentException("buffer length must be greater than zero");
+        }
+    }
+
+    private int getInt(final String key) {
+        final Object maxStringSize = config.get(key);
         if (maxStringSize == null) {
-            maxSize = DEFAULT_MAX_SIZE;
+            return DEFAULT_MAX_SIZE;
         } else if (Number.class.isInstance(maxStringSize)) {
-            maxSize = Number.class.cast(maxStringSize).intValue();
-        } else {
-            maxSize = Integer.parseInt(maxStringSize.toString());
+            return Number.class.cast(maxStringSize).intValue();
         }
+        return Integer.parseInt(maxStringSize.toString());
     }
-    
-    JsonParser getDefaultJsonParserImpl(InputStream in) {
-        return new JsonCharBufferStreamParser(in, maxSize);
+
+    private JsonCharBufferStreamParser getDefaultJsonParserImpl(InputStream in) {
+        return new JsonCharBufferStreamParser(in, maxSize, bufferSize);
     }
-    
-    JsonParser getDefaultJsonParserImpl(InputStream in, Charset charset) {
-        return new JsonCharBufferStreamParser(in, charset, maxSize);
+
+    private JsonCharBufferStreamParser getDefaultJsonParserImpl(InputStream in, Charset charset) {
+        return new JsonCharBufferStreamParser(in, charset, maxSize, bufferSize);
     }
-    
-    JsonParser getDefaultJsonParserImpl(Reader in) {
-        return new JsonCharBufferStreamParser(in, maxSize);
+
+    private JsonCharBufferStreamParser getDefaultJsonParserImpl(Reader in) {
+        return new JsonCharBufferStreamParser(in, maxSize, bufferSize);
     }
 
     @Override
@@ -89,4 +98,12 @@ public class JsonParserFactoryImpl implements JsonParserFactory {
     public Map<String, ?> getConfigInUse() {
         return Collections.unmodifiableMap(config);
     }
+
+    public EscapedStringAwareJsonParser createInternalParser(final InputStream in) {
+        return getDefaultJsonParserImpl(in);
+    }
+
+    public EscapedStringAwareJsonParser createInternalParser(final Reader reader) {
+        return getDefaultJsonParserImpl(reader);
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-fleece/blob/64b94e66/fleece-core/src/main/java/org/apache/fleece/core/JsonProviderImpl.java
----------------------------------------------------------------------
diff --git a/fleece-core/src/main/java/org/apache/fleece/core/JsonProviderImpl.java b/fleece-core/src/main/java/org/apache/fleece/core/JsonProviderImpl.java
index 3869cbf..1e432ce 100644
--- a/fleece-core/src/main/java/org/apache/fleece/core/JsonProviderImpl.java
+++ b/fleece-core/src/main/java/org/apache/fleece/core/JsonProviderImpl.java
@@ -34,84 +34,167 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.Reader;
+import java.io.Serializable;
 import java.io.Writer;
 import java.util.Collections;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-public class JsonProviderImpl extends JsonProvider {
-    @Override
-    public JsonParser createParser(final InputStream in) {
-        return createParserFactory(Collections.<String, Object>emptyMap()).createParser(in);
-    }
+public class JsonProviderImpl extends JsonProvider implements Serializable {
+    private static final JsonProvider DELEGATE = new JsonProviderDelegate();
 
     @Override
     public JsonParser createParser(final Reader reader) {
-        return createParserFactory(Collections.<String, Object>emptyMap()).createParser(reader);
+        return DELEGATE.createParser(reader);
     }
 
     @Override
-    public JsonReader createReader(final InputStream in) {
-        return new JsonReaderImpl(in);
+    public JsonParser createParser(final InputStream inputStream) {
+        return DELEGATE.createParser(inputStream);
     }
 
     @Override
-    public JsonReader createReader(final Reader reader) {
-        return new JsonReaderImpl(reader);
+    public JsonParserFactory createParserFactory(final Map<String, ?> stringMap) {
+        return DELEGATE.createParserFactory(stringMap);
     }
 
     @Override
-    public JsonParserFactory createParserFactory(final Map<String, ?> config) {
-        return new JsonParserFactoryImpl(config);
+    public JsonGenerator createGenerator(final Writer writer) {
+        return DELEGATE.createGenerator(writer);
     }
 
     @Override
-    public JsonReaderFactory createReaderFactory(final Map<String, ?> config) {
-        return new JsonReaderFactoryImpl(config);
+    public JsonGenerator createGenerator(final OutputStream outputStream) {
+        return DELEGATE.createGenerator(outputStream);
     }
 
     @Override
-    public JsonGenerator createGenerator(final Writer writer) {
-        return new JsonGeneratorFacade(new JsonGeneratorImpl(writer, new ConcurrentHashMap<String, String>()));
+    public JsonGeneratorFactory createGeneratorFactory(final Map<String, ?> stringMap) {
+        return DELEGATE.createGeneratorFactory(stringMap);
     }
 
     @Override
-    public JsonGenerator createGenerator(final OutputStream out) {
-        return createGenerator(new OutputStreamWriter(out));
+    public JsonReader createReader(final Reader reader) {
+        return DELEGATE.createReader(reader);
     }
 
     @Override
-    public JsonGeneratorFactory createGeneratorFactory(final Map<String, ?> config) {
-        return new JsonGeneratorFactoryImpl(config);
+    public JsonReader createReader(final InputStream inputStream) {
+        return DELEGATE.createReader(inputStream);
     }
 
     @Override
     public JsonWriter createWriter(final Writer writer) {
-        return new JsonWriterImpl(createGenerator(writer));
+        return DELEGATE.createWriter(writer);
     }
 
     @Override
-    public JsonWriter createWriter(final OutputStream out) {
-        return createWriter(new OutputStreamWriter(out));
+    public JsonWriter createWriter(final OutputStream outputStream) {
+        return DELEGATE.createWriter(outputStream);
     }
 
     @Override
-    public JsonWriterFactory createWriterFactory(final Map<String, ?> config) {
-        return new JsonWriterFactoryImpl(config);
+    public JsonWriterFactory createWriterFactory(final Map<String, ?> stringMap) {
+        return DELEGATE.createWriterFactory(stringMap);
+    }
+
+    @Override
+    public JsonReaderFactory createReaderFactory(final Map<String, ?> stringMap) {
+        return DELEGATE.createReaderFactory(stringMap);
     }
 
     @Override
     public JsonObjectBuilder createObjectBuilder() {
-        return new JsonObjectBuilderImpl();
+        return DELEGATE.createObjectBuilder();
     }
 
     @Override
     public JsonArrayBuilder createArrayBuilder() {
-        return new JsonArrayBuilderImpl();
+        return DELEGATE.createArrayBuilder();
     }
 
     @Override
-    public JsonBuilderFactory createBuilderFactory(final Map<String, ?> config) {
-        return new JsonBuilderFactoryImpl(config);
+    public JsonBuilderFactory createBuilderFactory(Map<String, ?> stringMap) {
+        return DELEGATE.createBuilderFactory(stringMap);
+    }
+
+    private static class JsonProviderDelegate extends JsonProvider {
+        private final JsonReaderFactory readerFactory = new JsonReaderFactoryImpl(Collections.<String, Object>emptyMap());
+        private final JsonParserFactory parserFactory = new JsonParserFactoryImpl(Collections.<String, Object>emptyMap());
+
+        @Override
+        public JsonParser createParser(final InputStream in) {
+            return parserFactory.createParser(in);
+        }
+
+        @Override
+        public JsonParser createParser(final Reader reader) {
+            return parserFactory.createParser(reader);
+        }
+
+        @Override
+        public JsonReader createReader(final InputStream in) {
+            return readerFactory.createReader(in);
+        }
+
+        @Override
+        public JsonReader createReader(final Reader reader) {
+            return readerFactory.createReader(reader);
+        }
+
+        @Override
+        public JsonParserFactory createParserFactory(final Map<String, ?> config) {
+            return new JsonParserFactoryImpl(config);
+        }
+
+        @Override
+        public JsonReaderFactory createReaderFactory(final Map<String, ?> config) {
+            return new JsonReaderFactoryImpl(config);
+        }
+
+        @Override
+        public JsonGenerator createGenerator(final Writer writer) {
+            return new JsonGeneratorFacade(new JsonGeneratorImpl(writer, new ConcurrentHashMap<String, String>()));
+        }
+
+        @Override
+        public JsonGenerator createGenerator(final OutputStream out) {
+            return createGenerator(new OutputStreamWriter(out));
+        }
+
+        @Override
+        public JsonGeneratorFactory createGeneratorFactory(final Map<String, ?> config) {
+            return new JsonGeneratorFactoryImpl(config);
+        }
+
+        @Override
+        public JsonWriter createWriter(final Writer writer) {
+            return new JsonWriterImpl(createGenerator(writer));
+        }
+
+        @Override
+        public JsonWriter createWriter(final OutputStream out) {
+            return createWriter(new OutputStreamWriter(out));
+        }
+
+        @Override
+        public JsonWriterFactory createWriterFactory(final Map<String, ?> config) {
+            return new JsonWriterFactoryImpl(config);
+        }
+
+        @Override
+        public JsonObjectBuilder createObjectBuilder() {
+            return new JsonObjectBuilderImpl();
+        }
+
+        @Override
+        public JsonArrayBuilder createArrayBuilder() {
+            return new JsonArrayBuilderImpl();
+        }
+
+        @Override
+        public JsonBuilderFactory createBuilderFactory(final Map<String, ?> config) {
+            return new JsonBuilderFactoryImpl(config);
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-fleece/blob/64b94e66/fleece-core/src/main/java/org/apache/fleece/core/JsonReaderFactoryImpl.java
----------------------------------------------------------------------
diff --git a/fleece-core/src/main/java/org/apache/fleece/core/JsonReaderFactoryImpl.java b/fleece-core/src/main/java/org/apache/fleece/core/JsonReaderFactoryImpl.java
index 82c5cba..bd9d528 100644
--- a/fleece-core/src/main/java/org/apache/fleece/core/JsonReaderFactoryImpl.java
+++ b/fleece-core/src/main/java/org/apache/fleece/core/JsonReaderFactoryImpl.java
@@ -20,7 +20,6 @@ package org.apache.fleece.core;
 
 import javax.json.JsonReader;
 import javax.json.JsonReaderFactory;
-
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
@@ -30,24 +29,26 @@ import java.util.Map;
 
 public class JsonReaderFactoryImpl implements JsonReaderFactory {
     private final Map<String, ?> config;
+    private final JsonParserFactoryImpl parserFactory;
 
     public JsonReaderFactoryImpl(final Map<String, ?> config) {
         this.config = config;
+        this.parserFactory = new JsonParserFactoryImpl(config);
     }
 
     @Override
     public JsonReader createReader(final Reader reader) {
-        return new JsonReaderImpl(reader);
+        return new JsonReaderImpl(parserFactory.createInternalParser(reader));
     }
 
     @Override
     public JsonReader createReader(final InputStream in) {
-        return new JsonReaderImpl(in);
+        return new JsonReaderImpl(parserFactory.createInternalParser(in));
     }
 
     @Override
     public JsonReader createReader(final InputStream in, final Charset charset) {
-        return new JsonReaderImpl(new InputStreamReader(in, charset));
+        return createReader(new InputStreamReader(in, charset));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-fleece/blob/64b94e66/fleece-core/src/main/java/org/apache/fleece/core/JsonReaderImpl.java
----------------------------------------------------------------------
diff --git a/fleece-core/src/main/java/org/apache/fleece/core/JsonReaderImpl.java b/fleece-core/src/main/java/org/apache/fleece/core/JsonReaderImpl.java
index 6f6b71c..15a9d0f 100644
--- a/fleece-core/src/main/java/org/apache/fleece/core/JsonReaderImpl.java
+++ b/fleece-core/src/main/java/org/apache/fleece/core/JsonReaderImpl.java
@@ -18,7 +18,6 @@
  */
 package org.apache.fleece.core;
 
-import javax.json.Json;
 import javax.json.JsonArray;
 import javax.json.JsonObject;
 import javax.json.JsonReader;
@@ -26,21 +25,14 @@ import javax.json.JsonStructure;
 import javax.json.JsonValue;
 import javax.json.stream.JsonParser;
 import javax.json.stream.JsonParsingException;
-
-import java.io.InputStream;
-import java.io.Reader;
 import java.math.BigDecimal;
 
 public class JsonReaderImpl implements JsonReader {
     private final EscapedStringAwareJsonParser parser;
     private final JsonReaderListenerFactory listenerFactory;
     
-    public JsonReaderImpl(final InputStream in) {
-        this((EscapedStringAwareJsonParser)Json.createParser(in), new JsonListenerFactory());
-    }
-
-    public JsonReaderImpl(final Reader in) {
-        this((EscapedStringAwareJsonParser)Json.createParser(in), new JsonListenerFactory());
+    public JsonReaderImpl(final EscapedStringAwareJsonParser parser) {
+        this(parser, new JsonListenerFactory());
     }
 
     public JsonReaderImpl(final EscapedStringAwareJsonParser parser, final JsonReaderListenerFactory listenerFactory) {

http://git-wip-us.apache.org/repos/asf/incubator-fleece/blob/64b94e66/fleece-core/src/test/java/org/apache/fleece/core/JsonReaderImplTest.java
----------------------------------------------------------------------
diff --git a/fleece-core/src/test/java/org/apache/fleece/core/JsonReaderImplTest.java b/fleece-core/src/test/java/org/apache/fleece/core/JsonReaderImplTest.java
index cdd82de..0672587 100644
--- a/fleece-core/src/test/java/org/apache/fleece/core/JsonReaderImplTest.java
+++ b/fleece-core/src/test/java/org/apache/fleece/core/JsonReaderImplTest.java
@@ -27,6 +27,8 @@ import javax.json.JsonObject;
 import javax.json.JsonReader;
 import javax.json.JsonStructure;
 
+import java.util.HashMap;
+
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -34,12 +36,6 @@ import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
 public class JsonReaderImplTest {
-    
-    @Before
-    public void setup(){
-        System.setProperty("org.apache.fleece.default-char-buffer", "8192");
-    }
-    
     @Test
     public void simple() {
         final JsonReader reader = Json.createReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("json/simple.json"));
@@ -154,8 +150,9 @@ public class JsonReaderImplTest {
     
     @Test
     public void simpleBadBufferSize8() {
-        System.setProperty("org.apache.fleece.default-char-buffer", "8");
-        final JsonReader reader = Json.createReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("json/simple.json"));
+        final JsonReader reader = Json.createReaderFactory(new HashMap<String, Object>() {{
+            put("org.apache.fleece.default-char-buffer", "8");
+        }}).createReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("json/simple.json"));
         assertNotNull(reader);
         final JsonObject object = reader.readObject();
         assertNotNull(object);
@@ -172,8 +169,9 @@ public class JsonReaderImplTest {
     }
     @Test
     public void simpleBadBufferSize9() {
-        System.setProperty("org.apache.fleece.default-char-buffer", "9");
-        final JsonReader reader = Json.createReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("json/simple.json"));
+        final JsonReader reader = Json.createReaderFactory(new HashMap<String, Object>() {{
+            put("org.apache.fleece.default-char-buffer", "9");
+        }}).createReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("json/simple.json"));
         assertNotNull(reader);
         final JsonObject object = reader.readObject();
         assertNotNull(object);
@@ -191,8 +189,9 @@ public class JsonReaderImplTest {
     
     @Test(expected=IllegalArgumentException.class)
     public void emptyZeroCharBuffersize() {
-        System.setProperty("org.apache.fleece.default-char-buffer", "0");
-        final JsonReader reader = Json.createReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("json/empty.json"));
+        final JsonReader reader = Json.createReaderFactory(new HashMap<String, Object>() {{
+            put("org.apache.fleece.default-char-buffer", "0");
+        }}).createReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("json/empty.json"));
         assertNotNull(reader);
         reader.readObject();
         reader.close();
@@ -200,8 +199,9 @@ public class JsonReaderImplTest {
     
     @Test
     public void emptyOneCharBufferSize() {
-        System.setProperty("org.apache.fleece.default-char-buffer", "1");
-        final JsonReader reader = Json.createReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("json/empty.json"));
+        final JsonReader reader = Json.createReaderFactory(new HashMap<String, Object>() {{
+            put("org.apache.fleece.default-char-buffer", "1");
+        }}).createReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("json/empty.json"));
         assertNotNull(reader);
         final JsonObject object = reader.readObject();
         assertNotNull(object);
@@ -211,8 +211,9 @@ public class JsonReaderImplTest {
     
     @Test
     public void emptyArrayOneCharBufferSize() {
-        System.setProperty("org.apache.fleece.default-char-buffer", "1");
-        final JsonReader reader = Json.createReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("json/emptyarray.json"));
+        final JsonReader reader = Json.createReaderFactory(new HashMap<String, Object>() {{
+            put("org.apache.fleece.default-char-buffer", "1");
+        }}).createReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("json/emptyarray.json"));
         assertNotNull(reader);
         final JsonArray array = reader.readArray();
         assertNotNull(array);
@@ -228,9 +229,10 @@ public class JsonReaderImplTest {
                 28, 32, 64, 128, 1024, 8192 };
 
         for (int i = 0; i < buffersizes.length; i++) {
-            System.setProperty("org.apache.fleece.default-char-buffer", String.valueOf(buffersizes[i]));
-            final JsonReader reader = Json.createReader(Thread.currentThread().getContextClassLoader()
-                    .getResourceAsStream("json/stringescape.json"));
+            final String value = String.valueOf(buffersizes[i]);
+            final JsonReader reader = Json.createReaderFactory(new HashMap<String, Object>() {{
+                put("org.apache.fleece.default-char-buffer", value);
+            }}).createReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("json/stringescape.json"));
             assertNotNull(reader);
             final JsonObject object = reader.readObject();
             assertNotNull(object);

http://git-wip-us.apache.org/repos/asf/incubator-fleece/blob/64b94e66/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 8196b0c..ed634d1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -160,7 +160,7 @@
               <module name="TreeWalker">
                 <module name="FileContentsHolder" />
                 <module name="ConstantName">
-                  <property name="format" value="^_?((log)|(logger)|([a-z][a-zA-Z]*ThreadLocal)|([A-Z][A-Z0-9]*(_[A-Z0-9]+)*))$" />
+                  <property name="format" value="^(([A-Z][A-Z0-9]*(_[A-Z0-9]+)*))$" />
                 </module>
                 <module name="LocalVariableName" />
                 <module name="MethodName">