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 2017/07/05 22:22:42 UTC

jena git commit: Use same idiom as "fetch" for "fetchDataset".

Repository: jena
Updated Branches:
  refs/heads/master d857b6950 -> 97dd1fde5


Use same idiom as "fetch" for "fetchDataset".

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

Branch: refs/heads/master
Commit: 97dd1fde5c072ea3e9a5077b0b4c0ec485e410b2
Parents: d857b69
Author: Andy Seaborne <an...@apache.org>
Authored: Wed Jul 5 18:09:53 2017 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Jul 5 18:09:53 2017 +0100

----------------------------------------------------------------------
 .../apache/jena/riot/web/HttpResponseLib.java   | 37 +++++++++++++++++++-
 .../jena/rdfconnection/RDFConnectionRemote.java | 28 +++++++--------
 2 files changed, 48 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/97dd1fde/jena-arq/src/main/java/org/apache/jena/riot/web/HttpResponseLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/web/HttpResponseLib.java b/jena-arq/src/main/java/org/apache/jena/riot/web/HttpResponseLib.java
index 9a9c83b..e545808 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/web/HttpResponseLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/web/HttpResponseLib.java
@@ -31,9 +31,14 @@ import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.query.ResultSet ;
 import org.apache.jena.query.ResultSetFactory ;
-import org.apache.jena.riot.* ;
+import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.RDFLanguages ;
+import org.apache.jena.riot.RDFParser ;
+import org.apache.jena.riot.WebContent ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.riot.system.StreamRDFLib ;
+import org.apache.jena.sparql.core.DatasetGraph ;
+import org.apache.jena.sparql.core.DatasetGraphFactory ;
 import org.apache.jena.sparql.graph.GraphFactory ;
 import org.apache.jena.sparql.resultset.ResultsFormat ;
 
@@ -42,6 +47,7 @@ import org.apache.jena.sparql.resultset.ResultsFormat ;
  */
 public class HttpResponseLib
 {
+    /** Handle a Graph response */
     public static HttpCaptureResponse<Graph> graphHandler() { return new GraphReader() ; }
     static class GraphReader implements HttpCaptureResponse<Graph>
     {
@@ -67,6 +73,34 @@ public class HttpResponseLib
         public Graph get() { return graph ; }
     }
 
+    /** Handle a DatasetGraph response */
+    public static HttpCaptureResponse<DatasetGraph> datasetHandler() { return new DatasetGraphReader() ; }
+    static class DatasetGraphReader implements HttpCaptureResponse<DatasetGraph>
+    {
+        private DatasetGraph dsg = null ;
+        @Override
+        final public void handle(String baseIRI, HttpResponse response)
+        {
+            try {
+                DatasetGraph dsg = DatasetGraphFactory.createTxnMem();
+                HttpEntity entity = response.getEntity() ;
+                // org.apache.http.entity.ContentType ;
+                String ct = contentType(response) ;
+                Lang lang = RDFLanguages.contentTypeToLang(ct) ;
+                StreamRDF dest = StreamRDFLib.dataset(dsg);
+                try(InputStream in = entity.getContent()) {
+                    RDFParser.source(in).lang(lang).base(baseIRI).parse(dest);
+                }
+                this.dsg = dsg ; 
+            } catch (IOException ex) { IO.exception(ex) ; }
+        }
+    
+        @Override
+        public DatasetGraph get() { return dsg ; }
+    }
+
+    
+    /** Dump, to System.out, a response */
     public static HttpResponseHandler httpDumpResponse = new HttpResponseHandler()
     {
         @Override
@@ -91,6 +125,7 @@ public class HttpResponseLib
         }
     } ;
     
+    /** Consume a response quietly. */
     public static HttpResponseHandler nullResponse = new HttpResponseHandler() {
         @Override
         public void handle(String baseIRI , HttpResponse response ) {

http://git-wip-us.apache.org/repos/asf/jena/blob/97dd1fde/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionRemote.java
----------------------------------------------------------------------
diff --git a/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionRemote.java b/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionRemote.java
index d0efcd7..0a67930 100644
--- a/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionRemote.java
+++ b/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/RDFConnectionRemote.java
@@ -31,7 +31,6 @@ import org.apache.http.entity.EntityTemplate;
 import org.apache.http.protocol.HttpContext;
 import org.apache.jena.atlas.io.IO;
 import org.apache.jena.atlas.web.HttpException;
-import org.apache.jena.atlas.web.TypedInputStream;
 import org.apache.jena.graph.Graph;
 import org.apache.jena.query.*;
 import org.apache.jena.rdf.model.Model;
@@ -43,7 +42,6 @@ import org.apache.jena.riot.web.HttpResponseLib;
 import org.apache.jena.sparql.ARQException;
 import org.apache.jena.sparql.core.DatasetGraph;
 import org.apache.jena.sparql.core.Transactional;
-import org.apache.jena.system.Txn;
 import org.apache.jena.update.UpdateExecutionFactory;
 import org.apache.jena.update.UpdateProcessor;
 import org.apache.jena.update.UpdateRequest;
@@ -261,31 +259,29 @@ public class RDFConnectionRemote implements RDFConnection {
         checkGSP();
         delete(null);
     }
-
+    
     @Override
     public Dataset fetchDataset() {
-        if ( destination == null )
-            throw new ARQException("Dataset operations not available - no dataset URL provided"); 
-        Dataset ds = DatasetFactory.createTxnMem();
-        Txn.executeWrite(ds, ()->{
-            TypedInputStream s = exec(()->HttpOp.execHttpGet(destination, WebContent.defaultDatasetAcceptHeader));
-            Lang lang = RDFLanguages.contentTypeToLang(s.getContentType());
-            RDFDataMgr.read(ds, s, lang);
-        });
-        return ds;
+        checkDataset();
+        DatasetGraph dsg = fetchDataset$();
+        return DatasetFactory.wrap(dsg);
     }
 
+    private DatasetGraph fetchDataset$() {
+        HttpCaptureResponse<DatasetGraph> dsg = HttpResponseLib.datasetHandler();
+        exec(()->HttpOp.execHttpGet(destination, WebContent.defaultDatasetAcceptHeader, dsg, this.httpClient, this.httpContext));
+        return dsg.get();
+    }
+    
     @Override
     public void loadDataset(String file) { 
-        if ( destination == null )
-            throw new ARQException("Dataset operations not available - no dataset URl provided"); 
+        checkDataset();
         doPutPostDataset(file, false); 
     }
     
     @Override
     public void loadDataset(Dataset dataset) {
-        if ( destination == null )
-            throw new ARQException("Dataset operations not available - no dataset URl provided"); 
+        checkDataset();
         doPutPostDataset(dataset, false); 
     }