Skip to content

Commit 1245b64

Browse files
gdaleckaFylmTM
authored andcommitted
Params with comment only (#29)
* return empty parameters list if no json node read * parameters panel - ignore anything, that is not a map * Validate only for nullines and emptyness * paramters service test fixes
1 parent f028ef8 commit 1245b64

File tree

3 files changed

+78
-2
lines changed

3 files changed

+78
-2
lines changed

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/console/log/LogPanel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public void metadataRefreshFailed(DataSourceApi nodeDataSource, Exception except
9191

9292
messageBus.connect().subscribe(QueryParametersRetrievalErrorEvent.QUERY_PARAMETERS_RETRIEVAL_ERROR_EVENT_TOPIC,
9393
(exception, editor) -> {
94-
error(PARAMS_ERROR_COMMON_MSG);
94+
error(String.format("%s ", PARAMS_ERROR_COMMON_MSG));
9595
printException(exception);
9696
});
9797
}

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/console/params/ParametersService.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import com.fasterxml.jackson.core.JsonFactory;
44
import com.fasterxml.jackson.core.JsonParser;
55
import com.fasterxml.jackson.core.type.TypeReference;
6+
import com.fasterxml.jackson.databind.JsonNode;
67
import com.fasterxml.jackson.databind.ObjectMapper;
8+
import com.google.common.base.Throwables;
79
import org.apache.commons.lang.StringUtils;
810

911
import java.util.Collections;
@@ -30,10 +32,28 @@ public void registerParametersProvider(final ParametersProvider parametersProvid
3032
}
3133

3234
public Map<String, Object> getParameters() throws Exception {
33-
if (parametersProvider == null || StringUtils.isBlank(parametersProvider.getParametersJson())) {
35+
if (!isValidParametersMap(parametersProvider.getParametersJson())) {
3436
return Collections.emptyMap();
3537
}
3638
return MAPPER.readValue(parametersProvider.getParametersJson(), new TypeReference<Map<String, Object>>() { });
3739
}
3840

41+
private static boolean isValidParametersMap(String parametersJson) {
42+
try {
43+
if (parametersJson == null || StringUtils.isBlank(parametersJson)) {
44+
return false;
45+
}
46+
47+
JsonParser parser = FACTORY.createParser(parametersJson);
48+
JsonNode node = MAPPER.readTree(parser);
49+
if (node == null) {
50+
return false;
51+
}
52+
} catch (Exception e) {
53+
throw Throwables.propagate(e);
54+
}
55+
56+
return true;
57+
}
58+
3959
}

ui/jetbrains/src/test/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/console/params/ParametersServiceTest.java

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.params;
22

3+
import com.fasterxml.jackson.databind.JsonMappingException;
34
import org.junit.Before;
45
import org.junit.Test;
56

@@ -39,6 +40,14 @@ public void testParsingEmptyJsonObject() throws Exception {
3940
assertThat(result.isEmpty()).isTrue();
4041
}
4142

43+
@Test
44+
public void testParsingEmptyParameters() throws Exception {
45+
parametersProvider.setParametersJson("");
46+
Map<String, Object> result = parametersService.getParameters();
47+
48+
assertThat(result.isEmpty()).isTrue();
49+
}
50+
4251
@Test
4352
public void testParsingStringParameter() throws Exception {
4453
parametersProvider.setParametersJson("{\"name\": \"Anna\"}");
@@ -83,4 +92,51 @@ public void testParsingMultipleParameters() throws Exception {
8392
assertThat(result.get("lastName").toString()).isEqualTo("Johnson");
8493
}
8594

95+
@Test
96+
public void testParsingCommentOnly() throws Exception {
97+
parametersProvider.setParametersJson("// Provide query parameters in JSON format here:");
98+
Map<String, Object> result = parametersService.getParameters();
99+
100+
assertThat(result.isEmpty()).isTrue();
101+
}
102+
103+
104+
@Test
105+
public void testParsingCommentWithParameter() throws Exception {
106+
parametersProvider.setParametersJson("// Provide query parameters in JSON format here:\n{\"name\": \"Eva\"}");
107+
Map<String, Object> result = parametersService.getParameters();
108+
109+
assertThat(result.size() == 1).isTrue();
110+
}
111+
112+
@Test(expected = Exception.class)
113+
public void testParsingJsonArray() throws Exception {
114+
parametersProvider.setParametersJson("// Provide query parameters in JSON format here:\n[\"item1\",\"item2\"]");
115+
parametersService.getParameters();
116+
}
117+
118+
@Test(expected = JsonMappingException.class)
119+
public void testParsingNumber() throws Exception {
120+
parametersProvider.setParametersJson("1");
121+
parametersService.getParameters();
122+
}
123+
124+
@Test(expected = JsonMappingException.class)
125+
public void testParsingString() throws Exception {
126+
parametersProvider.setParametersJson("\"abc\"");
127+
parametersService.getParameters();
128+
}
129+
130+
@Test(expected = JsonMappingException.class)
131+
public void testParsingUnwrappedParameter() throws Exception {
132+
parametersProvider.setParametersJson("\"param1\":\"val1\"");
133+
parametersService.getParameters();
134+
}
135+
136+
@Test(expected = Exception.class)
137+
public void testParsingParamWithObjAccessor() throws Exception {
138+
parametersProvider.setParametersJson("{\"param1\": person[\"name\"]}");
139+
parametersService.getParameters();
140+
}
141+
86142
}

0 commit comments

Comments
 (0)