Skip to content

Commit 537fe1c

Browse files
committed
Merge pull request woorea#57 from hhamalai/master
Client connectors: support for multiple values for query parameter keys
2 parents 13c243a + de7375b commit 537fe1c

File tree

4 files changed

+24
-9
lines changed

4 files changed

+24
-9
lines changed

openstack-client-connectors/jersey-connector/src/main/java/com/woorea/openstack/connector/JerseyConnector.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,10 @@ public JerseyConnector() {
3737
@Override
3838
public <T> T execute(OpenStackRequest<T> request) {
3939
WebResource target = client.resource(request.endpoint()).path(request.path());
40-
for(Map.Entry<String, Object> entry : request.queryParams().entrySet()) {
41-
target = target.queryParam(entry.getKey(), String.valueOf(entry.getValue()));
40+
for(Map.Entry<String, List<Object> > entry : request.queryParams().entrySet()) {
41+
for (Object o : entry.getValue()) {
42+
target = target.queryParam(entry.getKey(), String.valueOf(o));
43+
}
4244
}
4345
target.addFilter(new LoggingFilter());
4446

openstack-client-connectors/jersey2-connector/src/main/java/com/woorea/openstack/connector/JaxRs20Connector.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@ public class JaxRs20Connector implements OpenStackClientConnector {
2525
public <T> OpenStackResponse request(OpenStackRequest<T> request) {
2626
WebTarget target = client.target(request.endpoint()).path(request.path());
2727

28-
for(Map.Entry<String, Object> entry : request.queryParams().entrySet()) {
29-
target = target.queryParam(entry.getKey(), entry.getValue());
28+
for(Map.Entry<String, List<Object> > entry : request.queryParams().entrySet()) {
29+
for (Object o : entry.getValue()) {
30+
target = target.queryParam(entry.getKey(), o);
31+
}
3032
}
3133

3234
target.register(new LoggingFilter(Logger.getLogger("os"), 10000));

openstack-client-connectors/resteasy-connector/src/main/java/com/woorea/openstack/connector/RESTEasyConnector.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,10 @@ public <T> OpenStackResponse request(OpenStackRequest<T> request) {
6868
ClientRequest client = new ClientRequest(UriBuilder.fromUri(request.endpoint() + "/" + request.path()),
6969
ClientRequest.getDefaultExecutor(), providerFactory);
7070

71-
for(Map.Entry<String, Object> entry : request.queryParams().entrySet()) {
72-
client = client.queryParameter(entry.getKey(), String.valueOf(entry.getValue()));
71+
for(Map.Entry<String, List<Object> > entry : request.queryParams().entrySet()) {
72+
for (Object o : entry.getValue()) {
73+
client = client.queryParameter(entry.getKey(), String.valueOf(o));
74+
}
7375
}
7476

7577
for (Entry<String, List<Object>> h : request.headers().entrySet()) {

openstack-client/src/main/java/com/woorea/openstack/base/client/OpenStackRequest.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.HashMap;
55
import java.util.LinkedHashMap;
66
import java.util.List;
7+
import java.util.ArrayList;
78
import java.util.Map;
89

910
public class OpenStackRequest<R> {
@@ -107,14 +108,22 @@ public String toString() {
107108
+ entity + ", returnType=" + returnType + "]";
108109
}
109110

110-
private Map<String, Object> queryParams = new LinkedHashMap<String, Object>();
111+
private Map<String, List<Object> > queryParams = new LinkedHashMap<String, List<Object> >();
111112

112-
public Map<String, Object> queryParams() {
113+
public Map<String, List<Object> > queryParams() {
113114
return queryParams;
114115
}
115116

116117
public OpenStackRequest<R> queryParam(String key, Object value) {
117-
queryParams.put(key, value);
118+
if (queryParams.containsKey(key)) {
119+
List<Object> values = queryParams.get(key);
120+
values.add(value);
121+
} else {
122+
List<Object> values = new ArrayList<Object>();
123+
values.add(value);
124+
queryParams.put(key, values);
125+
}
126+
118127
return this;
119128
}
120129

0 commit comments

Comments
 (0)