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 2012/06/26 09:48:34 UTC
svn commit: r1353847 - in /jena/trunk/jena-arq/src:
main/java/com/hp/hpl/jena/sparql/resultset/JSONInput.java
main/java/org/openjena/atlas/json/JsonArray.java
test/java/com/hp/hpl/jena/sparql/expr/TestExpressions2.java
Author: andy
Date: Tue Jun 26 07:48:33 2012
New Revision: 1353847
URL: http://svn.apache.org/viewvc?rev=1353847&view=rev
Log:
Process JSON result link field correctly.
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/JSONInput.java
jena/trunk/jena-arq/src/main/java/org/openjena/atlas/json/JsonArray.java
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestExpressions2.java
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/JSONInput.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/JSONInput.java?rev=1353847&r1=1353846&r2=1353847&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/JSONInput.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/JSONInput.java Tue Jun 26 07:48:33 2012
@@ -18,20 +18,35 @@
package com.hp.hpl.jena.sparql.resultset;
-import static com.hp.hpl.jena.sparql.resultset.JSONResultsKW.* ;
+import static com.hp.hpl.jena.sparql.resultset.JSONResultsKW.kBindings ;
+import static com.hp.hpl.jena.sparql.resultset.JSONResultsKW.kBnode ;
+import static com.hp.hpl.jena.sparql.resultset.JSONResultsKW.kBoolean ;
+import static com.hp.hpl.jena.sparql.resultset.JSONResultsKW.kDatatype ;
+import static com.hp.hpl.jena.sparql.resultset.JSONResultsKW.kHead ;
+import static com.hp.hpl.jena.sparql.resultset.JSONResultsKW.kLink ;
+import static com.hp.hpl.jena.sparql.resultset.JSONResultsKW.kLiteral ;
+import static com.hp.hpl.jena.sparql.resultset.JSONResultsKW.kResults ;
+import static com.hp.hpl.jena.sparql.resultset.JSONResultsKW.kType ;
+import static com.hp.hpl.jena.sparql.resultset.JSONResultsKW.kTypedLiteral ;
+import static com.hp.hpl.jena.sparql.resultset.JSONResultsKW.kUri ;
+import static com.hp.hpl.jena.sparql.resultset.JSONResultsKW.kValue ;
+import static com.hp.hpl.jena.sparql.resultset.JSONResultsKW.kVars ;
+import static com.hp.hpl.jena.sparql.resultset.JSONResultsKW.kXmlLang ;
-import java.io.FileInputStream ;
import java.io.InputStream ;
import java.util.* ;
-import org.openjena.atlas.json.* ;
+import org.openjena.atlas.json.JSON ;
+import org.openjena.atlas.json.JsonArray ;
+import org.openjena.atlas.json.JsonObject ;
+import org.openjena.atlas.json.JsonValue ;
+import org.openjena.atlas.logging.Log ;
import org.openjena.riot.lang.LabelToNode ;
import com.hp.hpl.jena.datatypes.RDFDatatype ;
import com.hp.hpl.jena.datatypes.TypeMapper ;
import com.hp.hpl.jena.graph.Node ;
import com.hp.hpl.jena.query.ResultSet ;
-import com.hp.hpl.jena.query.ResultSetFormatter ;
import com.hp.hpl.jena.rdf.model.Model ;
import com.hp.hpl.jena.sparql.core.Var ;
import com.hp.hpl.jena.sparql.engine.QueryIterator ;
@@ -41,23 +56,9 @@ import com.hp.hpl.jena.sparql.engine.bin
import com.hp.hpl.jena.sparql.engine.binding.BindingMap ;
import com.hp.hpl.jena.sparql.engine.iterator.QueryIterPlainWrapper ;
import com.hp.hpl.jena.sparql.graph.GraphFactory ;
-import com.hp.hpl.jena.sparql.resultset.ResultSetException ;
-import com.hp.hpl.jena.sparql.resultset.SPARQLResult ;
public class JSONInput extends SPARQLResult
{
- static public void main(String... args) throws Exception
- {
- String FILE = "../ARQ/testing/ResultSet/output.srj" ;
- //String FILE = "../ARQ/testing/ARQ/Ask/ask-2.srj" ;
- InputStream in = new FileInputStream(FILE) ;
- SPARQLResult r = new JSONInput().process(in, null) ;
- if ( r.isBoolean() )
- System.out.println("ASK: "+r.getBooleanResult()) ;
- if ( r.isResultSet() )
- ResultSetFormatter.out(r.getResultSet()) ;
- }
-
public static ResultSet fromJSON(InputStream input)
{
SPARQLResult r = new JSONInput().process(input, null) ;
@@ -143,8 +144,29 @@ public class JSONInput extends SPARQLRes
JsonObject head = obj.get(kHead).getAsObject() ;
// ---- Head
- // -- Link
- String link = stringOrNull(head, kLink) ;
+ // -- Link - array.
+ if ( head.hasKey(kLink) )
+ {
+ List<String> links = new ArrayList<String>() ;
+
+ if ( head.get(kLink).isString() )
+ {
+ Log.warn(this, "Link field is a string, should be an array of strings") ;
+ links.add(head.get(kLink).getAsString().value()) ;
+ }
+ else
+ {
+ if ( ! head.get(kLink).isArray() )
+ throw new ResultSetException("Key 'link' must have be an array: found: "+obj.get(kLink)) ;
+
+ for ( JsonValue v : head.get(kLink).getAsArray() )
+ {
+ if ( ! v.isString() )
+ throw new ResultSetException("Key 'link' must have be an array of strings: found: "+v) ;
+ links.add(v.getAsString().value()) ;
+ }
+ }
+ }
// -- Vars
vars = parseVars(head) ;
@@ -232,7 +254,7 @@ public class JSONInput extends SPARQLRes
JsonValue v = obj.get(key) ;
if ( v == null ) return null ;
if ( ! v.isString() )
- throw new ResultSetException("Not a string") ;
+ throw new ResultSetException("Not a string: key: "+key) ;
return v.getAsString().value();
}
Modified: jena/trunk/jena-arq/src/main/java/org/openjena/atlas/json/JsonArray.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/atlas/json/JsonArray.java?rev=1353847&r1=1353846&r2=1353847&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/atlas/json/JsonArray.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/atlas/json/JsonArray.java Tue Jun 26 07:48:33 2012
@@ -24,7 +24,7 @@ import java.util.Iterator ;
import java.util.List ;
import java.util.ListIterator ;
-public class JsonArray extends JsonValue implements List<JsonValue>
+public class JsonArray extends JsonValue implements List<JsonValue>, Iterable<JsonValue>
{
private List<JsonValue> array = new ArrayList<JsonValue>() ;
Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestExpressions2.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestExpressions2.java?rev=1353847&r1=1353846&r2=1353847&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestExpressions2.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestExpressions2.java Tue Jun 26 07:48:33 2012
@@ -128,7 +128,9 @@ public class TestExpressions2 extends As
public void xsd_cast_13() { eval("xsd:double(' 1.0e0')") ; }
// Dynamic Function Calls
- @Test public void dynamic_call_01() { eval("CALL()", false); }
+ @Test (expected=ExprEvalException.class)
+ public void dynamic_call_01() { eval("CALL()", false); }
+
@Test public void dynamic_call_02() { eval("CALL(xsd:double, '1') = 1") ; }
@Test public void dynamic_call_03() { eval("CALL(fn:concat, 'A', 2+3 ) = 'A5'") ; }