You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2014/08/09 17:31:14 UTC
svn commit: r1616969 - in /jena/trunk/jena-arq/src:
main/java/com/hp/hpl/jena/sparql/resultset/ main/java/org/apache/jena/riot/
main/java/org/apache/jena/riot/resultset/ test/java/org/apache/jena/riot/
test/java/org/apache/jena/riot/resultset/
Author: andy
Date: Sat Aug 9 15:31:14 2014
New Revision: 1616969
URL: http://svn.apache.org/r1616969
Log:
JENA-762 : InputStreams and OutputStreams.
Added:
jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java
- copied, changed from r1616868, jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetMgr.java
Removed:
jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetMgr.java
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/XMLInput.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/XMLInputSAX.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/XMLInputStAX.java
jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/WebContent.java
jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java
jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetReaderRegistry.java
jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetWriterRegistry.java
jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TestSyntaxDetermination.java
jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/resultset/TestResultSetIO.java
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/XMLInput.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/XMLInput.java?rev=1616969&r1=1616968&r2=1616969&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/XMLInput.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/XMLInput.java Sat Aug 9 15:31:14 2014
@@ -19,6 +19,7 @@
package com.hp.hpl.jena.sparql.resultset;
import java.io.InputStream ;
+import java.io.Reader ;
import com.hp.hpl.jena.query.ResultSet ;
import com.hp.hpl.jena.rdf.model.Model ;
@@ -38,6 +39,17 @@ public class XMLInput
return make(in, model).getResultSet() ;
}
+ public static ResultSet fromXML(Reader in)
+ {
+ return fromXML(in, null) ;
+ }
+
+ public static ResultSet fromXML(Reader in, Model model)
+ {
+ return make(in, model).getResultSet() ;
+ }
+
+
public static ResultSet fromXML(String str)
{
return fromXML(str, null) ;
@@ -68,6 +80,16 @@ public class XMLInput
return new XMLInputSAX(in, model) ;
return new XMLInputStAX(in, model) ;
}
+
+ public static SPARQLResult make(Reader in) { return make(in, null) ; }
+
+ public static SPARQLResult make(Reader in, Model model)
+ {
+ if ( SystemARQ.UseSAX )
+ return new XMLInputSAX(in, model) ;
+ return new XMLInputStAX(in, model) ;
+ }
+
public static SPARQLResult make(String str) { return make(str, null) ; }
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/XMLInputSAX.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/XMLInputSAX.java?rev=1616969&r1=1616968&r2=1616969&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/XMLInputSAX.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/XMLInputSAX.java Sat Aug 9 15:31:14 2014
@@ -20,6 +20,7 @@ package com.hp.hpl.jena.sparql.resultset
import java.io.IOException ;
import java.io.InputStream ;
+import java.io.Reader ;
import java.util.ArrayList ;
import java.util.List ;
@@ -56,6 +57,10 @@ class XMLInputSAX extends SPARQLResult {
worker(new InputSource(in), model) ;
}
+ public XMLInputSAX(Reader in, Model model) {
+ worker(new InputSource(in), model) ;
+ }
+
public XMLInputSAX(String str, Model model) {
worker(new InputSource(str), model) ;
}
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/XMLInputStAX.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/XMLInputStAX.java?rev=1616969&r1=1616968&r2=1616969&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/XMLInputStAX.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/XMLInputStAX.java Sat Aug 9 15:31:14 2014
@@ -111,6 +111,18 @@ class XMLInputStAX extends SPARQLResult
}
}
+ public XMLInputStAX(Reader in, Model model) {
+ XMLInputFactory xf = XMLInputFactory.newInstance() ;
+ try {
+ XMLStreamReader xReader = xf.createXMLStreamReader(in) ;
+ worker(xReader, model) ;
+ } catch (XMLStreamException e) {
+ throw new ResultSetException("Can't initialize StAX parsing engine", e) ;
+ } catch (Exception ex) {
+ throw new ResultSetException("Failed when initializing the StAX parsing engine", ex) ;
+ }
+ }
+
public XMLInputStAX(String str) {
this(str, null) ;
}
Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java?rev=1616969&r1=1616968&r2=1616969&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java Sat Aug 9 15:31:14 2014
@@ -849,7 +849,7 @@ public class RDFDataMgr
private static void process(StreamRDF destination, TypedInputStream in, String baseUri, Lang hintLang, Context context)
{
- ContentType ct = determineCT(baseUri, in.getContentType(), hintLang) ;
+ ContentType ct = WebContent.determineCT(baseUri, in.getContentType(), hintLang) ;
if ( ct == null )
throw new RiotException("Failed to determine the content type: (URI="+baseUri+" : stream="+in.getContentType()+" : hint="+hintLang+")") ;
@@ -863,7 +863,7 @@ public class RDFDataMgr
private static void process(StreamRDF destination, Reader in, String baseUri, Lang lang, Context context )
{
// Not as good as from an InputStream
- ContentType ct = determineCT(baseUri, null, lang) ;
+ ContentType ct = WebContent.determineCT(baseUri, null, lang) ;
if ( ct == null )
throw new RiotException("Failed to determine the content type: (URI="+baseUri+" : hint="+lang+")") ;
ReaderRIOT reader = getReader(ct) ;
@@ -899,7 +899,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 = determineCT(target, ctStr, hintLang) ;
+ ContentType ct = WebContent.determineCT(target, ctStr, hintLang) ;
if ( ct == null )
return hintLang ;
Lang lang = RDFLanguages.contentTypeToLang(ct) ;
@@ -908,38 +908,6 @@ public class RDFDataMgr
return lang ;
}
- /** 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.
- */
- /*package*/ static ContentType determineCT(String target, String ctStr, Lang hintLang)
- {
- boolean isTextPlain = WebContent.contentTypeTextPlain.equals(ctStr) ;
-
- if ( ctStr != null )
- ctStr = WebContent.contentTypeCanonical(ctStr) ;
-
- // The decision is:
- // Content type (but not text/plain) > hint > file extension.
-
- // If it's text plain, we ignore it because a lot of naive
- // server setups return text/plain for any file type.
- // (It was never registered as being N-triples;
- // that was only for RDF 2004 testing.)
- ContentType ct = null ;
- if ( ! isTextPlain )
- // Not guaranteed to be registered as a language here.
- ct = (ctStr==null) ? null : ContentType.create(ctStr) ;
-
- if ( ct == null && hintLang != null )
- ct = hintLang.getContentType() ;
-
- if ( ct == null )
- ct = RDFLanguages.guessContentType(target) ;
-
- return ct ;
- }
-
// -------- WRITERS
/** Write the model to the output stream in the default serialization for the language.
Copied: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java (from r1616868, jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetMgr.java)
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java?p2=jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java&p1=jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetMgr.java&r1=1616868&r2=1616969&rev=1616969&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetMgr.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java Sat Aug 9 15:31:14 2014
@@ -16,34 +16,31 @@
* limitations under the License.
*/
-package org.apache.jena.riot.resultset;
+package org.apache.jena.riot;
-import java.io.InputStream ;
-import java.io.OutputStream ;
+import java.io.* ;
+import org.apache.jena.atlas.web.ContentType ;
import org.apache.jena.atlas.web.TypedInputStream ;
-import org.apache.jena.riot.Lang ;
-import org.apache.jena.riot.RDFDataMgr ;
-import org.apache.jena.riot.RDFLanguages ;
-import org.apache.jena.riot.RiotException ;
+import org.apache.jena.riot.resultset.* ;
import com.hp.hpl.jena.query.ARQ ;
import com.hp.hpl.jena.query.ResultSet ;
import com.hp.hpl.jena.query.ResultSetFactory ;
+import com.hp.hpl.jena.query.ResultSetFormatter ;
import com.hp.hpl.jena.sparql.util.Context ;
/**
- * Reading and writing of Result Sets
+ * Reading and writing of Result Sets.
+ * {@linkplain ResultSetFormatter} provides output to text.
+ * @see ResultSetFactory
+ * @see ResultSetFormatter
*/
public class ResultSetMgr {
static {
-
- ResultSetReaderRegistry.init() ;
- ResultSetWriterRegistry.init() ;
+ ResultSetLang.init() ;
}
- // Register with RDFLanguages.
-
/**
* Read from an {@code InputStream} and produce a {@linkplain ResultSet};
* the stream is expect to use syntax {@code lang}. Note that returned
@@ -56,21 +53,63 @@ public class ResultSetMgr {
* @return ResultSet
*/
public static ResultSet read(InputStream in, Lang lang) {
- ResultSetReaderFactory f = ResultSetReaderRegistry.lookup(lang) ;
- if ( f == null )
- throw new RiotException("No result set reader for "+lang) ;
- ResultSetReader rsr = f.create(lang) ;
- return rsr.read(in, ARQ.getContext()) ;
+ return process(new TypedInputStream(in), null, lang, null) ;
}
+ /** Read a result set from the URI */
public static ResultSet read(String uri) {
return read(uri, null) ;
}
+ /** Read a result set from the URI, in the speficied syntax */
public static ResultSet read(String uri, Lang lang) {
return parse(uri, lang, null) ;
}
+ /**
+ * Read from an {@code Reader} and produce a {@linkplain ResultSet};
+ * the stream is expect to use syntax {@code lang}.
+ * Using InputStreams is better to ensure the character set
+ * of the input matches that of the syntax.
+ * Note that returned
+ * result set may stream and so the input stream be read while the ResultSet is used.
+ * See {@linkplain ResultSetFactory#copyResults(ResultSet)}
+ * for a ResultSet that is detached from the {@code InputStream}.
+ *
+ * @param in
+ * @param lang
+ * @return ResultSet
+ */
+ @Deprecated
+ public static ResultSet read(Reader in, Lang lang) {
+ ResultSetReaderFactory f = ResultSetReaderRegistry.getFactory(lang) ;
+ if ( f == null )
+ throw new RiotException("No result set reader for "+lang) ;
+ ResultSetReader rsr = f.create(lang) ;
+ return rsr.read(in, ARQ.getContext()) ;
+ }
+
+
+ /**
+ * Read from an {@code StringReader} and produce a {@linkplain ResultSet};
+ * the stream is expect to use syntax {@code lang}.
+ * Note that returned
+ * result set may stream and so the input stream be read while the ResultSet is used.
+ * See {@linkplain ResultSetFactory#copyResults(ResultSet)}
+ * for a ResultSet that is detached from the {@code InputStream}.
+ *
+ * @param in
+ * @param lang
+ * @return ResultSet
+ */
+ public static ResultSet read(StringReader in, Lang lang) {
+ ResultSetReaderFactory f = ResultSetReaderRegistry.getFactory(lang) ;
+ if ( f == null )
+ throw new RiotException("No result set reader for "+lang) ;
+ ResultSetReader rsr = f.create(lang) ;
+ return rsr.read(in, ARQ.getContext()) ;
+ }
+
/** Read ResultSet.
* @param uri URI to read from (includes file: and a plain file name).
* @param hintLang Hint for the syntax
@@ -78,6 +117,7 @@ public class ResultSetMgr {
*/
public static ResultSet parse(String uri, Lang hintLang, Context context)
{
+ // Conneg
if ( uri == null )
throw new IllegalArgumentException("URI to read from is null") ;
if ( hintLang == null )
@@ -85,24 +125,70 @@ public class ResultSetMgr {
TypedInputStream in = RDFDataMgr.open(uri, context) ;
if ( in == null )
throw new RiotException("Not found: "+uri) ;
- //ct -> lang
- return process(in, hintLang) ;
+ return process(in, uri, hintLang, context) ;
+ }
+
+ private static ResultSet process(TypedInputStream in, String srcURI, Lang hintLang, Context context) {
+ ContentType ct = WebContent.determineCT(srcURI, in.getContentType(), hintLang) ;
+ if ( ct == null )
+ throw new RiotException("Failed to determine the content type: (URI="+srcURI+" : stream="+in.getContentType()+" : hint="+hintLang+")") ;
+ ResultSetReader reader = getReader(ct) ;
+ if ( reader == null )
+ throw new RiotException("No parser registered for content type: "+ct.getContentType()) ;
+ return reader.read(in, context) ;
+ }
+
+ private static ResultSetReader getReader(ContentType ct)
+ {
+ Lang lang = RDFLanguages.contentTypeToLang(ct) ;
+ if ( lang == null )
+ return null ;
+ ResultSetReaderFactory r = ResultSetReaderRegistry.getFactory(lang) ;
+ if ( r == null )
+ return null ;
+ return r.create(lang) ;
}
- // Read from URL.
+
+ // -------------------------------
- private static ResultSet process(InputStream in, Lang lang) {
- ResultSetReaderFactory f = ResultSetReaderRegistry.lookup(lang) ;
+ /** Write a SPARQL result set to the output stream in the speciifcied language/syntax.
+ * @param out
+ * @param resultSet
+ * @param lang
+ */
+ public static void write(OutputStream out, ResultSet resultSet, Lang lang) {
+ ResultSetWriterFactory f = ResultSetWriterRegistry.lookup(lang) ;
if ( f == null )
- throw new RiotException("No result set reader for "+lang) ;
- ResultSetReader rsr = f.create(lang) ;
- return rsr.read(in, ARQ.getContext()) ;
+ throw new RiotException("No resultSet writer for "+lang) ;
+ f.create(lang).write(out, resultSet, null) ;
}
-
- // ----
- public static void write(OutputStream out, ResultSet resultSet, Lang lang) {
+ /** Write a SPARQL result set to the {@link java.io.Writer} in the speciifcied language/syntax.
+ * Using {@link OutputStream}s is better because the charcater encoding will match the
+ * requirements of the language.
+ * @param out
+ * @param resultSet
+ * @param lang
+ */
+ @Deprecated
+ public static void write(Writer out, ResultSet resultSet, Lang lang) {
ResultSetWriterFactory f = ResultSetWriterRegistry.lookup(lang) ;
+ if ( f == null )
+ throw new RiotException("No resultSet writer for "+lang) ;
f.create(lang).write(out, resultSet, null) ;
}
+
+ /** Write a SPARQL result set to the {@link java.io.Writer} in the speciifcied language/syntax.
+ * @param out
+ * @param resultSet
+ * @param lang
+ */
+ public static void write(StringWriter out, ResultSet resultSet, Lang lang) {
+ ResultSetWriterFactory f = ResultSetWriterRegistry.lookup(lang) ;
+ if ( f == null )
+ throw new RiotException("No resultSet writer for "+lang) ;
+ f.create(lang).write(out, resultSet, null) ;
+ }
+
}
Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/WebContent.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/WebContent.java?rev=1616969&r1=1616968&r2=1616969&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/WebContent.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/WebContent.java Sat Aug 9 15:31:14 2014
@@ -206,4 +206,35 @@ public class WebContent
public static boolean isMultiPartForm(ContentType ct) {
return contentTypeMultipartFormData.equalsIgnoreCase(ct.getContentType()) ;
}
+
+ /** 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.
+ */
+ public static ContentType determineCT(String target, String ctStr, Lang hintLang) {
+ boolean isTextPlain = contentTypeTextPlain.equals(ctStr) ;
+
+ if ( ctStr != null )
+ ctStr = contentTypeCanonical(ctStr) ;
+
+ // The decision is:
+ // Content type (but not text/plain) > hint > file extension.
+
+ // If it's text plain, we ignore it because a lot of naive
+ // server setups return text/plain for any file type.
+ // (It was never registered as being N-triples;
+ // that was only for RDF 2004 testing.)
+ ContentType ct = null ;
+ if ( ! isTextPlain )
+ // Not guaranteed to be registered as a language here.
+ ct = (ctStr==null) ? null : ContentType.create(ctStr) ;
+
+ if ( ct == null && hintLang != null )
+ ct = hintLang.getContentType() ;
+
+ if ( ct == null )
+ ct = RDFLanguages.guessContentType(target) ;
+
+ return ct ;
+ }
}
Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java?rev=1616969&r1=1616968&r2=1616969&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java Sat Aug 9 15:31:14 2014
@@ -57,11 +57,17 @@ public class ResultSetLang {
.addFileExtensions("txt")
.build() ;
+ private static boolean initialized = false ;
public static void init() {
+ if ( initialized )
+ return ;
+ initialized = true ;
RDFLanguages.register(SPARQLResultSetXML) ;
RDFLanguages.register(SPARQLResultSetJSON) ;
RDFLanguages.register(SPARQLResultSetCSV) ;
RDFLanguages.register(SPARQLResultSetTSV) ;
RDFLanguages.register(SPARQLResultSetThrift) ;
+ ResultSetReaderRegistry.init();
+ ResultSetWriterRegistry.init();
}
}
Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetReaderRegistry.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetReaderRegistry.java?rev=1616969&r1=1616968&r2=1616969&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetReaderRegistry.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetReaderRegistry.java Sat Aug 9 15:31:14 2014
@@ -30,20 +30,21 @@ import java.util.HashMap ;
import java.util.Map ;
import java.util.Objects ;
+import org.apache.jena.atlas.lib.NotImplemented ;
import org.apache.jena.riot.Lang ;
import org.apache.jena.riot.RiotException ;
import com.hp.hpl.jena.query.ResultSet ;
-import com.hp.hpl.jena.query.ResultSetFactory ;
import com.hp.hpl.jena.sparql.resultset.CSVInput ;
import com.hp.hpl.jena.sparql.resultset.JSONInput ;
+import com.hp.hpl.jena.sparql.resultset.TSVInput ;
import com.hp.hpl.jena.sparql.resultset.XMLInput ;
import com.hp.hpl.jena.sparql.util.Context ;
public class ResultSetReaderRegistry {
/** Lookup a {@linkplain Lang} to get the registered {@linkplain ResultSetReaderFactory} (or null) */
- public static ResultSetReaderFactory lookup(Lang lang) {
+ public static ResultSetReaderFactory getFactory(Lang lang) {
Objects.requireNonNull(lang) ;
return registry.get(lang) ;
}
@@ -56,9 +57,13 @@ public class ResultSetReaderRegistry {
}
private static Map<Lang, ResultSetReaderFactory> registry = new HashMap<>() ;
- static { init(); }
- /*package*/ static void init() {
+ private static boolean initialized = false ;
+ public static void init() {
+ if ( initialized )
+ return ;
+ initialized = true ;
+
ResultSetReaderFactory factory = new ResultSetReaderFactoryStd() ;
register(SPARQLResultSetXML, factory) ;
register(SPARQLResultSetJSON, factory) ;
@@ -67,7 +72,7 @@ public class ResultSetReaderRegistry {
register(SPARQLResultSetThrift, factory) ;
}
- static { init(); }
+ static { ResultSetLang.init(); }
private static class ResultSetReaderFactoryStd implements ResultSetReaderFactory {
@Override
@@ -83,22 +88,22 @@ public class ResultSetReaderRegistry {
private static ResultSetReader readerXML = new ResultSetReader() {
@Override public ResultSet read(InputStream in, Context context) { return XMLInput.fromXML(in); }
- @Override public ResultSet read(Reader in, Context context) { return null ; }
+ @Override public ResultSet read(Reader in, Context context) { return XMLInput.fromXML(in); }
} ;
private static ResultSetReader readerJSON = new ResultSetReader() {
@Override public ResultSet read(InputStream in, Context context) { return JSONInput.fromJSON(in) ; }
- @Override public ResultSet read(Reader in, Context context) { return null ; }
+ @Override public ResultSet read(Reader in, Context context) { throw new NotImplemented("Reader") ; }
} ;
private static ResultSetReader readerCSV = new ResultSetReader() {
@Override public ResultSet read(InputStream in, Context context) { return CSVInput.fromCSV(in) ; }
- @Override public ResultSet read(Reader in, Context context) { return null ; }
+ @Override public ResultSet read(Reader in, Context context) { throw new NotImplemented("Reader") ; }
} ;
private static ResultSetReader readerTSV = new ResultSetReader() {
- @Override public ResultSet read(InputStream in, Context context) { return ResultSetFactory.fromTSV(in) ; }
- @Override public ResultSet read(Reader in, Context context) { return null ; }
+ @Override public ResultSet read(InputStream in, Context context) { return TSVInput.fromTSV(in); }
+ @Override public ResultSet read(Reader in, Context context) { throw new NotImplemented("Reader") ; }
} ;
private static ResultSetReader readerNo = new ResultSetReader() {
Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetWriterRegistry.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetWriterRegistry.java?rev=1616969&r1=1616968&r2=1616969&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetWriterRegistry.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetWriterRegistry.java Sat Aug 9 15:31:14 2014
@@ -31,6 +31,7 @@ import java.util.HashMap ;
import java.util.Map ;
import java.util.Objects ;
+import org.apache.jena.atlas.lib.NotImplemented ;
import org.apache.jena.riot.Lang ;
import org.apache.jena.riot.RiotException ;
@@ -57,9 +58,12 @@ public class ResultSetWriterRegistry {
registry.put(lang, factory) ;
}
- static { init(); }
-
- /*package*/ static void init() {
+ private static boolean initialized = false ;
+ public static void init() {
+ if ( initialized )
+ return ;
+ initialized = true ;
+
// RDFLanguages.register(SPARQLResultSetXML) ;
// RDFLanguages.register(SPARQLResultSetJSON) ;
// RDFLanguages.register(SPARQLResultSetCSV) ;
@@ -75,13 +79,14 @@ public class ResultSetWriterRegistry {
register(SPARQLResultSetText, factory) ;
}
+ static { ResultSetLang.init(); }
private static ResultSetWriter writerXML = new ResultSetWriter() {
@Override public void write(OutputStream out, ResultSet resultSet, Context context) {
XMLOutput xOut = new XMLOutput(null) ;
xOut.format(out, resultSet) ;
}
- @Override public void write(Writer out, ResultSet resultSet, Context context) {}
+ @Override public void write(Writer out, ResultSet resultSet, Context context) {throw new NotImplemented("Writer") ; }
} ;
private static ResultSetWriter writerJSON = new ResultSetWriter() {
@@ -89,7 +94,7 @@ public class ResultSetWriterRegistry {
JSONOutput jOut = new JSONOutput() ;
jOut.format(out, resultSet) ;
}
- @Override public void write(Writer out, ResultSet resultSet, Context context) {}
+ @Override public void write(Writer out, ResultSet resultSet, Context context) {throw new NotImplemented("Writer") ; }
} ;
private static ResultSetWriter writerCSV = new ResultSetWriter() {
@@ -97,7 +102,7 @@ public class ResultSetWriterRegistry {
CSVOutput fmt = new CSVOutput() ;
fmt.format(out, resultSet) ;
}
- @Override public void write(Writer out, ResultSet resultSet, Context context) {}
+ @Override public void write(Writer out, ResultSet resultSet, Context context) {throw new NotImplemented("Writer") ; }
} ;
private static ResultSetWriter writerTSV = new ResultSetWriter() {
@@ -105,7 +110,7 @@ public class ResultSetWriterRegistry {
TSVOutput fmt = new TSVOutput() ;
fmt.format(out, resultSet) ;
}
- @Override public void write(Writer out, ResultSet resultSet, Context context) {}
+ @Override public void write(Writer out, ResultSet resultSet, Context context) {throw new NotImplemented("Writer") ; }
} ;
private static ResultSetWriter writerNo = new ResultSetWriter() {
@@ -119,7 +124,7 @@ public class ResultSetWriterRegistry {
TextOutput tFmt = new TextOutput(new SerializationContext((Prologue)null)) ;
tFmt.format(out, resultSet) ;
}
- @Override public void write(Writer out, ResultSet resultSet, Context context) {}
+ @Override public void write(Writer out, ResultSet resultSet, Context context) {throw new NotImplemented("Writer") ; }
} ;
private static class ResultSetWriterFactoryStd implements ResultSetWriterFactory {
@@ -133,7 +138,6 @@ public class ResultSetWriterRegistry {
if ( lang.equals(SPARQLResultSetText) ) return writerText ;
throw new RiotException("Lang not registered (ResultSet writer)") ;
}
-
}
}
Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TestSyntaxDetermination.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TestSyntaxDetermination.java?rev=1616969&r1=1616968&r2=1616969&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TestSyntaxDetermination.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TestSyntaxDetermination.java Sat Aug 9 15:31:14 2014
@@ -92,7 +92,7 @@ public class TestSyntaxDetermination ext
{ test(url, contentType, hintLang, expected) ; }
static void test(String url, String ct, Lang hint, Lang expected) {
- ContentType x = RDFDataMgr.determineCT(url, ct, hint) ;
+ ContentType x = WebContent.determineCT(url, ct, hint) ;
Lang lang = RDFDataMgr.determineLang(url, ct, hint) ;
assertEquals(expected, lang) ;
}
Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/resultset/TestResultSetIO.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/resultset/TestResultSetIO.java?rev=1616969&r1=1616968&r2=1616969&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/resultset/TestResultSetIO.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/resultset/TestResultSetIO.java Sat Aug 9 15:31:14 2014
@@ -18,14 +18,21 @@
package org.apache.jena.riot.resultset;
+import static org.apache.jena.riot.resultset.ResultSetLang.SPARQLResultSetCSV ;
+import static org.apache.jena.riot.resultset.ResultSetLang.SPARQLResultSetJSON ;
+import static org.apache.jena.riot.resultset.ResultSetLang.SPARQLResultSetTSV ;
+import static org.apache.jena.riot.resultset.ResultSetLang.SPARQLResultSetXML ;
+
import java.io.ByteArrayInputStream ;
import java.io.ByteArrayOutputStream ;
import java.util.ArrayList ;
import java.util.Collection ;
import java.util.List ;
+import org.apache.jena.atlas.junit.BaseTest ;
import org.apache.jena.atlas.lib.StrUtils ;
import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.ResultSetMgr ;
import org.junit.Before ;
import org.junit.Test ;
import org.junit.runner.RunWith ;
@@ -40,13 +47,13 @@ import com.hp.hpl.jena.sparql.sse.SSE ;
import com.hp.hpl.jena.sparql.sse.builders.BuilderResultSet ;
@RunWith(Parameterized.class)
-public class TestResultSetIO {
- @Parameters(name = "{index}: {0}") public static Collection<Object[]> data()
- {
- Lang[] langs = { ResultSetLang.SPARQLResultSetXML
- , ResultSetLang.SPARQLResultSetJSON
- , ResultSetLang.SPARQLResultSetCSV
- , ResultSetLang.SPARQLResultSetTSV
+public class TestResultSetIO extends BaseTest {
+ @Parameters(name = "{index}: {0}")
+ public static Collection<Object[]> data() {
+ Lang[] langs = { SPARQLResultSetXML
+ , SPARQLResultSetJSON
+ , SPARQLResultSetCSV
+ , SPARQLResultSetTSV
} ;
List<Object[]> x = new ArrayList<>() ;
@@ -61,8 +68,8 @@ public class TestResultSetIO {
," (row (?x _:b0) (?y _:b1))"
," (row (?x _:b2) (?y _:b3))"
," (row (?x _:b1) (?y _:b0))"
- ," (row (?x 1) )"
- ," (row (?y 2) )"
+ ," (row (?x 1) )"
+ ," (row (?y 2) )"
," (row )"
,")"
) ;
@@ -77,19 +84,54 @@ public class TestResultSetIO {
}
@Test public void test_resultset_01() {
+ // write(data)-read-compare
ByteArrayOutputStream out = new ByteArrayOutputStream() ;
ResultSetMgr.write(out, test_rs, lang) ;
test_rs.reset();
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()) ;
- ResultSet rs = ResultSetMgr.read(in, lang) ;
- ResultSetCompare.equalsByTerm(test_rs, rs) ;
- out.reset();
- ResultSetMgr.write(out, rs, lang) ;
+ ResultSet rs = ResultSetMgr.read(in, lang) ;
+ ResultSetRewindable rsw = ResultSetFactory.makeRewindable(rs) ;
+ if ( ! lang.equals(SPARQLResultSetCSV) )
+ // CSV is not faithful
+ assertTrue(ResultSetCompare.equalsByTerm(test_rs, rsw)) ;
+
+ rsw.reset();
test_rs.reset();
+
+ out = new ByteArrayOutputStream() ;
+
+ // Round trip the output from above - write(rsw)-read-compare
+ ResultSetMgr.write(out, rsw, lang) ;
in = new ByteArrayInputStream(out.toByteArray()) ;
ResultSet rs2 = ResultSetMgr.read(in, lang) ;
- ResultSetCompare.equalsByTerm(test_rs, rs2) ;
+ // Not test_rs -- CSV round-trips to itself.
+ assertTrue(ResultSetCompare.equalsByTerm(rsw, rs2)) ;
}
+
+// @Test public void test_resultset_02() {
+// StringWriter out = new StringWriter() ;
+// ResultSetMgr.write(out, test_rs, lang) ;
+// test_rs.reset();
+// StringReader in = new StringReader(out.toString()) ;
+//
+// ResultSet rs = ResultSetMgr.read(in, lang) ;
+// ResultSetRewindable rsw = ResultSetFactory.makeRewindable(rs) ;
+// if ( ! lang.equals(SPARQLResultSetCSV) )
+// // CSV is not faithful
+// assertTrue(ResultSetCompare.equalsByTerm(test_rs, rsw)) ;
+//
+// rsw.reset();
+// test_rs.reset();
+//
+// out = new StringWriter() ;
+//
+// // Round trip the output from above.
+// ResultSetMgr.write(out, rsw, lang) ;
+// in = new StringReader(out.toString()) ;
+// ResultSet rs2 = ResultSetMgr.read(in, lang) ;
+// // Not test_rs -- CSV is not faithful
+// assertTrue(ResultSetCompare.equalsByTerm(rsw, rs2)) ;
+// }
}