Refactor WebContent.determineCT to make the arguments clearer.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/4491980b
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/4491980b
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/4491980b

Branch: refs/heads/master
Commit: 4491980bfed389f6d42d8408026c81adb90a6532
Parents: 88836ee
Author: Andy Seaborne <[email protected]>
Authored: Tue Sep 23 14:41:23 2014 +0100
Committer: Andy Seaborne <[email protected]>
Committed: Tue Sep 23 14:41:23 2014 +0100

----------------------------------------------------------------------
 .../java/org/apache/jena/riot/RDFDataMgr.java   | 101 +++++++++++++------
 .../java/org/apache/jena/riot/ResultSetMgr.java |   2 +-
 .../java/org/apache/jena/riot/WebContent.java   |  37 +++++--
 .../org/apache/jena/riot/system/StreamOps.java  |   2 +-
 .../jena/riot/writer/TriGWriterBlocks.java      |   9 +-
 .../apache/jena/riot/writer/TriGWriterFlat.java |   9 +-
 .../jena/riot/writer/TurtleWriterBlocks.java    |   9 +-
 .../jena/riot/writer/TurtleWriterFlat.java      |   9 +-
 .../apache/jena/riot/writer/WriterStream.java   |  76 --------------
 .../riot/writer/WriterStreamRDFBatched.java     |  75 +++++++-------
 .../jena/riot/writer/WriterStreamRDFBlocks.java |  89 +++++++---------
 11 files changed, 193 insertions(+), 225 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java 
b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
index 7f38f7b..284b1c3 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
@@ -67,6 +67,7 @@ import com.hp.hpl.jena.sparql.util.Utils ;
  *  <li>{@code parse}   -- Read data and send to an {@link StreamRDF}</li>
  *  <li>{@code open}    -- Open a typed input stream to the location, using 
any alternative locations</li>
  *  <li>{@code write}   -- Write Model/Dataset etc</li> 
+ *  <li>{@code create}  -- Create a reader or writer explicitly</li> 
  *  </ul> 
  */
 
@@ -80,16 +81,8 @@ public class RDFDataMgr
     static Logger log = LoggerFactory.getLogger(RDFDataMgr.class) ;
     private static String riotBase = "http://jena.apache.org/riot/"; ;
     
-//    private static String dataStreamManagerSymbolStr = 
riotBase+"dataStreamManager" ; 
-//    public static Symbol dataStreamManagerSymbol = 
Symbol.create(dataStreamManagerSymbolStr) ;
-//    
-//    private static String StreamManagerSymbolStr = riotBase+"streamManager" ;
-//    /** @deprecated Use  {@linkplain #dataStreamManagerSymbol} */
-//    @Deprecated
-//    public static Symbol streamManagerSymbolOld = 
Symbol.create(riotBase+"streamManager") ;
-    
-      private static String StreamManagerSymbolStr = riotBase+"streamManager" ;
-      public static Symbol streamManagerSymbol = 
Symbol.create(riotBase+"streamManager") ;
+       private static String StreamManagerSymbolStr = riotBase+"streamManager" 
;
+       public static Symbol streamManagerSymbol = 
Symbol.create(riotBase+"streamManager") ;
 
     /** Read triples into a Model from the given location. 
      *  The syntax is detemined from input source URI (content negotiation or 
extension). 
@@ -326,8 +319,6 @@ public class RDFDataMgr
     private static DatasetGraph createDatasetGraph() { return 
DatasetGraphFactory.createMem() ; }
     
     // Load:
-    // Macros would be nice.
-
     /** Create a memory Model and read in some data
      * @see #read(Model,String) 
      */ 
@@ -885,33 +876,51 @@ public class RDFDataMgr
         return in ;
     }
     
-    // ----- 
-    // Readers are algorithms and must be stateless (or they must create a per 
run
-    // instance of something) because they may be called concurrency from 
different threads.
-    // The Context Readerobject gives the per-run configuration.  
-    
-    // Alternative: A two step factory-instance design means
-    // readers can be created and passed around (e,.g. to set specific 
features)
-    // We could have had two step design - ReaderFactory-ReaderInstance
-    // no - put the bruden on complicated readers, not everyone. 
-    
-    private static void process(StreamRDF destination, TypedInputStream in, 
String baseUri, Lang hintLang, Context context)
-    {
-        ContentType ct = WebContent.determineCT(baseUri, in.getContentType(), 
hintLang) ;
+    // -----
+    // Readers are algorithms and must be stateless (or they must create a per
+    // run instance of something) because they may be called concurrency from
+    // different threads. The Context Reader object gives the per-run
+    // configuration.
+
+    private static void process(StreamRDF destination, TypedInputStream in, 
String baseUri, Lang lang, Context context)
+    {
+        // Issue is whether lang overrides all.
+        // Not in the case of remote conneg, no file extension, when lang is 
default. 
+//        // ---- NEW
+//        if ( lang != null ) {
+//            ReaderRIOT reader = createReader(lang) ;
+//            if ( reader == null )
+//                throw new RiotException("No parser registered for language: 
"+lang.getLabel()) ;
+//            reader.read(in, baseUri, lang.getContentType(), destination, 
context) ;
+//            return ;
+//        }
+//        // ---- NEW
+        
+        ContentType ct = WebContent.determineCT(in.getContentType(), lang, 
baseUri) ;
         if ( ct == null )
-            throw new RiotException("Failed to determine the content type: 
(URI="+baseUri+" : stream="+in.getContentType()+" : hint="+hintLang+")") ;
+            throw new RiotException("Failed to determine the content type: 
(URI="+baseUri+" : stream="+in.getContentType()+")") ;
 
         ReaderRIOT reader = getReader(ct) ;
         if ( reader == null )
             throw new RiotException("No parser registered for content type: 
"+ct.getContentType()) ;
         reader.read(in, baseUri, ct, destination, context) ;
     }
-
+    
     // java.io.Readers are NOT preferred.
     private static void process(StreamRDF destination, Reader in, String 
baseUri, Lang lang, Context context )
     {
+//        // ---- NEW
+//        if ( lang != null ) {
+//            ReaderRIOT reader = createReader(lang) ;
+//            if ( reader == null )
+//                throw new RiotException("No parser registered for language: 
"+lang.getLabel()) ;
+//            reader.read(in, baseUri, lang.getContentType(), destination, 
context) ;
+//            return ;
+//        }
+//        // ---- NEW
+
         // Not as good as from an InputStream 
-        ContentType ct = WebContent.determineCT(baseUri, null, lang) ;
+        ContentType ct = WebContent.determineCT(null, lang, baseUri) ;
         if ( ct == null )
             throw new RiotException("Failed to determine the content type: 
(URI="+baseUri+" : hint="+lang+")") ;
         ReaderRIOT reader = getReader(ct) ;
@@ -920,6 +929,38 @@ public class RDFDataMgr
         reader.read(in, baseUri, ct, destination, context) ;
     }
 
+//    ///---- NEW / rewrite
+//    // Lang is definitive.  needs further consideration
+//    private static void process2(StreamRDF destination, TypedInputStream in, 
String uri, Lang givenLang, Context context)
+//    {
+//        Pair<Lang, ContentType> p = selectLang(in.getMediaType(), uri, 
givenLang, context) ;
+//        Lang lang = p.getLeft() ;
+//        ContentType ct = p.getRight() ;
+//
+//        if ( lang == null )
+//            throw new RiotException("Syntax not identified (URI="+uri+" : 
stream="+in.getContentType()+")") ;
+//
+//        ReaderRIOT reader = createReader(lang) ;
+//        if ( reader == null )
+//            throw new RiotException("No parser registered for lang: 
"+lang.getLabel()) ;
+//        reader.read(in, uri, ct, destination, context) ;
+//    }
+//
+//    private static Pair<Lang, ContentType> selectLang(ContentType ct, String 
uri, Lang lang, Context context) {
+//        if ( lang != null )
+//            return Pair.create(lang, lang.getContentType()) ;
+//
+//        Lang ctLang = RDFLanguages.contentTypeToLang(ct) ;
+//        if ( ctLang != null )
+//            return Pair.create(ctLang, ct) ;
+//
+//        Lang filenameLang = RDFLanguages.filenameToLang(uri) ;
+//        if ( filenameLang != null )
+//            return Pair.create(filenameLang, filenameLang.getContentType()) ;
+//        return null ;
+//    }
+//    ///---- NEW
+
     /** 
      * @see RDFLanguages#shortnameToLang  to go from Jena short name to 
{@linkplain Lang}
      * @see RDFLanguages#contentTypeToLang to go from content type to 
{@linkplain Lang}
@@ -947,7 +988,7 @@ public class RDFDataMgr
 
     /** Determine the Lang, given the URI target, any content type header 
string and a hint */ 
     public static Lang determineLang(String target, String ctStr, Lang 
hintLang) {
-        ContentType ct = WebContent.determineCT(target, ctStr, hintLang) ;
+        ContentType ct = WebContent.determineCT(ctStr, hintLang, target) ;
         if ( ct == null )
             return hintLang ;
         Lang lang = RDFLanguages.contentTypeToLang(ct) ;
@@ -1226,7 +1267,7 @@ public class RDFDataMgr
         RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang) 
;
         return createGraphWriter$(serialization) ;    
     }
-    
+
     /** Create a writer for an RDF language
      * @param serialization Serialization format
      * @return WriterGraphRIOT

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java 
b/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java
index ded6a79..0a18e0c 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java
@@ -129,7 +129,7 @@ public class ResultSetMgr {
     }
         
     private static ResultSet process(TypedInputStream in, String srcURI, Lang 
hintLang, Context context) {
-        ContentType ct = WebContent.determineCT(srcURI, in.getContentType(), 
hintLang) ;
+        ContentType ct = WebContent.determineCT(in.getContentType(), hintLang, 
srcURI) ;
         if ( ct == null )
             throw new RiotException("Failed to determine the content type: 
(URI="+srcURI+" : stream="+in.getContentType()+" : hint="+hintLang+")") ;
         ResultSetReader reader = getReader(ct) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/WebContent.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/WebContent.java 
b/jena-arq/src/main/java/org/apache/jena/riot/WebContent.java
index 6e49ef5..fd5875f 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/WebContent.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/WebContent.java
@@ -214,18 +214,35 @@ public class WebContent
         return 
contentTypeMultipartFormData.equalsIgnoreCase(ct.getContentType()) ;
     }
 
-    /** Determine the content type to be used, given the target URL, the 
content-type from
+    /**
+     * <p> 
+     *  Determine the content type to be used, given the target URL, the 
content-type from
      *  Content Negotiation and a hint language.  This is a pragmatic balance.
-     *  A content-type of "text/plain" is ignored - it is too often wrong.  
+     *  A content-type of "text/plain" is ignored - it is too often wrong.
+     *  </p><p>
+     *  The decision is 
+     *  <blockquote>
+     *  <i>Content type</i> (but not text/plain) > <i>hint</i> > <i>file 
extension</i>.
+     *  </blockquote>
+     *  We make content type (via content negotiation) strongest because a 
server
+     *  may return something unexpected because that is all it can do. We are
+     *  assuming servers don't lie. The "hint" is really a hint just for file 
extenion override.
+     *  </p><p>
+     *  In the case of no file extension, this reduces to the hint being
+     *  the default choice if conneg does not produce anything useful.  
+     *  </p>
+     *   
+     * @param contentTypeStr     Content-Type string
+     * @param hintLang  Default language
+     * @param target    The URL of the target (file extension may be used)
+     *  
+     * @return ContentType or null
      */
-    public static ContentType determineCT(String target, String ctStr, Lang 
hintLang) {
-        boolean isTextPlain = contentTypeTextPlain.equals(ctStr) ;
+    public static ContentType determineCT(String contentTypeStr, Lang 
hintLang, String target) {
+        boolean isTextPlain = contentTypeTextPlain.equals(contentTypeStr) ;
     
-        if ( ctStr != null  )
-            ctStr = contentTypeCanonical(ctStr) ;
-    
-        // The decision is:
-        // Content type (but not text/plain) > hint > file extension.
+        if ( contentTypeStr != null  )
+            contentTypeStr = contentTypeCanonical(contentTypeStr) ;
     
         // If it's text plain, we ignore it because a lot of naive
         // server setups return text/plain for any file type.
@@ -234,7 +251,7 @@ public class WebContent
         ContentType ct = null ;
         if ( ! isTextPlain )
             // Not guaranteed to be registered as a language here.
-            ct = (ctStr==null) ? null : ContentType.create(ctStr) ;
+            ct = (contentTypeStr==null) ? null : 
ContentType.create(contentTypeStr) ;
         
         if ( ct == null && hintLang != null ) 
             ct = hintLang.getContentType() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/system/StreamOps.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/StreamOps.java 
b/jena-arq/src/main/java/org/apache/jena/riot/system/StreamOps.java
index 4ad7fd1..fff48c5 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/StreamOps.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/StreamOps.java
@@ -81,7 +81,7 @@ public class StreamOps {
     }
 
     //        
-//    /** Send a dataset to a StreamRDF as triples and quads, using the 
xpelcitily given prefix map */
+//    /** Send a dataset to a StreamRDF as triples and quads, using the 
explicitly given prefix map */
 //    public static void datasetToStream(DatasetGraph datasetGraph, StreamRDF 
stream, PrefixMap prefixMap) {
 //        
 //    }

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterBlocks.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterBlocks.java 
b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterBlocks.java
index fbe1308..a2740fb 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterBlocks.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterBlocks.java
@@ -20,6 +20,7 @@ package org.apache.jena.riot.writer;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.StreamOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
@@ -30,10 +31,12 @@ import com.hp.hpl.jena.sparql.core.DatasetGraph ;
 public class TriGWriterBlocks extends TriGWriterBase
 {
     @Override
-    protected void output(IndentedWriter iOut, DatasetGraph dsg, PrefixMap 
prefixMap, String baseURI)
-    {
+    protected void output(IndentedWriter iOut, DatasetGraph dsg, PrefixMap 
prefixMap, String baseURI) {
         StreamRDF dest = new WriterStreamRDFBlocks(iOut) ;
-        WriterStream.write(dest, dsg, prefixMap, baseURI) ;
+        dest.start() ;
+        dest.base(baseURI) ;
+        StreamOps.sendDatasetToStream(dsg, dest, prefixMap) ;
+        dest.finish() ;
     }
 }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterFlat.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterFlat.java 
b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterFlat.java
index 54ef31d..66ea06c 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterFlat.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterFlat.java
@@ -20,6 +20,7 @@ package org.apache.jena.riot.writer;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.StreamOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
@@ -31,9 +32,11 @@ import com.hp.hpl.jena.sparql.core.DatasetGraph ;
 public class TriGWriterFlat extends TriGWriterBase
 {
     @Override
-    protected void output(IndentedWriter iOut, DatasetGraph datasetGraph, 
PrefixMap prefixMap, String baseURI)
-    {
+    protected void output(IndentedWriter iOut, DatasetGraph datasetGraph, 
PrefixMap prefixMap, String baseURI) {
         StreamRDF dest = new WriterStreamRDFFlat(iOut) ;
-        WriterStream.write(dest, datasetGraph, prefixMap, baseURI) ;
+        dest.start() ;
+        dest.base(baseURI) ;
+        StreamOps.sendDatasetToStream(datasetGraph, dest, prefixMap) ;
+        dest.finish() ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterBlocks.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterBlocks.java 
b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterBlocks.java
index 5013dc8..90bc962 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterBlocks.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterBlocks.java
@@ -20,6 +20,7 @@ package org.apache.jena.riot.writer;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.StreamOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 
 import com.hp.hpl.jena.graph.Graph ;
@@ -30,10 +31,12 @@ import com.hp.hpl.jena.graph.Graph ;
 public class TurtleWriterBlocks extends TurtleWriterBase
 {
     @Override
-    protected void output(IndentedWriter out, Graph graph, PrefixMap 
prefixMap, String baseURI)
-    {
+    protected void output(IndentedWriter out, Graph graph, PrefixMap 
prefixMap, String baseURI) {
         StreamRDF dest = new WriterStreamRDFBlocks(out) ;
-        WriterStream.write(dest, graph, prefixMap, baseURI) ;
+        dest.start() ;
+        dest.base(baseURI) ;
+        StreamOps.sendGraphToStream(graph, dest, prefixMap) ;
+        dest.finish() ;
     }
 }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterFlat.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterFlat.java 
b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterFlat.java
index 6bf4704..9770b04 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterFlat.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterFlat.java
@@ -20,6 +20,7 @@ package org.apache.jena.riot.writer;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.StreamOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 
 import com.hp.hpl.jena.graph.Graph ;
@@ -28,9 +29,11 @@ import com.hp.hpl.jena.graph.Graph ;
 public class TurtleWriterFlat extends TurtleWriterBase
 {
     @Override
-    protected void output(IndentedWriter out, Graph graph, PrefixMap 
prefixMap, String baseURI)
-    {
+    protected void output(IndentedWriter out, Graph graph, PrefixMap 
prefixMap, String baseURI) {
         StreamRDF dest = new WriterStreamRDFFlat(out) ;
-        WriterStream.write(dest, graph, prefixMap, baseURI) ;
+        dest.start() ;
+        dest.base(baseURI) ;
+        StreamOps.sendGraphToStream(graph, dest, prefixMap) ;
+        dest.finish() ;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStream.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStream.java 
b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStream.java
deleted file mode 100644
index f794f91..0000000
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStream.java
+++ /dev/null
@@ -1,76 +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.jena.riot.writer;
-
-import java.util.Iterator ;
-import java.util.Map.Entry ;
-
-import org.apache.jena.riot.system.PrefixMap ;
-import org.apache.jena.riot.system.StreamOps ;
-import org.apache.jena.riot.system.StreamRDF ;
-
-import com.hp.hpl.jena.graph.Graph ;
-import com.hp.hpl.jena.graph.Triple ;
-import com.hp.hpl.jena.sparql.core.DatasetGraph ;
-import com.hp.hpl.jena.sparql.core.Quad ;
-
-/** Library class with helpers for writing streams of RDF (as {@linkplain 
StreamRDF}) */ 
-public class WriterStream
-{
-    // In development.
-    // This is really utilities for StreamRDF and should go into StreamRDFLib.
-    // It's the nature of the StreamRDF that does the writing. 
-    private WriterStream() {}
-    
-    protected static void finish(StreamRDF dest)
-    { dest.finish() ; }
-
-    protected static void start(StreamRDF dest)
-    { dest.start() ; }
-
-    protected static void writePrefixes(StreamRDF dest, PrefixMap prefixMap)
-    {
-        if ( prefixMap != null )
-        {
-            for ( Entry<String, String> e : 
prefixMap.getMappingCopyStr().entrySet())
-                dest.prefix(e.getKey(), e.getValue()) ;
-        }
-    }
-
-    protected static void write(StreamRDF dest, DatasetGraph datasetGraph, 
PrefixMap prefixes, String baseURI) 
-    {
-        start(dest) ;
-        dest.base(baseURI) ;
-        writePrefixes(dest, prefixes) ;
-        Iterator<Quad> iter = datasetGraph.find(null, null, null, null) ;
-        StreamOps.sendQuadsToStream(iter, dest) ;
-        finish(dest) ;
-    }
-
-    protected static void write(StreamRDF dest, Graph graph, PrefixMap 
prefixes, String baseURI) 
-    {
-        start(dest) ;
-        dest.base(baseURI) ;
-        writePrefixes(dest, prefixes) ;
-        Iterator<Triple> iter = graph.find(null, null, null) ;
-        StreamOps.sendTriplesToStream(iter, dest) ;
-        finish(dest) ;
-    }
-}
-

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java
 
b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java
index 9667b62..e271557 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java
@@ -33,6 +33,8 @@ import com.hp.hpl.jena.sparql.core.Quad ;
 /** Convert the incoming print stream into batches. */
 abstract class WriterStreamRDFBatched extends WriterStreamRDFBase
 {
+    // This has nothing to do with printing except it's under 
WriterStreamRDFBase
+    // so the operation is "print"
     private Node         currentSubject ;
     private Node         currentGraph ;
     private List<Triple> batchTriples ;
@@ -53,39 +55,38 @@ abstract class WriterStreamRDFBatched extends 
WriterStreamRDFBase
     @Override
     protected final void endData()      { flush() ; }
 
-    private void flush()
-    {
-        finishBatchTriple(currentSubject) ;
+    private void flush() {
+        finishBatchTriples(currentSubject) ;
         finishBatchQuad(currentGraph, currentSubject) ;
         finalizeRun() ;
     }
-    
+
     @Override
-    protected final void reset()
-    {
-        currentSubject  = null ;
-        currentGraph    = null ;
-        batchTriples    = null ;
-        batchQuads      = null ;
+    protected final void reset() {
+        currentSubject = null ;
+        currentGraph = null ;
+        batchTriples = null ;
+        batchQuads = null ;
     }
 
     @Override
-    protected final void print(Quad quad)
-    {
-        if ( false )
-        {
+    protected final void print(Quad quad) {
+        if ( false ) {
             // Merge to a triple stream.
             triple(quad.asTriple()) ;
             return ;
         }
-        
+
         Node g = quad.getGraph() ;
         Node s = quad.getSubject() ;
-        
-        if ( ! Lib.equal(g, currentGraph) || ! Lib.equal(s,  currentSubject) )
-        {
-            if ( currentSubject != null )
-                finishBatchQuad(currentGraph, currentSubject) ;
+
+        if ( !Lib.equal(g, currentGraph) || !Lib.equal(s, currentSubject) ) {
+            if ( currentSubject != null ) {
+                if ( currentGraph == null )
+                    finishBatchTriples(currentSubject) ;
+                else
+                    finishBatchQuad(currentGraph, currentSubject) ;
+            }
             startBatchQuad(g, s) ;
             currentGraph = g ;
             currentSubject = s ;
@@ -94,13 +95,11 @@ abstract class WriterStreamRDFBatched extends 
WriterStreamRDFBase
     }
 
     @Override
-    protected final void print(Triple triple)
-    {
+    protected final void print(Triple triple) {
         Node s = triple.getSubject() ;
-        if ( ! Lib.equal(s, currentSubject) )
-        {
+        if ( !Lib.equal(s, currentSubject) ) {
             if ( currentSubject != null )
-                finishBatchTriple(currentSubject) ;
+                finishBatchTriples(currentSubject) ;
             startBatchTriple(s) ;
 
             currentGraph = null ;
@@ -108,40 +107,34 @@ abstract class WriterStreamRDFBatched extends 
WriterStreamRDFBase
         }
         processTriple(triple) ;
     }
-    
-    private void startBatchTriple(Node subject)
-    {
+
+    private void startBatchTriple(Node subject) {
         batchTriples = new ArrayList<>() ;
     }
-    
-    private void processTriple(Triple triple)
-    {
+
+    private void processTriple(Triple triple) {
         batchTriples.add(triple) ;
     }
 
-    private void finishBatchTriple(Node subject)
-    {
+    private void finishBatchTriples(Node subject) {
         if ( batchTriples != null && batchTriples.size() > 0 ) {
             printBatchTriples(currentSubject, batchTriples) ;
             batchTriples.clear() ;
         }
     }
 
-    private void startBatchQuad(Node graph, Node subject)
-    {
+    private void startBatchQuad(Node graph, Node subject) {
         batchQuads = new ArrayList<>() ;
     }
-    
-    private void processQuad(Quad Quad)
-    {
+
+    private void processQuad(Quad Quad) {
         batchQuads.add(Quad) ;
     }
 
-    private void finishBatchQuad(Node graph, Node subject)
-    {
+    private void finishBatchQuad(Node graph, Node subject) {
         if ( batchQuads != null && batchQuads.size() > 0 ) {
             printBatchQuads(currentGraph, currentSubject, batchQuads) ;
-            batchQuads.clear();
+            batchQuads.clear() ;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/4491980b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java 
b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java
index 4513848..23819ea 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java
@@ -70,69 +70,59 @@ public class WriterStreamRDFBlocks extends 
WriterStreamRDFBatched
     protected boolean firstGraph        = true ;
     protected int currentGraphIndent    = 0;
 
-    public WriterStreamRDFBlocks(OutputStream output)
-    { 
+    public WriterStreamRDFBlocks(OutputStream output) {
         super(output) ;
     }
-    
-    public WriterStreamRDFBlocks(Writer output)
-    {
+
+    public WriterStreamRDFBlocks(Writer output) {
         super(output) ;
     }
 
-    public WriterStreamRDFBlocks(IndentedWriter output)
-    {
+    public WriterStreamRDFBlocks(IndentedWriter output) {
         super(output) ;
     }
-    
+
     @Override
-    protected void printBatchQuads(Node g, Node s, List<Quad> quads)
-    {
+    protected void printBatchQuads(Node g, Node s, List<Quad> quads) {
         if ( g == null )
             g = Quad.defaultGraphNodeGenerated ;
-        if ( Lib.equal(g,  lastGraph ))
-        {
+        if ( Lib.equal(g, lastGraph) ) {
             // Same graph, different subject.
             out.println(" .") ;
             out.println() ;
-        }
-        else
-        {
+        } else {
             // Start graph
             endGraph(g) ;
             startGraph(g) ;
             lastGraph = g ;
         }
-        List<Triple> triples = GLib.quads2triples(quads.iterator()).toList();
+        List<Triple> triples = GLib.quads2triples(quads.iterator()).toList() ;
         printBatch(s, triples) ;
         // No trailing "." has been printed.
         lastSubject = s ;
     }
 
-    private void gap(int gap)
-    {
+    private void gap(int gap) {
         out.print(' ', gap) ;
     }
 
     @Override
-    protected void printBatchTriples(Node s, List<Triple> triples)
-    {
+    protected void printBatchTriples(Node s, List<Triple> triples) {
         // Blank line?
         // Not if not prefixes and first batch.
         if ( out.getRow() > 1 )
             out.println() ;
-        
+
         printBatch(s, triples) ;
         // End of cluster.
         out.print(" .") ;
-        out.println() ; 
+        out.println() ;
     }
         
-    private void printBatch(Node s, List<Triple> triples)
-    {
+    private void printBatch(Node s, List<Triple> triples) {
         outputNode(s) ;
         if ( out.getCol() > LONG_SUBJECT )
-            out.println() ; 
+            out.println() ;
         else
             gap(GAP_S_P) ;
         out.incIndent(INDENT_PREDICATE) ;
@@ -141,18 +131,16 @@ public class WriterStreamRDFBlocks extends 
WriterStreamRDFBatched
         out.decIndent(INDENT_PREDICATE) ;
     }
         
-    private void writePredicateObjectList(Collection<Triple> triples)
-    {
+    private void writePredicateObjectList(Collection<Triple> triples) {
         // Find width
         int predicateMaxWidth = RiotLib.calcWidthTriples(pMap, baseURI, 
triples, MIN_PREDICATE, LONG_PREDICATE) ;
         boolean first = true ;
-        for ( Triple triple : triples )
-        {
-            if ( ! first )
+        for ( Triple triple : triples ) {
+            if ( !first )
                 out.println(" ;") ;
             else
                 first = false ;
-                
+
             Node p = triple.getPredicate() ;
             outputNode(p) ;
             out.pad(predicateMaxWidth) ;
@@ -163,8 +151,7 @@ public class WriterStreamRDFBlocks extends 
WriterStreamRDFBatched
     }
 
     @Override
-    protected void finalizeRun()
-    {
+    protected void finalizeRun() {
         if ( lastGraph != null )
             // last was a quad
             endGraph(null) ;
@@ -173,34 +160,30 @@ public class WriterStreamRDFBlocks extends 
WriterStreamRDFBatched
     protected boolean dftGraph()        { return lastGraph == 
Quad.defaultGraphNodeGenerated ; }
     protected boolean dftGraph(Node g)  { return g == 
Quad.defaultGraphNodeGenerated ; }
 
-    protected void startGraph(Node g)
-    {
+    protected void startGraph(Node g) {
         // Start graph
-        if ( lastGraph == null )
-        {
-            boolean NL_START =  ( dftGraph(g) ? NL_GDFT_START : NL_GNMD_START 
) ; 
-    
-            if ( ! firstGraph )
+        if ( lastGraph == null ) {
+            boolean NL_START = (dftGraph(g) ? NL_GDFT_START : NL_GNMD_START) ;
+
+            if ( !firstGraph )
                 out.println() ;
             firstGraph = false ;
-            
+
             lastSubject = null ;
-            if ( ! dftGraph(g) )
-            {
+            if ( !dftGraph(g) ) {
                 outputNode(g) ;
                 out.print(" ") ;
             }
-                
+
             if ( NL_START )
                 out.println("{") ;
             else
                 out.print("{ ") ;
-                
+
             if ( dftGraph() )
                 setGraphIndent(INDENT_GDFT) ;
-            else
-            {
-                int x = NL_START ? INDENT_GNMD : out.getCol() ; 
+            else {
+                int x = NL_START ? INDENT_GNMD : out.getCol() ;
                 setGraphIndent(x) ;
             }
             out.incIndent(graphIndent()) ;
@@ -208,15 +191,13 @@ public class WriterStreamRDFBlocks extends 
WriterStreamRDFBatched
         lastGraph = g ;
     }
 
-    protected void endGraph(Node g)
-    {
+    protected void endGraph(Node g) {
         if ( lastGraph == null )
             return ;
-            
+
         // End of graph
-        if ( ! equal(lastGraph, g) )
-        {
-            boolean NL_END =  ( dftGraph(g) ? NL_GDFT_END : NL_GNMD_END ) ; 
+        if ( !equal(lastGraph, g) ) {
+            boolean NL_END = (dftGraph(g) ? NL_GDFT_END : NL_GNMD_END) ;
 
             if ( lastSubject != null )
                 out.print(" .") ;

Reply via email to