[jackson-jaxrs-providers] 96/162: Move auto-close disabling further down to only modify instances

Timo Aaltonen tjaalton at moszumanska.debian.org
Mon Sep 8 22:16:32 UTC 2014


This is an automated email from the git hooks/post-receive script.

tjaalton pushed a commit to branch master
in repository jackson-jaxrs-providers.

commit fe806fc14bd9a4ed06b464770e7434b3f6513862
Author: Tatu Saloranta <tatu.saloranta at iki.fi>
Date:   Wed Oct 9 22:24:41 2013 -0700

    Move auto-close disabling further down to only modify instances
---
 .../fasterxml/jackson/jaxrs/base/ProviderBase.java | 41 +++++++++++++++-------
 1 file changed, 28 insertions(+), 13 deletions(-)

diff --git a/base/src/main/java/com/fasterxml/jackson/jaxrs/base/ProviderBase.java b/base/src/main/java/com/fasterxml/jackson/jaxrs/base/ProviderBase.java
index a37c510..03930f8 100644
--- a/base/src/main/java/com/fasterxml/jackson/jaxrs/base/ProviderBase.java
+++ b/base/src/main/java/com/fasterxml/jackson/jaxrs/base/ProviderBase.java
@@ -549,14 +549,13 @@ public abstract class ProviderBase<
 
         // Where can we find desired encoding? Within HTTP headers?
         JsonEncoding enc = findEncoding(mediaType, httpHeaders);
-        JsonGenerator jg = writer.getFactory().createGenerator(entityStream, enc);
-
+        JsonGenerator g = _createGenerator(writer, entityStream, enc);
+        
         try {
             // Want indentation?
             if (writer.isEnabled(SerializationFeature.INDENT_OUTPUT)) {
-                jg.useDefaultPrettyPrinter();
+                g.useDefaultPrettyPrinter();
             }
-            // 04-Mar-2010, tatu: How about type we were given? (if any)
             JavaType rootType = null;
 
             if (genericType != null && value != null) {
@@ -587,9 +586,9 @@ public abstract class ProviderBase<
                 writer = writer.withType(rootType);
             }
             value = endpoint.modifyBeforeWrite(value);
-            writer.writeValue(jg, value);
+            writer.writeValue(g, value);
         } finally {
-            jg.close();
+            g.close();
         }
     }
 
@@ -616,6 +615,22 @@ public abstract class ProviderBase<
             httpHeaders.add(HEADER_CONTENT_TYPE_OPTIONS, "nosniff");
         }
     }
+
+    /**
+     * Overridable helper method called to create a {@link JsonGenerator} for writing
+     * contents into given raw {@link OutputStream}.
+     * 
+     * @since 2.3
+     */
+    protected JsonGenerator _createGenerator(ObjectWriter writer, OutputStream rawStream, JsonEncoding enc)
+        throws IOException
+    {
+        JsonGenerator g = writer.getFactory().createGenerator(rawStream, enc);
+        // Important: we are NOT to close the underlying stream after
+        // mapping, so we need to instruct generator
+        g.disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
+        return g;
+    }
     
     /*
     /**********************************************************
@@ -711,11 +726,17 @@ public abstract class ProviderBase<
      * contents of given raw {@link InputStream}.
      * May return null to indicate that Stream is empty; that is, contains no
      * content.
+     * 
+     * @since 2.2
      */
     protected JsonParser _createParser(ObjectReader reader, InputStream rawStream)
         throws IOException
     {
-        return reader.getFactory().createParser(rawStream);
+        JsonParser p = reader.getFactory().createParser(rawStream);
+        // Important: we are NOT to close the underlying stream after
+        // mapping, so we need to instruct parser:
+        p.disable(JsonParser.Feature.AUTO_CLOSE_SOURCE);
+        return p;
     }
 
     /*
@@ -756,12 +777,6 @@ public abstract class ProviderBase<
                 m = _mapperConfig.getDefaultMapper();
             }
         }
-        // Important: we are NOT to close the underlying stream after
-        // mapping, so we need to instruct parser:
-        JsonFactory f = m.getFactory();
-        f.disable(JsonParser.Feature.AUTO_CLOSE_SOURCE);
-        // ditto for generator
-        f.disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
         return m;
     }
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jackson-jaxrs-providers.git



More information about the pkg-java-commits mailing list