Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 5847f6c

Browse filesBrowse files
committed
Merge pull request woorea#61 from jxiaobin/master
connector enhancement
2 parents db946ef + aaec076 commit 5847f6c
Copy full SHA for 5847f6c

7 files changed

+85-25Lines changed: 85 additions & 25 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎nova-model/src/main/java/com/woorea/openstack/nova/model/ServerForCreate.java‎

Copy file name to clipboardExpand all lines: nova-model/src/main/java/com/woorea/openstack/nova/model/ServerForCreate.java
+11-1Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ public void setName(String name) {
7373
@JsonProperty("availability_zone")
7474
private String availabilityZone;
7575

76+
@JsonProperty("config_drive")
77+
private boolean configDrive;
78+
7679
/**
7780
* @return the name
7881
*/
@@ -278,5 +281,12 @@ public String getAvailabilityZone() {
278281
public void setAvailabilityZone(String availabilityZone) {
279282
this.availabilityZone = availabilityZone;
280283
}
281-
284+
285+
public boolean isConfigDrive() {
286+
return configDrive;
287+
}
288+
289+
public void setConfigDrive(boolean configDrive) {
290+
this.configDrive = configDrive;
291+
}
282292
}
Collapse file

‎openstack-client-connectors/jersey-connector/pom.xml‎

Copy file name to clipboardExpand all lines: openstack-client-connectors/jersey-connector/pom.xml
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>com.woorea</groupId>
55
<artifactId>openstack-client-connectors</artifactId>
6-
<version>3.0.0-SNAPSHOT</version>
6+
<version>3.1.0-SNAPSHOT</version>
77
</parent>
88
<artifactId>jersey-connector</artifactId>
99
<name>OpenStack Jersey Connector</name>
@@ -20,4 +20,4 @@
2020
<version>1.9.12</version>
2121
</dependency>
2222
</dependencies>
23-
</project>
23+
</project>
Collapse file

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

Copy file name to clipboardExpand all lines: openstack-client-connectors/jersey-connector/src/main/java/com/woorea/openstack/connector/JerseyConnector.java
+14-19Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.List;
44
import java.util.Map;
55

6+
import javax.ws.rs.core.MultivaluedMap;
67
import javax.ws.rs.ext.ContextResolver;
78
import javax.ws.rs.ext.Provider;
89

@@ -14,13 +15,17 @@
1415
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
1516

1617
import com.sun.jersey.api.client.Client;
18+
import com.sun.jersey.api.client.ClientResponse;
1719
import com.sun.jersey.api.client.UniformInterfaceException;
1820
import com.sun.jersey.api.client.WebResource;
1921
import com.sun.jersey.api.client.config.ClientConfig;
2022
import com.sun.jersey.api.client.config.DefaultClientConfig;
2123
import com.sun.jersey.api.client.filter.LoggingFilter;
24+
import com.sun.jersey.client.impl.ClientRequestImpl;
25+
import com.sun.jersey.core.header.OutBoundHeaders;
2226
import com.woorea.openstack.base.client.OpenStackClientConnector;
2327
import com.woorea.openstack.base.client.OpenStackRequest;
28+
import com.woorea.openstack.base.client.OpenStackResponse;
2429
import com.woorea.openstack.base.client.OpenStackResponseException;
2530

2631
public class JerseyConnector implements OpenStackClientConnector {
@@ -35,46 +40,36 @@ public JerseyConnector() {
3540
}
3641

3742
@Override
38-
public <T> T execute(OpenStackRequest<T> request) {
43+
public <T> OpenStackResponse request(OpenStackRequest<T> request) {
3944
WebResource target = client.resource(request.endpoint()).path(request.path());
4045
for(Map.Entry<String, List<Object> > entry : request.queryParams().entrySet()) {
4146
for (Object o : entry.getValue()) {
4247
target = target.queryParam(entry.getKey(), String.valueOf(o));
4348
}
4449
}
4550
target.addFilter(new LoggingFilter());
46-
47-
WebResource.Builder tb = target.getRequestBuilder();
51+
MultivaluedMap<String, Object> headers = new OutBoundHeaders();
4852
for(Map.Entry<String, List<Object>> h : request.headers().entrySet()) {
49-
StringBuilder sb = new StringBuilder();
5053
for(Object v : h.getValue()) {
51-
sb.append(String.valueOf(v));
54+
headers.add(h.getKey(), v);
5255
}
53-
tb.header(h.getKey(), sb);
5456
}
5557
if(request.entity() != null && request.entity().getContentType() != null) {
56-
tb.header("Content-Type", request.entity().getContentType());
58+
headers.add("Content-Type", request.entity().getContentType());
5759
} else {
58-
tb.header("Content-Type", "application/json");
60+
headers.add("Content-Type", "application/json");
5961
}
6062
try {
63+
ClientResponse response = null;
6164
if (request.entity() != null && request.entity().getEntity() != null) {
62-
if (request.returnType() == null || Void.class == request.returnType()) {
63-
tb.method(request.method().name(), request.entity().getEntity());
64-
} else {
65-
return tb.method(request.method().name(), request.returnType(), request.entity().getEntity());
66-
}
65+
response = target.getHeadHandler().handle(new ClientRequestImpl(target.getURI(), request.method().name(), request.entity().getEntity(), headers));
6766
} else {
68-
if (request.returnType() == null || Void.class == request.returnType()) {
69-
tb.method(request.method().name());
70-
} else {
71-
return tb.method(request.method().name(), request.returnType());
72-
}
67+
response = target.getHeadHandler().handle(new ClientRequestImpl(target.getURI(), request.method().name(), null, headers));
7368
}
69+
return new JerseyResponse(response);
7470
} catch (UniformInterfaceException e) {
7571
throw new OpenStackResponseException(e.getResponse().getClientResponseStatus().getReasonPhrase(), e.getResponse().getStatus());
7672
}
77-
return null;
7873
}
7974

8075
@Provider
Collapse file
+49Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.woorea.openstack.connector;
2+
3+
import java.io.InputStream;
4+
import java.util.HashMap;
5+
import java.util.Map;
6+
7+
import com.sun.jersey.api.client.ClientResponse;
8+
import com.woorea.openstack.base.client.OpenStackResponse;
9+
10+
public class JerseyResponse implements OpenStackResponse {
11+
12+
private ClientResponse response;
13+
14+
public JerseyResponse(ClientResponse response) {
15+
this.response = response;
16+
}
17+
18+
@Override
19+
public <T> T getEntity(Class<T> returnType) {
20+
if(response.hasEntity() && returnType != null && Void.class != returnType) {
21+
return response.getEntity(returnType);
22+
} else {
23+
return null;
24+
}
25+
}
26+
27+
@Override
28+
public InputStream getInputStream() {
29+
if(response.hasEntity()) {
30+
return response.getEntityInputStream();
31+
} else {
32+
return null;
33+
}
34+
}
35+
36+
@Override
37+
public String header(String name) {
38+
return response.getHeaders().getFirst(name);
39+
}
40+
41+
@Override
42+
public Map<String, String> headers() {
43+
Map<String, String> headers = new HashMap<String, String>();
44+
for(String k : response.getHeaders().keySet()) {
45+
headers.put(k, response.getHeaders().getFirst(k));
46+
}
47+
return headers;
48+
}
49+
}
Collapse file

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

Copy file name to clipboardExpand all lines: openstack-client-connectors/jersey2-connector/src/main/java/com/woorea/openstack/connector/JaxRs20Connector.java
+7-1Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
import javax.ws.rs.client.Entity;
1010
import javax.ws.rs.client.Invocation;
1111
import javax.ws.rs.client.WebTarget;
12+
import javax.ws.rs.core.MediaType;
1213

1314
import org.glassfish.jersey.filter.LoggingFilter;
1415

16+
import com.woorea.openstack.base.client.HttpMethod;
1517
import com.woorea.openstack.base.client.OpenStackClientConnector;
1618
import com.woorea.openstack.base.client.OpenStackRequest;
1719
import com.woorea.openstack.base.client.OpenStackResponse;
@@ -49,7 +51,11 @@ public <T> OpenStackResponse request(OpenStackRequest<T> request) {
4951
if (entity != null) {
5052
return new JaxRs20Response(invocation.method(request.method().name(), entity));
5153
} else {
52-
return new JaxRs20Response(invocation.method(request.method().name()));
54+
if(HttpMethod.PUT == request.method()) {
55+
return new JaxRs20Response(invocation.method(request.method().name(), Entity.entity("", MediaType.APPLICATION_JSON)));
56+
} else {
57+
return new JaxRs20Response(invocation.method(request.method().name()));
58+
}
5359
}
5460
} catch (ClientErrorException e) {
5561
throw new OpenStackResponseException(e.getResponse()
Collapse file

‎openstack-client-connectors/pom.xml‎

Copy file name to clipboardExpand all lines: openstack-client-connectors/pom.xml
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<profile>
1414
<id>jersey</id>
1515
<activation>
16-
<activeByDefault>false</activeByDefault>
16+
<activeByDefault>true</activeByDefault>
1717
</activation>
1818
<modules>
1919
<module>jersey-connector</module>
Collapse file

‎openstack-client/src/main/java/com/woorea/openstack/base/client/OpenStackClient.java‎

Copy file name to clipboardExpand all lines: openstack-client/src/main/java/com/woorea/openstack/base/client/OpenStackClient.java
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public <T> OpenStackResponse request(OpenStackRequest<T> request) {
6464

6565
public <T> T execute(OpenStackRequest<T> request) {
6666
OpenStackResponse response = request(request);
67-
return request.returnType() != null ? response.getEntity(request.returnType()) : null;
67+
return (request.returnType() != null && request.returnType() != Void.class) ? response.getEntity(request.returnType()) : null;
6868
}
6969

7070
public void property(String property, String value) {

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.