Author: ogrisel
Date: Fri Aug 19 14:26:17 2011
New Revision: 1159646

URL: http://svn.apache.org/viewvc?rev=1159646&view=rev
Log:
STANBOL-314: EntityHub sparql search to remote sites does not escape fulltext 
search correctly

Added:
    incubator/stanbol/trunk/entityhub/query/clerezza/src/test/java/org/
    incubator/stanbol/trunk/entityhub/query/clerezza/src/test/java/org/apache/
    
incubator/stanbol/trunk/entityhub/query/clerezza/src/test/java/org/apache/stanbol/
    
incubator/stanbol/trunk/entityhub/query/clerezza/src/test/java/org/apache/stanbol/entityhub/
    
incubator/stanbol/trunk/entityhub/query/clerezza/src/test/java/org/apache/stanbol/entityhub/query/
    
incubator/stanbol/trunk/entityhub/query/clerezza/src/test/java/org/apache/stanbol/entityhub/query/clerezza/
    
incubator/stanbol/trunk/entityhub/query/clerezza/src/test/java/org/apache/stanbol/entityhub/query/clerezza/SparqlQueryUtilsTest.java
Modified:
    
incubator/stanbol/trunk/entityhub/query/clerezza/src/main/java/org/apache/stanbol/entityhub/query/clerezza/SparqlQueryUtils.java

Modified: 
incubator/stanbol/trunk/entityhub/query/clerezza/src/main/java/org/apache/stanbol/entityhub/query/clerezza/SparqlQueryUtils.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/query/clerezza/src/main/java/org/apache/stanbol/entityhub/query/clerezza/SparqlQueryUtils.java?rev=1159646&r1=1159645&r2=1159646&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/entityhub/query/clerezza/src/main/java/org/apache/stanbol/entityhub/query/clerezza/SparqlQueryUtils.java
 (original)
+++ 
incubator/stanbol/trunk/entityhub/query/clerezza/src/main/java/org/apache/stanbol/entityhub/query/clerezza/SparqlQueryUtils.java
 Fri Aug 19 14:26:17 2011
@@ -667,7 +667,7 @@ public final class SparqlQueryUtils {
      * @param constraints the as returned by {@link TextConstraint#getTexts()}
      * @return the full text query string 
      */
-    private static String createFullTextQueryString(Collection<String> 
constraints) {
+    protected static String createFullTextQueryString(Collection<String> 
constraints) {
         StringBuilder textQuery = new StringBuilder();
         boolean firstText = true;
         for(String constraintText : constraints){
@@ -693,10 +693,13 @@ public final class SparqlQueryUtils {
                         } else {
                             textQuery.append(" AND ");
                         }
-                        textQuery.append('"').append(word).append('"');
+                        // we need to double the backslashes because of 
replaceAll takes a regular expression
+                        // as input.
+                        String escapedWord = word.replaceAll("\\\"", "\\\\\"");
+                        textQuery.append('"').append(escapedWord).append('"');
                     }
                 }
-                if(words.length>1){
+                if (words.length > 1) {
                     textQuery.append(')');
                 }
             } //end if not null and not empty

Added: 
incubator/stanbol/trunk/entityhub/query/clerezza/src/test/java/org/apache/stanbol/entityhub/query/clerezza/SparqlQueryUtilsTest.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/query/clerezza/src/test/java/org/apache/stanbol/entityhub/query/clerezza/SparqlQueryUtilsTest.java?rev=1159646&view=auto
==============================================================================
--- 
incubator/stanbol/trunk/entityhub/query/clerezza/src/test/java/org/apache/stanbol/entityhub/query/clerezza/SparqlQueryUtilsTest.java
 (added)
+++ 
incubator/stanbol/trunk/entityhub/query/clerezza/src/test/java/org/apache/stanbol/entityhub/query/clerezza/SparqlQueryUtilsTest.java
 Fri Aug 19 14:26:17 2011
@@ -0,0 +1,25 @@
+package org.apache.stanbol.entityhub.query.clerezza;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.junit.Test;
+
+public class SparqlQueryUtilsTest {
+
+    @Test
+    public void testCreateFullTextQueryString() {
+        List<String> keywords = Arrays.asList("test", "keyword");
+        assertEquals("\"test\" OR \"keyword\"", 
SparqlQueryUtils.createFullTextQueryString(keywords));
+
+        keywords = Arrays.asList("test keyword");
+        assertEquals("(\"test\" AND \"keyword\")", 
SparqlQueryUtils.createFullTextQueryString(keywords));
+
+        keywords = Arrays.asList("'test' \"keyword\"");
+        assertEquals("(\"'test'\" AND \"\\\"keyword\\\"\")",
+            SparqlQueryUtils.createFullTextQueryString(keywords));
+    }
+
+}


Reply via email to