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 2015/05/28 21:35:08 UTC

[1/7] jena git commit: Use constant from RDF.xmlLiteral.

Repository: jena
Updated Branches:
  refs/heads/master a1b3182bd -> e789e9f3d


Use constant from RDF.xmlLiteral.

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

Branch: refs/heads/master
Commit: 46253a48f5e477ce0e504c60a02cafe1df946543
Parents: a1b3182
Author: Andy Seaborne <an...@apache.org>
Authored: Thu May 28 19:12:36 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu May 28 19:12:36 2015 +0100

----------------------------------------------------------------------
 jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderTriX.java | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/46253a48/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderTriX.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderTriX.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderTriX.java
index 30269e9..208a53a 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderTriX.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderTriX.java
@@ -36,7 +36,6 @@ import javax.xml.stream.* ;
 import org.apache.jena.atlas.web.ContentType ;
 import org.apache.jena.datatypes.RDFDatatype ;
 import org.apache.jena.datatypes.xsd.XSDDatatype ;
-import org.apache.jena.datatypes.xsd.impl.XMLLiteralType ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
 import org.apache.jena.graph.Triple ;
@@ -101,7 +100,7 @@ public class ReaderTriX implements ReaderRIOT {
     private static String nsRDF = RDF.getURI() ;
     private static String nsXSD = XSDDatatype.XSD ; // No "#"
     private static String nsXML0 = "http://www.w3.org/XML/1998/namespace" ;
-    private static String rdfXMLLiteral = XMLLiteralType.theXMLLiteralType.getURI() ;
+    private static String rdfXMLLiteral = RDF.xmlLiteral.getURI() ;
     
     enum State { OUTER, TRIX, GRAPH, TRIPLE }
     


[3/7] jena git commit: Bump version.

Posted by an...@apache.org.
Bump version.

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

Branch: refs/heads/master
Commit: 50c63f69b2577b10d6794c2c3c023b39e244fd4a
Parents: 6d44e24
Author: Andy Seaborne <an...@apache.org>
Authored: Thu May 28 19:13:07 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu May 28 19:13:07 2015 +0100

----------------------------------------------------------------------
 jena-fuseki1/soh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/50c63f69/jena-fuseki1/soh
----------------------------------------------------------------------
diff --git a/jena-fuseki1/soh b/jena-fuseki1/soh
index 4f6590d..9f6a619 100755
--- a/jena-fuseki1/soh
+++ b/jena-fuseki1/soh
@@ -35,7 +35,7 @@ require 'ostruct'
 #  Follow redirects => 301:  puts response["location"] # All headers are lowercase?
 
 SOH_NAME="SOH"
-SOH_VERSION="0.0.0"
+SOH_VERSION="0.0.2"
 
 $proxy = ENV['http_proxy'] ? URI.parse(ENV['http_proxy']) : OpenStruct.new  
 


[7/7] jena git commit: JENA-950 : Better error message.

Posted by an...@apache.org.
JENA-950 : Better error message.

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

Branch: refs/heads/master
Commit: e789e9f3d77d410cda0df03a270ff8d00948a375
Parents: 8c6e0b2
Author: Andy Seaborne <an...@apache.org>
Authored: Thu May 28 20:34:25 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu May 28 20:34:25 2015 +0100

----------------------------------------------------------------------
 .../apache/jena/query/text/TextIndexLucene.java | 20 ++++----------------
 .../query/text/TextIndexParseException.java     | 16 ++++++++++++----
 2 files changed, 16 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/e789e9f3/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
index 910411a..9c14c27 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
@@ -19,30 +19,18 @@
 package org.apache.jena.query.text ;
 
 import java.io.IOException ;
-import java.util.ArrayList ;
-import java.util.HashMap ;
-import java.util.List ;
-import java.util.Map ;
+import java.util.* ;
 import java.util.Map.Entry ;
 
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
-import org.apache.jena.query.QueryBuildException ;
 import org.apache.jena.sparql.util.NodeFactoryExtra ;
 import org.apache.lucene.analysis.Analyzer ;
 import org.apache.lucene.analysis.core.KeywordAnalyzer ;
 import org.apache.lucene.analysis.miscellaneous.PerFieldAnalyzerWrapper ;
 import org.apache.lucene.analysis.standard.StandardAnalyzer ;
-import org.apache.lucene.document.Document ;
-import org.apache.lucene.document.Field ;
-import org.apache.lucene.document.FieldType ;
-import org.apache.lucene.document.StringField ;
-import org.apache.lucene.document.TextField ;
-import org.apache.lucene.index.DirectoryReader ;
-import org.apache.lucene.index.IndexReader ;
-import org.apache.lucene.index.IndexWriter ;
-import org.apache.lucene.index.IndexWriterConfig ;
-import org.apache.lucene.index.Term;
+import org.apache.lucene.document.* ;
+import org.apache.lucene.index.* ;
 import org.apache.lucene.queryparser.classic.ParseException ;
 import org.apache.lucene.queryparser.classic.QueryParser ;
 import org.apache.lucene.queryparser.classic.QueryParserBase ;
@@ -318,7 +306,7 @@ public class TextIndexLucene implements TextIndex {
             return query$(indexReader, qs, limit) ;
         }
         catch (ParseException ex) {
-            throw new QueryBuildException(ex.getMessage()) ;
+            throw new TextIndexParseException(qs, ex.getMessage()) ;
         }
         catch (Exception ex) {
             throw new TextIndexException(ex) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/e789e9f3/jena-text/src/main/java/org/apache/jena/query/text/TextIndexParseException.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexParseException.java b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexParseException.java
index c869044..da32c03 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexParseException.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexParseException.java
@@ -23,10 +23,18 @@ import org.apache.jena.query.QueryParseException ;
 
 public class TextIndexParseException extends QueryParseException 
 {
-    public TextIndexParseException() { super(-1,-1) ; }
-    public TextIndexParseException(Throwable cause) { super(cause,-1,-1) ; }
-    public TextIndexParseException(String msg) { super(msg,-1,-1) ; }
-    public TextIndexParseException(String msg, Throwable cause) { super(msg, cause,-1,-1) ; }
+//    public TextIndexParseException(String textQuery) { super(message(textQuery, null),-1,-1) ; }
+//    public TextIndexParseException(String textQuery, Throwable cause) { super(message(textQuery,null), cause,-1,-1) ; }
+    public TextIndexParseException(String textQuery, String msg) { super(message(textQuery,msg),-1,-1) ; }
+    public TextIndexParseException(String textQuery, String msg, Throwable cause) { super(message(textQuery,msg), cause,-1,-1) ; }
+
+    private static String message(String textQuery, String errorMessage) {
+        // No need to include the textQuery as Lucene puts it in.
+        String msg = ( errorMessage == null )
+            ? "Text search parse error: text query '"+textQuery+"'"
+            : "Text search parse error:\n"+errorMessage ;
+        return msg ;
+    }
 
 }
 


[6/7] jena git commit: JENA-950 : Specific TextIdexParseException

Posted by an...@apache.org.
JENA-950 : Specific TextIdexParseException 

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

Branch: refs/heads/master
Commit: 8c6e0b2aa5314cccd701fd47b08fff588a679009
Parents: 10df2c3
Author: Andy Seaborne <an...@apache.org>
Authored: Thu May 28 20:21:03 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu May 28 20:21:03 2015 +0100

----------------------------------------------------------------------
 .../org/apache/jena/query/text/TextIndex.java   |  4 ++-
 .../apache/jena/query/text/TextIndexLucene.java |  8 +++--
 .../query/text/TextIndexParseException.java     | 32 ++++++++++++++++++++
 3 files changed, 41 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/8c6e0b2a/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java b/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
index 69efb31..fe19b7b 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
@@ -45,7 +45,9 @@ public interface TextIndex extends Closeable //, Transactional
     //** score
     // Need to have more complex results.
     
-    /** Access the index - limit if -1 for as many as possible */ 
+    /** Access the index - limit if -1 for as many as possible 
+     * Throw QueryParseException for syntax errors in the query string.
+     */ 
     List<Node> query(String qs, int limit) ;
     
     List<Node> query(String qs) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/8c6e0b2a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
index cd9ea2f..910411a 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
@@ -27,6 +27,7 @@ import java.util.Map.Entry ;
 
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
+import org.apache.jena.query.QueryBuildException ;
 import org.apache.jena.sparql.util.NodeFactoryExtra ;
 import org.apache.lucene.analysis.Analyzer ;
 import org.apache.lucene.analysis.core.KeywordAnalyzer ;
@@ -268,7 +269,7 @@ public class TextIndexLucene implements TextIndex {
         Query query = queryParser.parse(queryString) ;
         return query ;
     }
-
+    
     protected Query preParseQuery(String queryString, String primaryField, Analyzer analyzer) throws ParseException {
         return parseQuery(queryString, primaryField, analyzer);
     }
@@ -315,7 +316,10 @@ public class TextIndexLucene implements TextIndex {
         //** score
         try (IndexReader indexReader = DirectoryReader.open(directory)) {
             return query$(indexReader, qs, limit) ;
-        } 
+        }
+        catch (ParseException ex) {
+            throw new QueryBuildException(ex.getMessage()) ;
+        }
         catch (Exception ex) {
             throw new TextIndexException(ex) ;
         }

http://git-wip-us.apache.org/repos/asf/jena/blob/8c6e0b2a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexParseException.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexParseException.java b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexParseException.java
new file mode 100644
index 0000000..c869044
--- /dev/null
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexParseException.java
@@ -0,0 +1,32 @@
+/**
+ * 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.query.text;
+
+import org.apache.jena.query.QueryParseException ;
+
+
+public class TextIndexParseException extends QueryParseException 
+{
+    public TextIndexParseException() { super(-1,-1) ; }
+    public TextIndexParseException(Throwable cause) { super(cause,-1,-1) ; }
+    public TextIndexParseException(String msg) { super(msg,-1,-1) ; }
+    public TextIndexParseException(String msg, Throwable cause) { super(msg, cause,-1,-1) ; }
+
+}
+


[2/7] jena git commit: Make local code private.

Posted by an...@apache.org.
Make local code private.

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

Branch: refs/heads/master
Commit: 6d44e24802ac0948b091f931a965c4bb6e36bf38
Parents: 46253a4
Author: Andy Seaborne <an...@apache.org>
Authored: Thu May 28 19:12:55 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu May 28 19:12:55 2015 +0100

----------------------------------------------------------------------
 .../test/java/org/apache/jena/graph/test/NodeCreateUtils.java    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/6d44e248/jena-core/src/test/java/org/apache/jena/graph/test/NodeCreateUtils.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/test/NodeCreateUtils.java b/jena-core/src/test/java/org/apache/jena/graph/test/NodeCreateUtils.java
index d6ec208..4e97012 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/test/NodeCreateUtils.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/test/NodeCreateUtils.java
@@ -98,7 +98,7 @@ public class NodeCreateUtils
             ;
         }
 
-    public static String unEscape( String spelling )
+    private static String unEscape( String spelling )
         {
         if (spelling.indexOf( '\\' ) < 0) return spelling;
         StringBuilder result = new StringBuilder( spelling.length() );
@@ -115,7 +115,7 @@ public class NodeCreateUtils
         return result.toString();
         }
     
-    public static char unEscape( char ch )
+    private static char unEscape( char ch )
         {
         switch (ch)
         	{


[5/7] jena git commit: Tidy code

Posted by an...@apache.org.
Tidy code

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

Branch: refs/heads/master
Commit: 10df2c34904a024e3af0748f1af70d40d9fe18d0
Parents: 7f806f7
Author: Andy Seaborne <an...@apache.org>
Authored: Thu May 28 20:20:38 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu May 28 20:20:38 2015 +0100

----------------------------------------------------------------------
 .../apache/jena/query/text/TextIndexSolr.java   | 125 +++++++++----------
 .../org/apache/jena/query/text/TextQueryPF.java |  68 ++++++----
 2 files changed, 101 insertions(+), 92 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/10df2c34/jena-text/src/main/java/org/apache/jena/query/text/TextIndexSolr.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexSolr.java b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexSolr.java
index 54a3263..718d4c7 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexSolr.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexSolr.java
@@ -47,71 +47,69 @@ public class TextIndexSolr implements TextIndex
     private final EntityDefinition docDef ;
     private static final int MAX_N    = 10000 ;
 
-    public TextIndexSolr(SolrServer server, EntityDefinition def)
-    {
+    public TextIndexSolr(SolrServer server, EntityDefinition def) {
         this.solrServer = server ;
         this.docDef = def ;
     }
 
     @Override
     public void updateEntity(Entity entity) {
-        throw new RuntimeException("TextIndexSolr.updateEntity not implemented.");
+        throw new RuntimeException("TextIndexSolr.updateEntity not implemented.") ;
     }
 
     @Override
-    public void prepareCommit() { }
+    public void prepareCommit() {}
 
     @Override
     public void commit() {
         try {
-            solrServer.commit();
+            solrServer.commit() ;
         }
         catch (SolrServerException e) {
-            throw new TextIndexException(e);
+            throw new TextIndexException(e) ;
         }
         catch (IOException e) {
-            throw new TextIndexException(e);
+            throw new TextIndexException(e) ;
         }
     }
 
     @Override
     public void rollback() {
         try {
-            solrServer.rollback();
+            solrServer.rollback() ;
         }
         catch (SolrServerException e) {
-            throw new TextIndexException(e);
+            throw new TextIndexException(e) ;
         }
         catch (IOException e) {
-            throw new TextIndexException(e);
+            throw new TextIndexException(e) ;
         }
     }
 
     @Override
-    public void close()
-    { 
-        if ( solrServer != null ) 
+    public void close() {
+        if ( solrServer != null )
             solrServer.shutdown() ;
     }
 
     @Override
-    public void addEntity(Entity entity)
-    {
-        //log.info("Add entity: "+entity) ;
+    public void addEntity(Entity entity) {
+        // log.info("Add entity: "+entity) ;
         try {
             SolrInputDocument doc = solrDoc(entity) ;
             solrServer.add(doc) ;
-        } catch (Exception e) { exception(e) ; }
+        }
+        catch (Exception e) {
+            exception(e) ;
+        }
     }
 
-    private SolrInputDocument solrDoc(Entity entity)
-    {
+    private SolrInputDocument solrDoc(Entity entity) {
         SolrInputDocument doc = new SolrInputDocument() ;
         doc.addField(docDef.getEntityField(), entity.getId()) ;
 
         String graphField = docDef.getGraphField() ;
-        if ( graphField != null )
-        {
+        if ( graphField != null ) {
             doc.addField(graphField, entity.getGraph()) ;
         }
 
@@ -119,53 +117,50 @@ public class TextIndexSolr implements TextIndex
         // otherwise, if we have multiple fields, each successive
         // addition will replace the previous one and we are left
         // with only the last field indexed.
-        // see http://stackoverflow.com/questions/12183798/solrj-api-for-partial-document-update
-        // and https://svn.apache.org/repos/asf/lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
-        HashMap<String,Object> map = new HashMap<>();
+        // see
+        // http://stackoverflow.com/questions/12183798/solrj-api-for-partial-document-update
+        // and
+        // https://svn.apache.org/repos/asf/lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
+        HashMap<String, Object> map = new HashMap<>() ;
         for ( Entry<String, Object> e : entity.getMap().entrySet() ) {
-            map.put("add", e.getValue());
+            map.put("add", e.getValue()) ;
             doc.addField(e.getKey(), map) ;
         }
         return doc ;
     }
 
     @Override
-    public Map<String, Node> get(String uri)
-    {
+    public Map<String, Node> get(String uri) {
         String escaped = ClientUtils.escapeQueryChars(uri) ;
-        String qs = docDef.getEntityField()+":"+escaped ; 
-        SolrDocumentList solrResults = solrQuery(qs,1) ;
+        String qs = docDef.getEntityField() + ":" + escaped ;
+        SolrDocumentList solrResults = solrQuery(qs, 1) ;
 
         List<Map<String, Node>> records = process(solrResults) ;
         if ( records.size() == 0 )
             return null ;
         if ( records.size() > 1 )
-            log.warn("Multiple docs for one URI: "+uri) ;
+            log.warn("Multiple docs for one URI: " + uri) ;
         return records.get(0) ;
     }
 
-    private List<Map<String, Node>> process(SolrDocumentList solrResults)
-    {
+    private List<Map<String, Node>> process(SolrDocumentList solrResults) {
         List<Map<String, Node>> records = new ArrayList<>() ;
 
-        for ( SolrDocument sd : solrResults )
-        {
+        for ( SolrDocument sd : solrResults ) {
             Map<String, Node> record = new HashMap<>() ;
             String uriStr = (String)sd.getFieldValue(docDef.getEntityField()) ;
             Node entity = NodeFactory.createURI(uriStr) ;
             record.put(docDef.getEntityField(), entity) ;
 
-            for ( String f : docDef.fields() )
-            {
-                //log.info("Field: "+f) ;
+            for ( String f : docDef.fields() ) {
+                // log.info("Field: "+f) ;
                 Object obj = sd.getFieldValue(f) ;
-                //log.info("Value: "+obj) ;
+                // log.info("Value: "+obj) ;
                 if ( obj == null )
                     continue ;
                 // Multivalued -> array.
-                // Null means "not stored" or "not present" 
-                if ( obj instanceof List<?> )
-                {
+                // Null means "not stored" or "not present"
+                if ( obj instanceof List<? > ) {
                     @SuppressWarnings("unchecked")
                     List<String> vals = (List<String>)obj ;
                     continue ;
@@ -176,7 +171,7 @@ public class TextIndexSolr implements TextIndex
                 record.put(f, n) ;
             }
 
-            //log.info("Entity: "+uriStr) ;
+            // log.info("Entity: "+uriStr) ;
             records.add(record) ;
         }
         return records ;
@@ -186,17 +181,15 @@ public class TextIndexSolr implements TextIndex
     public List<Node> query(String qs) { return query(qs, 0) ; } 
 
     @Override
-    public List<Node> query(String qs, int limit)
-    {
+    public List<Node> query(String qs, int limit) {
         SolrDocumentList solrResults = solrQuery(qs, limit) ;
         List<Node> results = new ArrayList<>() ;
 
-        for ( SolrDocument sd : solrResults )
-        {
-            //** score
+        for ( SolrDocument sd : solrResults ) {
+            // ** score
             // 'score' field.
             String str = (String)sd.getFieldValue(docDef.getEntityField()) ;
-            //log.info("Entity: "+uriStr) ;
+            // log.info("Entity: "+uriStr) ;
             Node n = TextQueryFuncs.stringToNode(str) ;
             results.add(n) ;
         }
@@ -204,43 +197,45 @@ public class TextIndexSolr implements TextIndex
         if ( limit > 0 && results.size() > limit )
             results = results.subList(0, limit) ;
 
-        return results ; 
+        return results ;
     }
 
-    private SolrDocumentList solrQuery(String qs, int limit)
-    {
+    private SolrDocumentList solrQuery(String qs, int limit) {
         SolrQuery sq = new SolrQuery(qs) ;
-        //** score
-        //sq.setIncludeScore(true) ;
+        // ** score
+        // sq.setIncludeScore(true) ;
         if ( limit > 0 )
             sq.setRows(limit) ;
-        else 
-            sq.setRows(MAX_N) ;   // The Solr default is 10.
+        else
+            sq.setRows(MAX_N) ; // The Solr default is 10.
         try {
             // Set default field.
             sq.add(CommonParams.DF, docDef.getPrimaryField()) ;
-            QueryResponse rsp = solrServer.query( sq ) ;
-            SolrDocumentList docs = rsp.getResults();
+            QueryResponse rsp = solrServer.query(sq) ;
+            SolrDocumentList docs = rsp.getResults() ;
             return docs ;
-        } catch (SolrServerException e) { exception(e) ; return null ; }
+        }
+        catch (SolrServerException e) {
+            exception(e) ;
+            return null ;
+        }
     }
 
     @Override
-    public EntityDefinition getDocDef()
-    {
+    public EntityDefinition getDocDef() {
         return docDef ;
     }
 
-    private Node entryToNode(String v)
-    {
+    private Node entryToNode(String v) {
         // TEMP
         return NodeFactoryExtra.createLiteralNode(v, null, null) ;
     }
 
-    public SolrServer getServer() { return solrServer ; }
+    public SolrServer getServer() {
+        return solrServer ;
+    }
 
-    private static Void exception(Exception ex)
-    {
+    private static Void exception(Exception ex) {
         throw new TextIndexException(ex) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/10df2c34/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
index f74db79..5a48add 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
@@ -52,7 +52,7 @@ public class TextQueryPF extends PropertyFunctionBase {
      * Look for "//** score" in TextQueryPF, TextIndexLucene and TextIndexSolr
      */
 
-    private TextIndex     server        = null ;
+    private TextIndex     textIndex        = null ;
     private boolean       warningIssued = false ;
 
     public TextQueryPF() {}
@@ -65,25 +65,27 @@ public class TextQueryPF extends PropertyFunctionBase {
         //** score
         // Subject possibilities become ?foo or (?foo ?score) 
         DatasetGraph dsg = execCxt.getDataset() ;
-        server = chooseTextIndex(dsg) ;
-
+        textIndex = chooseTextIndex(dsg) ;
         if (!argSubject.isNode())
             throw new QueryBuildException("Subject is not a single node: " + argSubject) ;
 
         if (argObject.isList()) {
-            //extract of extra lang arg if present and if is usable.
-            //arg is removed from the list to avoid conflict with order and args length
-            langArg = extractArg("lang", argObject);
-
-            if (langArg != null && server.getDocDef().getLangField() == null)
-                log.warn("lang argument is ignored if langField not set in the index configuration");
-                
             List<Node> list = argObject.getArgList() ;
+
             if (list.size() == 0)
                 throw new QueryBuildException("Zero-length argument list") ;
 
             if (list.size() > 4)
                 throw new QueryBuildException("Too many arguments in list : " + list) ;
+            
+            
+            //extract of extra lang arg if present and if is usable.
+            //arg is removed from the list to avoid conflict with order and args length
+            langArg = extractArg("lang", list);
+
+            if (langArg != null && textIndex.getDocDef().getLangField() == null)
+                log.warn("lang argument is ignored if langField not set in the index configuration");
+            
         }
     }
 
@@ -109,10 +111,10 @@ public class TextQueryPF extends PropertyFunctionBase {
         return null ;
     }
 
-    private String extractArg(String prefix, PropFuncArg argObject) {
+    private String extractArg(String prefix, List<Node> objArgs) {
         String value = null;
         int pos = 0;
-        for (Node node : argObject.getArgList()) {
+        for (Node node : objArgs) {
             if (node.isLiteral()) {
                 String arg = node.getLiteral().toString();
                 if (arg.startsWith(prefix + ":")) {
@@ -123,7 +125,7 @@ public class TextQueryPF extends PropertyFunctionBase {
             pos++;
         }
         if (value != null)
-            argObject.getArgList().remove(pos);
+            objArgs.remove(pos);
 
         return value;
     }
@@ -131,7 +133,7 @@ public class TextQueryPF extends PropertyFunctionBase {
     @Override
     public QueryIterator exec(Binding binding, PropFuncArg argSubject, Node predicate, PropFuncArg argObject,
                               ExecutionContext execCxt) {
-        if (server == null) {
+        if (textIndex == null) {
             if (!warningIssued) {
                 Log.warn(getClass(), "No text index - no text search performed") ;
                 warningIssued = true ;
@@ -154,7 +156,7 @@ public class TextQueryPF extends PropertyFunctionBase {
             // Does not match
             return IterLib.noResults(execCxt) ;
 
-        StrMatch match = objectToStruct(argObject) ;
+        StrMatch match = objectToStruct(argObject, true) ;
         if (match == null) {
             // can't match
             return IterLib.noResults(execCxt) ;
@@ -195,7 +197,7 @@ public class TextQueryPF extends PropertyFunctionBase {
 
     private List<Node> query(String queryString, int limit, ExecutionContext execCxt) {
         // use the graph information in the text index if possible
-        if (server.getDocDef().getGraphField() != null
+        if (textIndex.getDocDef().getGraphField() != null
             && execCxt.getActiveGraph() instanceof GraphView) {
             GraphView activeGraph = (GraphView)execCxt.getActiveGraph() ;
             if (!Quad.isUnionGraph(activeGraph.getGraphName())) {
@@ -204,14 +206,14 @@ public class TextQueryPF extends PropertyFunctionBase {
                     ? TextQueryFuncs.graphNodeToString(activeGraph.getGraphName())
                     : Quad.defaultGraphNodeGenerated.getURI() ;
                 String escaped = QueryParserBase.escape(uri) ;
-                String qs2 = server.getDocDef().getGraphField() + ":" + escaped ;
+                String qs2 = textIndex.getDocDef().getGraphField() + ":" + escaped ;
                 queryString = "(" + queryString + ") AND " + qs2 ;
             }
         }
 
         //for language-based search extension
-        if (server.getDocDef().getLangField() != null) {
-            String field = server.getDocDef().getLangField();
+        if (textIndex.getDocDef().getLangField() != null) {
+            String field = textIndex.getDocDef().getLangField();
             if (langArg != null) {
                 String qs2 = !"none".equals(langArg)?
                         field + ":" + langArg : "-" + field + ":*";
@@ -222,16 +224,20 @@ public class TextQueryPF extends PropertyFunctionBase {
         Explain.explain(execCxt.getContext(), "Text query: "+queryString) ;
         if ( log.isDebugEnabled())
             log.debug("Text query: {} ({})", queryString,limit) ;
-        return server.query(queryString, limit) ;
+        return textIndex.query(queryString, limit) ;
     }
     
-    /** Deconstruct the node or list object argument and make a StrMatch */
-    private StrMatch objectToStruct(PropFuncArg argObject) {
-        EntityDefinition docDef = server.getDocDef() ;
+    /** Deconstruct the node or list object argument and make a StrMatch 
+     * The 'executionTime' flag indciates whether this is for a build time
+     * static check, or for runtime execution.
+     */
+    private StrMatch objectToStruct(PropFuncArg argObject, boolean executionTime) {
+        EntityDefinition docDef = textIndex.getDocDef() ;
         if (argObject.isNode()) {
             Node o = argObject.getArg() ;
             if (!o.isLiteral()) {
-                log.warn("Object to text query is not a literal") ;
+                if ( executionTime )
+                    log.warn("Object to text query is not a literal") ;
                 return null ;
             }
 
@@ -250,7 +256,7 @@ public class TextQueryPF extends PropertyFunctionBase {
             throw new TextIndexException("Change in object list size") ;
 
         Node predicate = null ;
-        String field = null ;       // Do not prepend the feild name - rely on default field
+        String field = null ;       // Do not prepend the field name - rely on default field
         int idx = 0 ;
         Node x = list.get(0) ;
         // Property?
@@ -258,7 +264,7 @@ public class TextQueryPF extends PropertyFunctionBase {
             predicate = x ;
             idx++ ;
             if (idx >= list.size())
-                throw new TextIndexException("Property specificied but no query string : " + list) ;
+                throw new TextIndexException("Property specificed but no query string : " + list) ;
             x = list.get(idx) ;
             field = docDef.getField(predicate) ;
             if (field == null) {
@@ -269,9 +275,11 @@ public class TextQueryPF extends PropertyFunctionBase {
 
         // String!
         if (!x.isLiteral()) {
-            log.warn("Text query string is not a literal " + list) ;
+            if ( executionTime )
+                log.warn("Text query string is not a literal " + list) ;
             return null ;
         }
+        
         if (x.getLiteralDatatype() != null && !x.getLiteralDatatype().equals(XSDDatatype.XSDstring)) {
             log.warn("Text query is not a string " + list) ;
             return null ;
@@ -286,6 +294,12 @@ public class TextQueryPF extends PropertyFunctionBase {
             // Limit?
             x = list.get(idx) ;
             idx++ ;
+            if ( ! x.isLiteral() ) {
+                if ( executionTime )
+                    log.warn("Text query limit is not an integer " + x) ;
+                return null ;
+            }
+            
             int v = NodeFactoryExtra.nodeToInt(x) ;
             limit = (v < 0) ? -1 : v ;
         }


[4/7] jena git commit: JENA-950 : Generate bad request on runtime parser errors.

Posted by an...@apache.org.
JENA-950 : Generate bad request on runtime parser errors.

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

Branch: refs/heads/master
Commit: 7f806f737f217e0d8c60e751b47409b3d1ffdd11
Parents: 50c63f6
Author: Andy Seaborne <an...@apache.org>
Authored: Thu May 28 20:20:03 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu May 28 20:20:03 2015 +0100

----------------------------------------------------------------------
 .../org/apache/jena/fuseki/servlets/SPARQL_Protocol.java    | 9 ++++-----
 .../java/org/apache/jena/fuseki/servlets/SPARQL_Query.java  | 9 +++++++--
 .../java/org/apache/jena/fuseki/servlets/SPARQL_Update.java | 7 ++++---
 3 files changed, 15 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/7f806f73/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
index 0be8b6c..f605060 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java
@@ -24,14 +24,14 @@ import static org.apache.jena.riot.web.HttpNames.paramNamedGraphURI ;
 import java.util.Arrays ;
 import java.util.Collections ;
 import java.util.List ;
-import java.util.function.Predicate;
+import java.util.function.Predicate ;
 
 import javax.servlet.http.HttpServletRequest ;
 
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.query.Query ;
-import org.apache.jena.query.QueryParseException ;
+import org.apache.jena.query.QueryException ;
 import org.apache.jena.sparql.core.DatasetDescription ;
 
 /** Support for the SPARQL protocol (SPARQL Query, SPARQL Update)
@@ -40,9 +40,8 @@ public  abstract class SPARQL_Protocol extends ActionSPARQL
 {
     protected SPARQL_Protocol() { super() ; }
 
-    protected static String messageForQPE(QueryParseException ex)
-    {
-        if ( ex.getMessage() != null )
+    protected static String messageForQueryException(QueryException ex)
+    { if ( ex.getMessage() != null )
             return ex.getMessage() ;
         if ( ex.getCause() != null )
             return Lib.classShortName(ex.getCause().getClass()) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/7f806f73/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
index 28212a8..c411989 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
@@ -239,7 +239,7 @@ public abstract class SPARQL_Query extends SPARQL_Protocol
         } catch (ActionErrorException ex) {
             throw ex ;
         } catch (QueryParseException ex) {
-            ServletOps.errorBadRequest("Parse error: \n" + queryString + "\n\r" + messageForQPE(ex)) ;
+            ServletOps.errorBadRequest("Parse error: \n" + queryString + "\n\r" + messageForQueryException(ex)) ;
         }
         // Should not happen.
         catch (QueryException ex) {
@@ -255,7 +255,12 @@ public abstract class SPARQL_Query extends SPARQL_Protocol
                 // Deals with exceptions itself.
                 sendResults(action, result, query.getPrologue()) ;
             }
-        } catch (QueryCancelledException ex) {
+        } 
+        catch (QueryParseException ex) {
+            // Late stage static error (e.g. bad fixed Lucene query string). 
+            ServletOps.errorBadRequest("Query parse error: \n" + queryString + "\n\r" + messageForQueryException(ex)) ;
+        }
+        catch (QueryCancelledException ex) {
             // Additional counter information.
             incCounter(action.getEndpoint().getCounters(), QueryTimeouts) ;
             throw ex ;

http://git-wip-us.apache.org/repos/asf/jena/blob/7f806f73/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Update.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Update.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Update.java
index 52ba1a5..1750a1d 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Update.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Update.java
@@ -51,6 +51,7 @@ import org.apache.jena.fuseki.FusekiLib ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
 import org.apache.jena.iri.IRI ;
+import org.apache.jena.query.QueryBuildException ;
 import org.apache.jena.query.QueryParseException ;
 import org.apache.jena.query.Syntax ;
 import org.apache.jena.riot.system.IRIResolver ;
@@ -210,7 +211,7 @@ public class SPARQL_Update extends SPARQL_Protocol
                 req = UpdateFactory.read(usingList, input, UpdateParseBase, Syntax.syntaxARQ);
             }
             catch (UpdateException ex) { ServletOps.errorBadRequest(ex.getMessage()) ; return ; }
-            catch (QueryParseException ex) { ServletOps.errorBadRequest(messageForQPE(ex)) ; return ; }
+            catch (QueryParseException ex) { ServletOps.errorBadRequest(messageForQueryException(ex)) ; return ; }
         }
         
         action.beginWrite() ;
@@ -224,10 +225,10 @@ public class SPARQL_Update extends SPARQL_Protocol
             action.abort() ;
             incCounter(action.getEndpoint().getCounters(), UpdateExecErrors) ;
             ServletOps.errorOccurred(ex.getMessage()) ;
-        } catch (QueryParseException ex) {
+        } catch (QueryParseException|QueryBuildException ex) {
             action.abort() ;
             // Counter inc'ed further out.
-            ServletOps.errorBadRequest(messageForQPE(ex)) ;
+            ServletOps.errorBadRequest(messageForQueryException(ex)) ;
         } catch (Throwable ex) {
             if ( ! ( ex instanceof ActionErrorException ) )
             {