1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package edu.internet2.middleware.grouper.ws.samples.rest.membership;
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.WsGetMembershipsResults;
31 import edu.internet2.middleware.grouper.ws.coresoap.WsGroupLookup;
32 import edu.internet2.middleware.grouper.ws.coresoap.WsSubjectLookup;
33 import edu.internet2.middleware.grouper.ws.rest.WsRestResultProblem;
34 import edu.internet2.middleware.grouper.ws.rest.membership.WsRestGetMembershipsRequest;
35 import edu.internet2.middleware.grouper.ws.samples.types.WsSampleRest;
36 import edu.internet2.middleware.grouper.ws.samples.types.WsSampleRestType;
37 import edu.internet2.middleware.grouper.ws.util.RestClientSettings;
38
39
40
41
42 public class WsSampleGetMembershipsRest2 implements WsSampleRest {
43
44
45
46
47
48 public static void getMembershipsLite(WsSampleRestType wsSampleRestType) {
49
50 try {
51 HttpClient httpClient = new HttpClient();
52
53 DefaultHttpParams.getDefaultParams().setParameter(
54 HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(0, false));
55
56
57
58 String url = RestClientSettings.URL + "/" + RestClientSettings.VERSION
59 + "/memberships";
60 PostMethod method = new PostMethod(
61 url);
62
63 httpClient.getParams().setAuthenticationPreemptive(true);
64 Credentials defaultcreds = new UsernamePasswordCredentials(RestClientSettings.USER,
65 RestClientSettings.PASS);
66
67
68 method.setRequestHeader("Connection", "close");
69
70
71 httpClient.getState()
72 .setCredentials(new AuthScope(RestClientSettings.HOST, RestClientSettings.PORT), defaultcreds);
73
74
75
76 WsRestGetMembershipsRequest getMemberships = new WsRestGetMembershipsRequest();
77
78
79 WsGroupLookup[] groupLookups = new WsGroupLookup[1];
80 groupLookups[0] = new WsGroupLookup("aStem:aGroup", null);
81
82 getMemberships.setWsGroupLookups(groupLookups);
83
84 getMemberships.setWsSubjectLookups(new WsSubjectLookup[]{new WsSubjectLookup("test.subject.0", "jdbc", null)});
85
86 getMemberships.setMemberFilter("Immediate");
87 getMemberships.setFieldName("members");
88
89
90 String requestDocument = wsSampleRestType.getWsLiteRequestContentType().writeString(getMemberships);
91
92
93 String contentType = wsSampleRestType.getWsLiteRequestContentType().getContentType();
94
95 method.setRequestEntity(new StringRequestEntity(requestDocument, contentType, "UTF-8"));
96
97 httpClient.executeMethod(method);
98
99
100 Header successHeader = method.getResponseHeader("X-Grouper-success");
101 String successString = successHeader == null ? null : successHeader.getValue();
102 if (StringUtils.isBlank(successString)) {
103 throw new RuntimeException("Web service did not even respond!");
104 }
105 boolean success = "T".equals(successString);
106 String resultCode = method.getResponseHeader("X-Grouper-resultCode").getValue();
107
108 String response = RestClientSettings.responseBodyAsString(method);
109
110 Object result = wsSampleRestType
111 .getWsLiteResponseContentType().parseString(response);
112
113
114 if (result instanceof WsRestResultProblem) {
115 throw new RuntimeException(((WsRestResultProblem)result).getResultMetadata().getResultMessage());
116 }
117
118
119 WsGetMembershipsResults wsGetMembershipsResults = (WsGetMembershipsResults)result;
120
121 String resultMessage = wsGetMembershipsResults.getResultMetadata().getResultMessage();
122
123
124 if (!success) {
125 throw new RuntimeException("Bad response from web service: successString: " + successString + ", resultCode: " + resultCode
126 + ", " + resultMessage);
127 }
128
129 System.out.println("Server version: " + wsGetMembershipsResults.getResponseMetadata().getServerVersion()
130 + ", result code: " + resultCode
131 + ", result message: " + resultMessage );
132
133 } catch (Exception e) {
134 throw new RuntimeException(e);
135 }
136
137 }
138
139
140
141
142 public static void main(String[] args) {
143 getMembershipsLite(WsSampleRestType.json);
144 }
145
146
147
148
149 public void executeSample(WsSampleRestType wsSampleRestType) {
150 getMembershipsLite(wsSampleRestType);
151 }
152
153
154
155
156 public boolean validType(WsSampleRestType wsSampleRestType) {
157
158 return !WsSampleRestType.http_json.equals(wsSampleRestType);
159 }
160 }