Skip to content

Commit a0f077f

Browse files
authored
Fix #87 always add quotes to string params and escape (#88)
* Fix #87 always add quotes to string params and escape * replace with instanceof
1 parent a44d01a commit a0f077f

File tree

2 files changed

+16
-15
lines changed

2 files changed

+16
-15
lines changed

src/main/java/com/redislabs/redisgraph/impl/Utils.java

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,18 +31,10 @@ private Utils() {}
3131
* @return the input string surrounded with quotation marks, if needed
3232
*/
3333
private static String quoteString(String str){
34-
if(str.startsWith("\"") && str.endsWith("\"")){
35-
return str;
36-
}
37-
3834
StringBuilder sb = new StringBuilder(str.length()+2);
39-
if(str.charAt(0)!='"'){
40-
sb.append('"');
41-
}
42-
sb.append(str);
43-
if (str.charAt(str.length()-1)!= '"'){
44-
sb.append('"');
45-
}
35+
sb.append('"');
36+
sb.append(str.replace("\"","\\\""));
37+
sb.append('"');
4638
return sb.toString();
4739
}
4840

@@ -96,18 +88,19 @@ private static String arrayToString(Object[] arr) {
9688
private static String valueToString(Object value) {
9789
if(value == null)
9890
return "null";
99-
if(String.class.isInstance(value)){
91+
92+
if(value instanceof String){
10093
return quoteString((String) value);
10194
}
102-
if(Character.class.isInstance((value))){
95+
if(value instanceof Character){
10396
return quoteString(((Character)value).toString());
10497
}
10598

106-
if(value.getClass().isArray()){
99+
if(value instanceof Object[]){
107100
return arrayToString((Object[]) value);
108101

109102
}
110-
if(List.class.isInstance(value)){
103+
if(value instanceof List){
111104
List<Object> list = (List<Object>)value;
112105
return arrayToString(list.toArray());
113106
}

src/test/java/com/redislabs/redisgraph/impl/UtilsTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ public void prepareQuery() {
4040
@Test
4141
public void testParamsPrep(){
4242
Map<String, Object> params = new HashMap<>();
43+
params.put("param", "");
44+
Assert.assertEquals("CYPHER param=\"\" RETURN $param", Utils.prepareQuery("RETURN $param", params));
45+
params.put("param", "\"");
46+
Assert.assertEquals("CYPHER param=\"\\\"\" RETURN $param", Utils.prepareQuery("RETURN $param", params));
47+
params.put("param", "\"st");
48+
Assert.assertEquals("CYPHER param=\"\\\"st\" RETURN $param", Utils.prepareQuery("RETURN $param", params));
4349
params.put("param", 1);
4450
Assert.assertEquals("CYPHER param=1 RETURN $param", Utils.prepareQuery("RETURN $param", params));
4551
params.put("param", 2.3);
@@ -52,6 +58,8 @@ public void testParamsPrep(){
5258
Assert.assertEquals("CYPHER param=null RETURN $param", Utils.prepareQuery("RETURN $param", params));
5359
params.put("param", "str");
5460
Assert.assertEquals("CYPHER param=\"str\" RETURN $param", Utils.prepareQuery("RETURN $param", params));
61+
params.put("param", "s\"tr");
62+
Assert.assertEquals("CYPHER param=\"s\\\"tr\" RETURN $param", Utils.prepareQuery("RETURN $param", params));
5563
Integer arr[] = {1,2,3};
5664
params.put("param", arr);
5765
Assert.assertEquals("CYPHER param=[1, 2, 3] RETURN $param", Utils.prepareQuery("RETURN $param", params));

0 commit comments

Comments
 (0)