You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by sa...@apache.org on 2012/04/21 02:40:23 UTC
svn commit: r1328549 - in
/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client:
./ http/
Author: sallen
Date: Sat Apr 21 00:40:22 2012
New Revision: 1328549
URL: http://svn.apache.org/viewvc?rev=1328549&view=rev
Log:
jena-client - Lots of changes on the the update side of things.
Added:
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/ModifierWrapper.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateDeleter.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateDeleterWrapper.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateInserter.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateInserterWrapper.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateQuerier.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateQuerierWrapper.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpQueryService.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpRepository.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpUpdateService.java
Removed:
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Deleter.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Inserter.java
Modified:
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/BulkDataHandler.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Connection.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/ConnectionBase.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Repository.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Updater.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdaterBase.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpConnection.java
incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpUpdater.java
Modified: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/BulkDataHandler.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/BulkDataHandler.java?rev=1328549&r1=1328548&r2=1328549&view=diff
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/BulkDataHandler.java (original)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/BulkDataHandler.java Sat Apr 21 00:40:22 2012
@@ -20,7 +20,7 @@ package org.apache.jena.client;
import org.openjena.atlas.lib.Closeable ;
-public interface BulkDataHandler extends Deleter, Closeable
+public interface BulkDataHandler extends UpdateDeleter, Closeable
{
}
Modified: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Connection.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Connection.java?rev=1328549&r1=1328548&r2=1328549&view=diff
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Connection.java (original)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Connection.java Sat Apr 21 00:40:22 2012
@@ -69,5 +69,14 @@ public interface Connection extends Tran
// TODO make ParameterizedQueryExecution and ParameterizedUpdateProcessor
QueryExecution createParameterizedQuery(String query);
UpdateProcessor createPparameterizedUpdate(String updateQuery);
+
+
+ Updater createBulkUpdater();
+
+ UpdateInserter createBulkUpdateInserter();
+
+ UpdateDeleter createBulkUpdateDeleter();
+
+ UpdateQuerier createBulkUpdateQuerier();
}
Modified: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/ConnectionBase.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/ConnectionBase.java?rev=1328549&r1=1328548&r2=1328549&view=diff
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/ConnectionBase.java (original)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/ConnectionBase.java Sat Apr 21 00:40:22 2012
@@ -1,17 +1,143 @@
package org.apache.jena.client;
-import java.io.InputStream;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
import java.util.Iterator;
-import com.hp.hpl.jena.graph.Graph;
-import com.hp.hpl.jena.graph.Node;
-import com.hp.hpl.jena.graph.Triple;
-import com.hp.hpl.jena.sparql.core.DatasetGraph;
import com.hp.hpl.jena.sparql.core.Quad;
+import com.hp.hpl.jena.update.Update;
public abstract class ConnectionBase extends UpdaterBase implements Connection
{
+ protected boolean bulkOperationOngoing = false;
+ protected abstract boolean hasBulkUpdater();
+ protected abstract Updater doCreateBulkUpdater();
+ protected abstract UpdateInserter doCreateBulkUpdateInserter();
+ protected abstract UpdateDeleter doCreateBulkUpdateDeleter();
+ protected abstract UpdateQuerier doCreateBulkUpdateQuerier();
+
+ protected void checkBulkOperationOngoing()
+ {
+ if (bulkOperationOngoing)
+ {
+ throw new IllegalStateException("You must close any open bulk operations before other operations are allowed on this Connection");
+ }
+ }
+ @Override
+ public final Updater createBulkUpdater()
+ {
+ if (!hasBulkUpdater())
+ {
+ throw new IllegalAccessError("This Connection does not support retreiving a bulk Modifier. You can check this with hasBulkModifier()");
+ }
+ checkBulkOperationOngoing();
+ bulkOperationOngoing = true;
+ return new ModifierWrapper(doCreateBulkUpdater())
+ {
+ @Override
+ public void close()
+ {
+ super.close();
+ bulkOperationOngoing = false;
+ }
+ };
+ }
+
+ @Override
+ public final UpdateInserter createBulkUpdateInserter()
+ {
+ checkBulkOperationOngoing();
+ bulkOperationOngoing = true;
+ //return getProxy(Inserter.class, doCreateBulkInserter());
+ return new UpdateInserterWrapper(doCreateBulkUpdater())
+ {
+ @Override
+ public void close()
+ {
+ super.close();
+ bulkOperationOngoing = false;
+ }
+ };
+ }
+
+ @Override
+ public final UpdateDeleter createBulkUpdateDeleter()
+ {
+ checkBulkOperationOngoing();
+ bulkOperationOngoing = true;
+ return new UpdateDeleterWrapper(doCreateBulkUpdater())
+ {
+ @Override
+ public void close()
+ {
+ super.close();
+ bulkOperationOngoing = false;
+ }
+ };
+ }
+
+ @Override
+ public final UpdateQuerier createBulkUpdateQuerier()
+ {
+ checkBulkOperationOngoing();
+ bulkOperationOngoing = true;
+ return new UpdateQuerierWrapper(doCreateBulkUpdater())
+ {
+ @Override
+ public void close()
+ {
+ super.close();
+ bulkOperationOngoing = false;
+ }
+ };
+ }
+
+ @Override
+ protected void doInsert(Iterator<? extends Quad> it)
+ {
+ checkBulkOperationOngoing();
+ UpdateInserter inserter = doCreateBulkUpdateInserter();
+ inserter.insert(it);
+ inserter.close();
+ }
+
+ @Override
+ protected void doDelete(Iterator<? extends Quad> it)
+ {
+ checkBulkOperationOngoing();
+ UpdateDeleter deleter = doCreateBulkUpdateDeleter();
+ deleter.delete(it);
+ deleter.close();
+ }
+
+ @Override
+ protected void doUpdate(Iterator<? extends Update> it)
+ {
+ checkBulkOperationOngoing();
+ UpdateQuerier updater = doCreateBulkUpdateQuerier();
+ updater.update(it);
+ updater.close();
+ }
+
+
+ // Cool idea to prevent having to create *Wrapper classes. But it uses reflection, which will be slower (by how much?)
+ @SuppressWarnings({ "unchecked", "unused" })
+ private <T> T getProxy(Class<T> intf, final T obj)
+ {
+ return (T) Proxy.newProxyInstance(obj.getClass().getClassLoader(), new Class[] { intf }, new InvocationHandler()
+ {
+ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
+ {
+ if ("close".equals(method.getName()))
+ {
+ bulkOperationOngoing = false;
+ }
+ return method.invoke(obj, args);
+ }
+ });
+ }
}
Added: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/ModifierWrapper.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/ModifierWrapper.java?rev=1328549&view=auto
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/ModifierWrapper.java (added)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/ModifierWrapper.java Sat Apr 21 00:40:22 2012
@@ -0,0 +1,204 @@
+package org.apache.jena.client;
+
+import java.io.InputStream;
+import java.util.Iterator;
+
+import org.openjena.riot.Lang;
+
+import com.hp.hpl.jena.graph.Graph;
+import com.hp.hpl.jena.graph.Node;
+import com.hp.hpl.jena.graph.Triple;
+import com.hp.hpl.jena.sparql.core.DatasetGraph;
+import com.hp.hpl.jena.sparql.core.Quad;
+import com.hp.hpl.jena.update.Update;
+
+class ModifierWrapper implements Updater
+{
+ private final Updater wrappedObject;
+
+ public ModifierWrapper(Updater modifier)
+ {
+ this.wrappedObject = modifier;
+ }
+
+ @Override
+ public void close()
+ {
+ wrappedObject.close();
+ }
+
+ @Override
+ public void delete(Quad q)
+ {
+ wrappedObject.delete(q);
+ }
+
+ @Override
+ public void insert(Quad q)
+ {
+ wrappedObject.insert(q);
+ }
+
+ @Override
+ public void delete(Iterable<? extends Quad> quads)
+ {
+ wrappedObject.delete(quads);
+ }
+
+ @Override
+ public void insert(Iterable<? extends Quad> quads)
+ {
+ wrappedObject.insert(quads);
+ }
+
+ @Override
+ public void delete(Iterator<? extends Quad> quadIter)
+ {
+ wrappedObject.delete(quadIter);
+ }
+
+ @Override
+ public void insert(Iterator<? extends Quad> quadIter)
+ {
+ wrappedObject.insert(quadIter);
+ }
+
+ @Override
+ public void delete(DatasetGraph dsg)
+ {
+ wrappedObject.delete(dsg);
+ }
+
+ @Override
+ public void insert(DatasetGraph dsg)
+ {
+ wrappedObject.insert(dsg);
+ }
+
+ @Override
+ public void delete(InputStream in, Lang lang)
+ {
+ wrappedObject.delete(in, lang);
+ }
+
+ @Override
+ public void insert(InputStream in, Lang lang)
+ {
+ wrappedObject.insert(in, lang);
+ }
+
+ @Override
+ public void delete(InputStream in, Lang lang, String base)
+ {
+ wrappedObject.delete(in, lang, base);
+ }
+
+ @Override
+ public void insert(InputStream in, Lang lang, String base)
+ {
+ wrappedObject.insert(in, lang, base);
+ }
+
+ @Override
+ public void delete(Node graphName, Triple t)
+ {
+ wrappedObject.delete(graphName, t);
+ }
+
+ @Override
+ public void insert(Node graphName, Triple t)
+ {
+ wrappedObject.insert(graphName, t);
+ }
+
+ @Override
+ public void delete(Node graphName, Iterable<? extends Triple> triples)
+ {
+ wrappedObject.delete(graphName, triples);
+ }
+
+ @Override
+ public void insert(Node graphName, Iterable<? extends Triple> triples)
+ {
+ wrappedObject.insert(graphName, triples);
+ }
+
+ @Override
+ public void delete(Node graphName, Iterator<? extends Triple> tripleIter)
+ {
+ wrappedObject.delete(graphName, tripleIter);
+ }
+
+ @Override
+ public void insert(Node graphName, Iterator<? extends Triple> tripleIter)
+ {
+ wrappedObject.insert(graphName, tripleIter);
+ }
+
+ @Override
+ public void delete(Node graphName, Graph g)
+ {
+ wrappedObject.delete(graphName, g);
+ }
+
+ @Override
+ public void insert(Node graphName, Graph g)
+ {
+ wrappedObject.insert(graphName, g);
+ }
+
+ @Override
+ public void delete(Node graphName, InputStream in, Lang lang)
+ {
+ wrappedObject.delete(graphName, in, lang);
+ }
+
+ @Override
+ public void insert(Node graphName, InputStream in, Lang lang)
+ {
+ wrappedObject.insert(graphName, in, lang);
+ }
+
+ @Override
+ public void delete(Node graphName, InputStream in, Lang lang, String base)
+ {
+ wrappedObject.delete(graphName, in, lang, base);
+ }
+
+ @Override
+ public void insert(Node graphName, InputStream in, Lang lang, String base)
+ {
+ wrappedObject.insert(graphName, in, lang, base);
+ }
+
+ @Override
+ public void update(String updateQuery)
+ {
+ wrappedObject.update(updateQuery);
+ }
+
+ @Override
+ public void update(String updateQuery, String baseURI)
+ {
+ wrappedObject.update(updateQuery, baseURI);
+ }
+
+ @Override
+ public void update(Update update)
+ {
+ wrappedObject.update(update);
+ }
+
+ @Override
+ public void update(Iterator<? extends Update> updateIter)
+ {
+ wrappedObject.update(updateIter);
+ }
+
+ @Override
+ public void update(Iterable<? extends Update> updates)
+ {
+ wrappedObject.update(updates);
+ }
+
+}
Modified: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Repository.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Repository.java?rev=1328549&r1=1328548&r2=1328549&view=diff
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Repository.java (original)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Repository.java Sat Apr 21 00:40:22 2012
@@ -18,7 +18,7 @@
package org.apache.jena.client;
-import org.apache.jena.client.service.Service ;
+import org.apache.jena.client.service.Service;
/**
* Represents an RDF database. This can be local or remote.
Added: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateDeleter.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateDeleter.java?rev=1328549&view=auto
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateDeleter.java (added)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateDeleter.java Sat Apr 21 00:40:22 2012
@@ -0,0 +1,51 @@
+/**
+ * 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.client;
+
+import java.io.InputStream;
+import java.util.Iterator;
+
+import org.openjena.atlas.lib.Closeable;
+import org.openjena.riot.Lang;
+
+import com.hp.hpl.jena.graph.Graph;
+import com.hp.hpl.jena.graph.Node;
+import com.hp.hpl.jena.graph.Triple;
+import com.hp.hpl.jena.sparql.core.DatasetGraph;
+import com.hp.hpl.jena.sparql.core.Quad;
+
+public interface UpdateDeleter extends Closeable
+{
+ // Quads
+ void delete(Quad q);
+ void delete(Iterable<? extends Quad> quads);
+ void delete(Iterator<? extends Quad> quadIter);
+ void delete(DatasetGraph dsg);
+ void delete(InputStream in, Lang lang); // Lang must be NQUADS or TRIG
+ void delete(InputStream in, Lang lang, String base); // Lang must be NQUADS or TRIG
+
+ // Triples
+ void delete(Node graphName, Triple t);
+ void delete(Node graphName, Iterable<? extends Triple> triples);
+ void delete(Node graphName, Iterator<? extends Triple> tripleIter);
+ void delete(Node graphName, Graph g);
+ void delete(Node graphName, InputStream in, Lang lang);
+ void delete(Node graphName, InputStream in, Lang lang, String base);
+}
+
Added: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateDeleterWrapper.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateDeleterWrapper.java?rev=1328549&view=auto
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateDeleterWrapper.java (added)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateDeleterWrapper.java Sat Apr 21 00:40:22 2012
@@ -0,0 +1,100 @@
+package org.apache.jena.client;
+
+import java.io.InputStream;
+import java.util.Iterator;
+
+import org.openjena.riot.Lang;
+
+import com.hp.hpl.jena.graph.Graph;
+import com.hp.hpl.jena.graph.Node;
+import com.hp.hpl.jena.graph.Triple;
+import com.hp.hpl.jena.sparql.core.DatasetGraph;
+import com.hp.hpl.jena.sparql.core.Quad;
+
+class UpdateDeleterWrapper implements UpdateDeleter
+{
+ private final UpdateDeleter wrappedObject;
+
+ public UpdateDeleterWrapper(UpdateDeleter wrappedObject)
+ {
+ this.wrappedObject = wrappedObject;
+ }
+
+ @Override
+ public void close()
+ {
+ wrappedObject.close();
+ }
+
+ @Override
+ public void delete(Quad q)
+ {
+ wrappedObject.delete(q);
+ }
+
+ @Override
+ public void delete(Iterable<? extends Quad> quads)
+ {
+ wrappedObject.delete(quads);
+ }
+
+ @Override
+ public void delete(Iterator<? extends Quad> quadIter)
+ {
+ wrappedObject.delete(quadIter);
+ }
+
+ @Override
+ public void delete(DatasetGraph dsg)
+ {
+ wrappedObject.delete(dsg);
+ }
+
+ @Override
+ public void delete(InputStream in, Lang lang)
+ {
+ wrappedObject.delete(in, lang);
+ }
+
+ @Override
+ public void delete(InputStream in, Lang lang, String base)
+ {
+ wrappedObject.delete(in, lang, base);
+ }
+
+ @Override
+ public void delete(Node graphName, Triple t)
+ {
+ wrappedObject.delete(graphName, t);
+ }
+
+ @Override
+ public void delete(Node graphName, Iterable<? extends Triple> triples)
+ {
+ wrappedObject.delete(graphName, triples);
+ }
+
+ @Override
+ public void delete(Node graphName, Iterator<? extends Triple> tripleIter)
+ {
+ wrappedObject.delete(graphName, tripleIter);
+ }
+
+ @Override
+ public void delete(Node graphName, Graph g)
+ {
+ wrappedObject.delete(graphName, g);
+ }
+
+ @Override
+ public void delete(Node graphName, InputStream in, Lang lang)
+ {
+ wrappedObject.delete(graphName, in, lang);
+ }
+
+ @Override
+ public void delete(Node graphName, InputStream in, Lang lang, String base)
+ {
+ wrappedObject.delete(graphName, in, lang, base);
+ }
+}
Added: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateInserter.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateInserter.java?rev=1328549&view=auto
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateInserter.java (added)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateInserter.java Sat Apr 21 00:40:22 2012
@@ -0,0 +1,53 @@
+/**
+ * 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.client;
+
+import java.io.InputStream;
+import java.util.Iterator;
+
+import org.openjena.atlas.lib.Closeable;
+import org.openjena.riot.Lang;
+
+import com.hp.hpl.jena.graph.Graph;
+import com.hp.hpl.jena.graph.Node;
+import com.hp.hpl.jena.graph.Triple;
+import com.hp.hpl.jena.sparql.core.DatasetGraph;
+import com.hp.hpl.jena.sparql.core.Quad;
+
+public interface UpdateInserter extends Closeable
+{
+ // Quads
+ void insert(Quad q);
+ void insert(Iterable<? extends Quad> quads);
+ void insert(Iterator<? extends Quad> quadIter);
+ void insert(DatasetGraph dsg);
+ void insert(InputStream in, Lang lang); // Lang must be NQUADS or TRIG
+ void insert(InputStream in, Lang lang, String base); // Lang must be NQUADS or TRIG
+
+ // Triples
+ void insert(Node graphName, Triple t);
+ void insert(Node graphName, Iterable<? extends Triple> triples);
+ void insert(Node graphName, Iterator<? extends Triple> tripleIter);
+ void insert(Node graphName, Graph g);
+ void insert(Node graphName, InputStream in, Lang lang);
+ void insert(Node graphName, InputStream in, Lang lang, String base);
+ //void insert(Node graphName, IRI sourceDocument);
+
+}
+
Added: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateInserterWrapper.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateInserterWrapper.java?rev=1328549&view=auto
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateInserterWrapper.java (added)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateInserterWrapper.java Sat Apr 21 00:40:22 2012
@@ -0,0 +1,101 @@
+package org.apache.jena.client;
+
+import java.io.InputStream;
+import java.util.Iterator;
+
+import org.openjena.riot.Lang;
+
+import com.hp.hpl.jena.graph.Graph;
+import com.hp.hpl.jena.graph.Node;
+import com.hp.hpl.jena.graph.Triple;
+import com.hp.hpl.jena.sparql.core.DatasetGraph;
+import com.hp.hpl.jena.sparql.core.Quad;
+
+class UpdateInserterWrapper implements UpdateInserter
+{
+ private final UpdateInserter wrappedObject;
+
+ public UpdateInserterWrapper(UpdateInserter wrappedObject)
+ {
+ this.wrappedObject = wrappedObject;
+ }
+
+ @Override
+ public void close()
+ {
+ wrappedObject.close();
+ }
+
+ @Override
+ public void insert(Quad q)
+ {
+ wrappedObject.insert(q);
+ }
+
+ @Override
+ public void insert(Iterable<? extends Quad> quads)
+ {
+ wrappedObject.insert(quads);
+ }
+
+ @Override
+ public void insert(Iterator<? extends Quad> quadIter)
+ {
+ wrappedObject.insert(quadIter);
+ }
+
+ @Override
+ public void insert(DatasetGraph dsg)
+ {
+ wrappedObject.insert(dsg);
+ }
+
+ @Override
+ public void insert(InputStream in, Lang lang)
+ {
+ wrappedObject.insert(in, lang);
+ }
+
+ @Override
+ public void insert(InputStream in, Lang lang, String base)
+ {
+ wrappedObject.insert(in, lang, base);
+ }
+
+ @Override
+ public void insert(Node graphName, Triple t)
+ {
+ wrappedObject.insert(graphName, t);
+ }
+
+ @Override
+ public void insert(Node graphName, Iterable<? extends Triple> triples)
+ {
+ wrappedObject.insert(graphName, triples);
+ }
+
+ @Override
+ public void insert(Node graphName, Iterator<? extends Triple> tripleIter)
+ {
+ wrappedObject.insert(graphName, tripleIter);
+ }
+
+ @Override
+ public void insert(Node graphName, Graph g)
+ {
+ wrappedObject.insert(graphName, g);
+ }
+
+ @Override
+ public void insert(Node graphName, InputStream in, Lang lang)
+ {
+ wrappedObject.insert(graphName, in, lang);
+ }
+
+ @Override
+ public void insert(Node graphName, InputStream in, Lang lang, String base)
+ {
+ wrappedObject.insert(graphName, in, lang, base);
+ }
+
+}
Added: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateQuerier.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateQuerier.java?rev=1328549&view=auto
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateQuerier.java (added)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateQuerier.java Sat Apr 21 00:40:22 2012
@@ -0,0 +1,35 @@
+package org.apache.jena.client;
+
+import java.util.Iterator;
+
+import org.openjena.atlas.lib.Closeable;
+
+import com.hp.hpl.jena.update.Update;
+
+// TODO I don't like this name... The idea of this class is it can do all SPARQL 1.1 Update operations,
+// but they all must be contained in an object, so it isn't suitable for streaming large quads.
+public interface UpdateQuerier extends Closeable
+{
+ /**
+ * Execute an update query by parsing from a string.
+ *
+ * @param updateQuery The update request as a string.
+ */
+ void update(String updateQuery);
+
+ /**
+ * Execute an update query by parsing from a string.
+ *
+ * @param updateQuery The update request as a string.
+ * @param baseURI The base URI for resolving relative URIs.
+ */
+ void update(String updateQuery, String baseURI);
+
+// void update(String updateQuery, Syntax syntax);
+
+ void update(Update update);
+
+ void update(Iterator<? extends Update> updateIter);
+
+ void update(Iterable<? extends Update> updates);
+}
Added: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateQuerierWrapper.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateQuerierWrapper.java?rev=1328549&view=auto
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateQuerierWrapper.java (added)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdateQuerierWrapper.java Sat Apr 21 00:40:22 2012
@@ -0,0 +1,52 @@
+package org.apache.jena.client;
+
+import java.util.Iterator;
+
+import com.hp.hpl.jena.update.Update;
+
+class UpdateQuerierWrapper implements UpdateQuerier
+{
+ private final UpdateQuerier wrappedObject;
+
+ public UpdateQuerierWrapper(UpdateQuerier wrappedObject)
+ {
+ this.wrappedObject = wrappedObject;
+ }
+
+ @Override
+ public void close()
+ {
+ wrappedObject.close();
+ }
+
+ @Override
+ public void update(String updateQuery)
+ {
+ wrappedObject.update(updateQuery);
+ }
+
+ @Override
+ public void update(String updateQuery, String baseURI)
+ {
+ wrappedObject.update(updateQuery, baseURI);
+ }
+
+ @Override
+ public void update(Update update)
+ {
+ wrappedObject.update(update);
+ }
+
+ @Override
+ public void update(Iterator<? extends Update> updateIter)
+ {
+ wrappedObject.update(updateIter);
+ }
+
+ @Override
+ public void update(Iterable<? extends Update> updates)
+ {
+ wrappedObject.update(updates);
+ }
+
+}
Modified: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Updater.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Updater.java?rev=1328549&r1=1328548&r2=1328549&view=diff
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Updater.java (original)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/Updater.java Sat Apr 21 00:40:22 2012
@@ -21,7 +21,7 @@ package org.apache.jena.client;
import org.openjena.atlas.lib.Closeable;
-public interface Updater extends Inserter, Deleter, Closeable
+public interface Updater extends UpdateInserter, UpdateDeleter, UpdateQuerier, Closeable
{
}
Modified: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdaterBase.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdaterBase.java?rev=1328549&r1=1328548&r2=1328549&view=diff
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdaterBase.java (original)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/UpdaterBase.java Sat Apr 21 00:40:22 2012
@@ -32,20 +32,66 @@ import com.hp.hpl.jena.graph.Node;
import com.hp.hpl.jena.graph.Triple;
import com.hp.hpl.jena.sparql.core.DatasetGraph;
import com.hp.hpl.jena.sparql.core.Quad;
+import com.hp.hpl.jena.update.Update;
+import com.hp.hpl.jena.update.UpdateFactory;
public abstract class UpdaterBase implements Updater
{
+ protected abstract void doInsert(Iterator<? extends Quad> quadIter);
+
+ protected abstract void doDelete(Iterator<? extends Quad> quadIter);
+
+ protected abstract void doUpdate(Iterator<? extends Update> updateIter);
+
+
+ // -- Querier -----------------------
+
@Override
- public abstract void insert(Iterator<? extends Quad> quadIter);
+ public void update(Iterator<? extends Update> updateIter)
+ {
+ doUpdate(updateIter);
+ }
@Override
- public abstract void delete(Iterator<? extends Quad> quadIter);
+ public void update(Iterable<? extends Update> updates)
+ {
+ update(updates.iterator());
+ }
+ @Override
+ public void update(String updateQuery)
+ {
+ update(UpdateFactory.create(updateQuery));
+ }
+
+ @Override
+ public void update(String updateQuery, String baseURI)
+ {
+ update(UpdateFactory.create(updateQuery, baseURI));
+ }
+
+// @Override
+// public void update(String updateQuery, Syntax syntax)
+// {
+// update(UpdateFactory.create(updateQuery, syntax));
+// }
+
+ @Override
+ public void update(Update update)
+ {
+ update(Arrays.asList(update));
+ }
// -- Inserter ----------------------
@Override
+ public void insert(Iterator<? extends Quad> quadIter)
+ {
+ doInsert(quadIter);
+ }
+
+ @Override
public void insert(Quad q)
{
insert(Arrays.asList(q));
@@ -173,6 +219,12 @@ public abstract class UpdaterBase implem
// -- Deleter -----------------
@Override
+ public void delete(Iterator<? extends Quad> quadIter)
+ {
+ doDelete(quadIter);
+ }
+
+ @Override
public void delete(Quad q)
{
delete(Arrays.asList(q));
Modified: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpConnection.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpConnection.java?rev=1328549&r1=1328548&r2=1328549&view=diff
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpConnection.java (original)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpConnection.java Sat Apr 21 00:40:22 2012
@@ -1,38 +1,96 @@
package org.apache.jena.client.http;
-import java.io.InputStream;
-import java.util.Iterator;
-
import org.apache.jena.client.BulkDataHandler;
import org.apache.jena.client.ConnectionBase;
-import org.apache.jena.client.UpdaterBase;
-import org.apache.jena.client.RDFFormat;
import org.apache.jena.client.Repository;
+import org.apache.jena.client.UpdateDeleter;
+import org.apache.jena.client.UpdateInserter;
+import org.apache.jena.client.UpdateQuerier;
+import org.apache.jena.client.Updater;
import org.apache.jena.client.service.QueryService;
import org.apache.jena.client.service.Service;
import org.apache.jena.client.service.UpdateService;
-import org.apache.jena.iri.IRI;
-import com.hp.hpl.jena.graph.Node;
-import com.hp.hpl.jena.graph.Triple;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.ReadWrite;
-import com.hp.hpl.jena.sparql.core.Quad;
import com.hp.hpl.jena.update.UpdateProcessor;
public class SparqlHttpConnection extends ConnectionBase
{
+ private final SparqlHttpRepository repo;
+
+ private SparqlHttpQueryService activeQueryService;
+ private SparqlHttpUpdateService activeUpdateService;
+
+ public SparqlHttpConnection(SparqlHttpRepository repo)
+ {
+ if (null == repo)
+ {
+ throw new IllegalArgumentException("repo must not be null");
+ }
+
+ this.repo = repo;
+ this.activeQueryService = repo.getDefaultQueryService();
+ this.activeUpdateService =repo.getDefaultUpdateService();
+
+ }
+
+// /**
+// * @throws IllegalArgumentException if the QueryService is not a SparqlHttpQueryService
+// */
+// private SparqlHttpQueryService castUp(QueryService queryService)
+// {
+// if (!(queryService instanceof SparqlHttpUpdateService))
+// {
+// throw new IllegalArgumentException(String.format("%1$s only accepts %2$s for %3$s",
+// SparqlHttpConnection.class.getSimpleName(), SparqlHttpQueryService.class.getSimpleName(), QueryService.class.getSimpleName()));
+// }
+// return (SparqlHttpQueryService)queryService;
+// }
+//
+// /**
+// * @throws IllegalArgumentException if the UpdateService is not a SparqlHttpUpdateService
+// */
+// private SparqlHttpUpdateService castUp(UpdateService updateService)
+// {
+// if (!(updateService instanceof SparqlHttpUpdateService))
+// {
+// throw new IllegalArgumentException(String.format("%1$s only accepts %2$s for %3$s",
+// SparqlHttpConnection.class.getSimpleName(), SparqlHttpUpdateService.class.getSimpleName(), UpdateService.class.getSimpleName()));
+// }
+// return (SparqlHttpUpdateService)updateService;
+// }
+
+ @Override
+ public boolean hasBulkUpdater()
+ {
+ return true;
+ }
+
+ @Override
+ protected Updater doCreateBulkUpdater()
+ {
+ SparqlHttpUpdater updater = new SparqlHttpUpdater(activeUpdateService);
+ updater.open();
+ return updater;
+ }
+
+ @Override
+ protected UpdateInserter doCreateBulkUpdateInserter()
+ {
+ return doCreateBulkUpdater();
+ }
@Override
- public void insert(Iterator<? extends Quad> it)
+ protected UpdateDeleter doCreateBulkUpdateDeleter()
{
- // TODO
+ return doCreateBulkUpdater();
}
@Override
- public void delete(Iterator<? extends Quad> it)
+ protected UpdateQuerier doCreateBulkUpdateQuerier()
{
- // TODO
+ return doCreateBulkUpdater();
}
Added: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpQueryService.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpQueryService.java?rev=1328549&view=auto
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpQueryService.java (added)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpQueryService.java Sat Apr 21 00:40:22 2012
@@ -0,0 +1,27 @@
+package org.apache.jena.client.http;
+
+import org.apache.jena.client.service.ServiceDescription;
+import org.apache.jena.client.service.UpdateService;
+
+public class SparqlHttpQueryService implements UpdateService
+{
+ private final String endpointUrl;
+
+ public SparqlHttpQueryService(String endpointUrl)
+ {
+ this.endpointUrl = endpointUrl;
+ }
+
+ public String getEndpointUrl()
+ {
+ return endpointUrl;
+ }
+
+ @Override
+ public ServiceDescription getDescription()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Added: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpRepository.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpRepository.java?rev=1328549&view=auto
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpRepository.java (added)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpRepository.java Sat Apr 21 00:40:22 2012
@@ -0,0 +1,34 @@
+package org.apache.jena.client.http;
+
+import org.apache.jena.client.Connection;
+import org.apache.jena.client.Repository;
+import org.apache.jena.client.service.Service;
+
+public class SparqlHttpRepository implements Repository
+{
+
+ @Override
+ public Connection getConnection()
+ {
+ return new SparqlHttpConnection(this);
+ }
+
+ @Override
+ public Service getServices()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public SparqlHttpQueryService getDefaultQueryService()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public SparqlHttpUpdateService getDefaultUpdateService()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
Added: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpUpdateService.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpUpdateService.java?rev=1328549&view=auto
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpUpdateService.java (added)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpUpdateService.java Sat Apr 21 00:40:22 2012
@@ -0,0 +1,27 @@
+package org.apache.jena.client.http;
+
+import org.apache.jena.client.service.ServiceDescription;
+import org.apache.jena.client.service.UpdateService;
+
+public class SparqlHttpUpdateService implements UpdateService
+{
+ private final String endpointUrl;
+
+ public SparqlHttpUpdateService(String endpointUrl)
+ {
+ this.endpointUrl = endpointUrl;
+ }
+
+ public String getEndpointUrl()
+ {
+ return endpointUrl;
+ }
+
+ @Override
+ public ServiceDescription getDescription()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Modified: incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpUpdater.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpUpdater.java?rev=1328549&r1=1328548&r2=1328549&view=diff
==============================================================================
--- incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpUpdater.java (original)
+++ incubator/jena/Experimental/jena-client/trunk/src/main/java/org/apache/jena/client/http/SparqlHttpUpdater.java Sat Apr 21 00:40:22 2012
@@ -14,25 +14,27 @@ import org.openjena.atlas.io.IndentedWri
import com.hp.hpl.jena.sparql.core.Quad;
import com.hp.hpl.jena.sparql.modify.request.UpdateWriter;
import com.hp.hpl.jena.sparql.serializer.SerializationContext;
+import com.hp.hpl.jena.update.Update;
import com.hp.hpl.jena.update.UpdateException;
public class SparqlHttpUpdater extends UpdaterBase
{
- private final String sparqlUpdateEndpoint;
+ private final SparqlHttpUpdateService updateService;
private final SerializationContext sCxt;
private HttpURLConnection conn;
private OutputStream out;
private UpdateWriter writer;
+ private boolean opened = false;
- public SparqlHttpUpdater(String sparqlUpdateEndpoint)
+ public SparqlHttpUpdater(SparqlHttpUpdateService updateService)
{
- this(sparqlUpdateEndpoint, null);
+ this(updateService, null);
}
- public SparqlHttpUpdater(String sparqlUpdateEndpoint, SerializationContext sCxt)
+ public SparqlHttpUpdater(SparqlHttpUpdateService updateService, SerializationContext sCxt)
{
- this.sparqlUpdateEndpoint = sparqlUpdateEndpoint;
+ this.updateService = updateService;
this.sCxt = sCxt;
}
@@ -41,7 +43,7 @@ public class SparqlHttpUpdater extends U
URL url;
try
{
- url = new URL(sparqlUpdateEndpoint);
+ url = new URL(updateService.getEndpointUrl());
URLConnection urlConn = url.openConnection();
if (!(urlConn instanceof HttpURLConnection))
{
@@ -51,12 +53,14 @@ public class SparqlHttpUpdater extends U
conn.setDoOutput(true);
// TODO Need to enable chunking mode to support streaming. Otherwise it is all buffered up in memory.
- //conn.setChunkedStreamingMode(chunklen);
+ //conn.setChunkedStreamingMode(0);
out = conn.getOutputStream();
writer = new UpdateWriter(new IndentedWriter(out), sCxt);
writer.open();
+
+ opened = true;
}
catch (MalformedURLException e)
{
@@ -67,46 +71,66 @@ public class SparqlHttpUpdater extends U
throw new UpdateException(e);
}
}
+
+ private void checkOpen()
+ {
+ if (!opened)
+ {
+ throw new IllegalStateException("SparqlHttpUpdater is not opened. Call open() first.");
+ }
+ }
@Override
- public void insert(Iterator<? extends Quad> it)
+ protected void doInsert(Iterator<? extends Quad> it)
{
+ checkOpen();
writer.insert(it);
}
@Override
- public void delete(Iterator<? extends Quad> it)
+ protected void doDelete(Iterator<? extends Quad> it)
{
+ checkOpen();
writer.delete(it);
}
@Override
+ protected void doUpdate(Iterator<? extends Update> it)
+ {
+ checkOpen();
+ writer.update(it);
+ }
+
+ @Override
public void close()
{
- writer.close();
- try
+ if (opened)
{
- out.close();
-
- // Get the response
- int responseCode = conn.getResponseCode();
- String responseMessage = conn.getResponseMessage();
-
- if (responseCode == 204) // No content
+ writer.close();
+ try
{
- return;
+ out.close();
+
+ // Get the response
+ int responseCode = conn.getResponseCode();
+ String responseMessage = conn.getResponseMessage();
+
+ if (responseCode == 204) // No content
+ {
+ return;
+ }
+ if (responseCode == 200) // OK
+ {
+ // But what was the content?
+ // TODO read body
+ return;
+ }
+ throw new UpdateException(responseCode+" "+responseMessage) ;
}
- if (responseCode == 200) // OK
+ catch (IOException e)
{
- // But what was the content?
- // TODO read body
- return;
+ throw new UpdateException(e);
}
- throw new UpdateException(responseCode+" "+responseMessage) ;
- }
- catch (IOException e)
- {
- throw new UpdateException(e);
}
}
}