5b01660f9fce4cdc05dafcc31b011a8d7acf2be5
[so/libs.git] /
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  * Licensed under the Apache License, Version 2.0 (the "License");\r
4  * you may not use this file except in compliance with the License.\r
5  * You may obtain a copy of the License at\r
6  *\r
7  *      http://www.apache.org/licenses/LICENSE-2.0\r
8  *\r
9  * Unless required by applicable law or agreed to in writing, software\r
10  * distributed under the License is distributed on an "AS IS" BASIS,\r
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
12  * See the License for the specific language governing permissions and\r
13  * limitations under the License.\r
14  * ============LICENSE_END=========================================================\r
15  */\r
16 \r
17 package com.woorea.openstack.connector;\r
18 \r
19 /*\r
20  * Modifications copyright (c) 2017 AT&T Intellectual Property\r
21  */\r
22 \r
23 import java.io.InputStream;\r
24 import java.util.HashMap;\r
25 import java.util.Map;\r
26 \r
27 import com.sun.jersey.api.client.ClientResponse;\r
28 import com.woorea.openstack.base.client.OpenStackResponse;\r
29 import com.woorea.openstack.base.client.OpenStackResponseException;\r
30 \r
31 public class JerseyResponse implements OpenStackResponse {\r
32 \r
33     private ClientResponse response;\r
34 \r
35     public JerseyResponse(ClientResponse response) {\r
36         this.response = response;\r
37     }\r
38 \r
39     @Override\r
40     public <T> T getEntity(Class<T> returnType) {\r
41         if(response.getStatus() >= 400) {\r
42             throw new OpenStackResponseException(response.getClientResponseStatus().getReasonPhrase(), \r
43                     response.getStatus(), this);\r
44         }\r
45         if(response.hasEntity() && returnType != null && Void.class != returnType) {\r
46             return response.getEntity(returnType);\r
47         } else {\r
48             return null;\r
49         }\r
50     }\r
51 \r
52     @Override\r
53     public <T> T getErrorEntity(Class<T> returnType) {\r
54         if(response.getStatus() >= 400 && response.hasEntity()) {\r
55             return response.getEntity(returnType);\r
56         }\r
57         return null;\r
58     }\r
59 \r
60     @Override\r
61     public InputStream getInputStream() {\r
62         if(response.hasEntity()) {\r
63             return response.getEntityInputStream();\r
64         } else {\r
65             return null;\r
66         }\r
67     }\r
68 \r
69     @Override\r
70     public String header(String name) {\r
71         return response.getHeaders().getFirst(name);\r
72     }\r
73 \r
74     @Override\r
75     public Map<String, String> headers() {\r
76         Map<String, String> headers = new HashMap<>();\r
77         for(String k : response.getHeaders().keySet()) {\r
78             headers.put(k, response.getHeaders().getFirst(k));\r
79         }\r
80         return headers;\r
81     }\r
82 }\r