1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package edu.internet2.middleware.grouper.ws.samples.rest.attribute;
17
18 import org.apache.commons.httpclient.Credentials;
19 import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
20 import org.apache.commons.httpclient.Header;
21 import org.apache.commons.httpclient.HttpClient;
22 import org.apache.commons.httpclient.UsernamePasswordCredentials;
23 import org.apache.commons.httpclient.auth.AuthScope;
24 import org.apache.commons.httpclient.methods.PostMethod;
25 import org.apache.commons.httpclient.methods.StringRequestEntity;
26 import org.apache.commons.httpclient.params.DefaultHttpParams;
27 import org.apache.commons.httpclient.params.HttpMethodParams;
28 import org.apache.commons.lang.StringUtils;
29
30 import edu.internet2.middleware.grouper.ws.coresoap.WsFindAttributeDefsResults;
31 import edu.internet2.middleware.grouper.ws.rest.WsRestResultProblem;
32 import edu.internet2.middleware.grouper.ws.rest.attribute.WsRestFindAttributeDefsLiteRequest;
33 import edu.internet2.middleware.grouper.ws.samples.types.WsSampleRest;
34 import edu.internet2.middleware.grouper.ws.samples.types.WsSampleRestType;
35 import edu.internet2.middleware.grouper.ws.util.RestClientSettings;
36
37
38
39
40 public class WsSampleFindAttributeDefsRestLite implements WsSampleRest {
41
42
43
44
45
46 public static void findAttributeDefsLite(WsSampleRestType wsSampleRestType) {
47
48 try {
49 HttpClient httpClient = new HttpClient();
50
51 DefaultHttpParams.getDefaultParams().setParameter(
52 HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(0, false));
53
54
55
56 PostMethod method = new PostMethod(
57 RestClientSettings.URL + "/" + RestClientSettings.VERSION
58 + "/attributeDefs");
59
60 httpClient.getParams().setAuthenticationPreemptive(true);
61 Credentials defaultcreds = new UsernamePasswordCredentials(RestClientSettings.USER,
62 RestClientSettings.PASS);
63
64
65 method.setRequestHeader("Connection", "close");
66
67
68 httpClient.getState()
69 .setCredentials(new AuthScope(RestClientSettings.HOST, RestClientSettings.PORT), defaultcreds);
70
71
72
73 WsRestFindAttributeDefsLiteRequest findAttributeDefsLite = new WsRestFindAttributeDefsLiteRequest();
74
75 findAttributeDefsLite.setScope("test:");
76 findAttributeDefsLite.setNameOfAttributeDef("test1:testAttributeDef_xhtml");
77
78
79 String requestDocument = wsSampleRestType.getWsLiteRequestContentType().writeString(findAttributeDefsLite);
80
81
82 String contentType = wsSampleRestType.getWsLiteRequestContentType().getContentType();
83
84 method.setRequestEntity(new StringRequestEntity(requestDocument, contentType, "UTF-8"));
85
86 httpClient.executeMethod(method);
87
88
89 Header successHeader = method.getResponseHeader("X-Grouper-success");
90 String successString = successHeader == null ? null : successHeader.getValue();
91 if (StringUtils.isBlank(successString)) {
92 throw new RuntimeException("Web service did not even respond!");
93 }
94 boolean success = "T".equals(successString);
95 String resultCode = method.getResponseHeader("X-Grouper-resultCode").getValue();
96
97 String response = RestClientSettings.responseBodyAsString(method);
98
99 Object resultObject = wsSampleRestType.getWsLiteResponseContentType().parseString(response);
100
101
102 if (resultObject instanceof WsRestResultProblem) {
103 throw new RuntimeException(((WsRestResultProblem)resultObject).getResultMetadata().getResultMessage());
104 }
105
106
107 WsFindAttributeDefsResults wsFindAttributeDefsResults = (WsFindAttributeDefsResults)resultObject;
108
109 String resultMessage = wsFindAttributeDefsResults.getResultMetadata().getResultMessage();
110
111
112 if (!success) {
113 throw new RuntimeException("Bad response from web service: resultCode: " + resultCode
114 + ", " + resultMessage);
115 }
116
117 System.out.println("Server version: " + wsFindAttributeDefsResults.getResponseMetadata().getServerVersion()
118 + ", result code: " + resultCode
119 + ", result message: " + resultMessage );
120
121 } catch (Exception e) {
122 throw new RuntimeException(e);
123 }
124
125 }
126
127
128
129
130 public static void main(String[] args) {
131 findAttributeDefsLite(WsSampleRestType.xhtml);
132 }
133
134
135
136
137 @Override
138 public void executeSample(WsSampleRestType wsSampleRestType) {
139 findAttributeDefsLite(wsSampleRestType);
140 }
141
142
143
144
145 @Override
146 public boolean validType(WsSampleRestType wsSampleRestType) {
147
148 return true;
149 }
150 }