Skip to content

Commit af6a511

Browse files
committed
server: Fix handling of null parameters
Handle null parameters as empty parameters map and let the endpoints handle execute handling of the empty parameters. Fixes #235 Signed-off-by: Bernd Hufmann <[email protected]>
1 parent d5de0fe commit af6a511

File tree

2 files changed

+32
-2
lines changed
  • trace-server
    • org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.tests/src/org/eclipse/tracecompass/incubator/trace/server/jersey/rest/core/tests/utils
    • org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/model/views

2 files changed

+32
-2
lines changed

trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.tests/src/org/eclipse/tracecompass/incubator/trace/server/jersey/rest/core/tests/utils/RestServerTest.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,21 @@ public abstract class RestServerTest {
118118
*/
119119
protected static final Comparator<DataProvider> DP_COMPARATOR = (p1, p2) -> p1.getName().compareTo(p2.getName());
120120

121+
/**
122+
* the Query parameters key for "parameters"
123+
*/
124+
protected static final String PARAMETER_KEY = "parameters";
125+
121126
/**
122127
* No parameter string
123128
*/
124129
protected static final String NO_PARAMETERS = "no-parameters";
125130

131+
/**
132+
* Parameters with null parameter value
133+
*/
134+
protected static final Map<String, Object> NULL_PARAMETERS = Collections.singletonMap(PARAMETER_KEY, null);
135+
126136
/**
127137
* Invalid experiment UUID
128138
*/
@@ -1131,12 +1141,26 @@ protected static void executePostErrorTests (UUID expUuid, IEndpointResolver res
11311141
}
11321142

11331143
if (hasParameters) {
1144+
// Missing parameters
1145+
endpoint = resolver.getEndpoint(expUuid.toString(), dpId);
1146+
try (Response response = endpoint.request().post(Entity.json(NULL_PARAMETERS))) {
1147+
assertNotNull(response);
1148+
assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
1149+
}
1150+
11341151
// Missing parameters
11351152
endpoint = resolver.getEndpoint(expUuid.toString(), dpId);
11361153
try (Response response = endpoint.request().post(Entity.json(new QueryParameters(parameters, Collections.emptyList())))) {
11371154
assertNotNull(response);
11381155
assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
11391156
}
1157+
} else {
1158+
// Test null parameters. Since endpoint doesn't require parameters, this should not cause an error reply
1159+
endpoint = resolver.getEndpoint(expUuid.toString(), dpId);
1160+
try (Response response = endpoint.request().post(Entity.json(NULL_PARAMETERS))) {
1161+
assertNotNull(response);
1162+
assertEquals(Status.OK.getStatusCode(), response.getStatus());
1163+
}
11401164
}
11411165

11421166
// Unknown data provider

trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/model/views/QueryParameters.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
* @author Simon Delisle
2727
*/
2828
public class QueryParameters {
29-
private @NonNull Map<String, Object> parameters;
29+
private @Nullable Map<String, Object> parameters;
3030
private List<Filter> filters;
3131

3232
/**
@@ -55,7 +55,13 @@ public QueryParameters(Map<String, Object> parameters, List<Filter> filters) {
5555
*/
5656
@Hidden
5757
public @NonNull Map<String, Object> getParameters() {
58-
return parameters;
58+
// Treat null parameters sent by the client as empty parameters map
59+
Map<String, Object> params = parameters;
60+
if (params == null) {
61+
params = new HashMap<>();
62+
parameters = params;
63+
}
64+
return params ;
5965
}
6066

6167
/**

0 commit comments

Comments
 (0)