You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2013/02/11 21:26:29 UTC

svn commit: r1444947 - /manifoldcf/trunk/connectors/elasticsearch/connector/src/main/java/org/apache/manifoldcf/agents/output/elasticsearch/ElasticSearchIndex.java

Author: kwright
Date: Mon Feb 11 20:26:28 2013
New Revision: 1444947

URL: http://svn.apache.org/r1444947
Log:
Escape appropriate values.  Part of CONNECTORS-641.

Modified:
    manifoldcf/trunk/connectors/elasticsearch/connector/src/main/java/org/apache/manifoldcf/agents/output/elasticsearch/ElasticSearchIndex.java

Modified: manifoldcf/trunk/connectors/elasticsearch/connector/src/main/java/org/apache/manifoldcf/agents/output/elasticsearch/ElasticSearchIndex.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/elasticsearch/connector/src/main/java/org/apache/manifoldcf/agents/output/elasticsearch/ElasticSearchIndex.java?rev=1444947&r1=1444946&r2=1444947&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/elasticsearch/connector/src/main/java/org/apache/manifoldcf/agents/output/elasticsearch/ElasticSearchIndex.java (original)
+++ manifoldcf/trunk/connectors/elasticsearch/connector/src/main/java/org/apache/manifoldcf/agents/output/elasticsearch/ElasticSearchIndex.java Mon Feb 11 20:26:28 2013
@@ -97,7 +97,7 @@ public class ElasticSearchIndex extends 
           if(fieldValues.length>1){
             for(int j=0; j<fieldValues.length; j++){
               String fieldValue = fieldValues[j];
-              pw.print("\""+fieldName+"\" : \""+fieldValue+"\"");
+              pw.print(jsonStringEscape(fieldName)+" : "+jsonStringEscape(fieldValue));
               if(j<fieldValues.length-1){
                 pw.print(",");
               }
@@ -105,7 +105,7 @@ public class ElasticSearchIndex extends 
             }
           } else if(fieldValues.length==1){
             String fieldValue = fieldValues[0];
-            pw.print("\""+fieldName+"\" : \""+fieldValue+"\"");
+            pw.print(jsonStringEscape(fieldName)+" : "+jsonStringEscape(fieldValue));
             if(i.hasNext()){
               pw.print(",");
             }
@@ -152,6 +152,20 @@ public class ElasticSearchIndex extends 
 
   }
 
+  protected static String jsonStringEscape(String value)
+  {
+    StringBuilder sb = new StringBuilder("\"");
+    for (int i = 0; i < value.length(); i++)
+    {
+      char x = value.charAt(i);
+      if (x == '\"' || x == '\\' || x == '/')
+        sb.append('\\');
+      sb.append(x);
+    }
+    sb.append("\"");
+    return sb.toString();
+  }
+  
   public ElasticSearchIndex(HttpClient client, ElasticSearchConfig config)
   {
     super(config, client);