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'") ; }