GetMethod getServiceInstancesMethod = new GetMethod(serviceInstancesURI.toString());
getServiceInstancesMethod.setQueryString(pa);
HttpUtil.configureHttpMethod(getServiceInstancesMethod, target);
/* send request */
ServerStatus jobStatus = HttpUtil.executeMethod(getServiceInstancesMethod);
status.add(jobStatus);
if (!jobStatus.isOK())
return status;
JSONObject resp = jobStatus.getJsonData();
if (resp.has(CFProtocolConstants.V2_KEY_NEXT_URL) && !resp.isNull(CFProtocolConstants.V2_KEY_NEXT_URL))
serviceInstancesURI = targetURI.resolve(resp.getString(CFProtocolConstants.V2_KEY_NEXT_URL));
else
serviceInstancesURI = null;
JSONArray resources = resp.getJSONArray(CFProtocolConstants.V2_KEY_RESOURCES);
for (int i = 0; i < resources.length(); ++i) {
JSONObject serviceObj = resources.getJSONObject(i);
JSONObject serviceInstanceEntity = serviceObj.getJSONObject(CFProtocolConstants.V2_KEY_ENTITY);
JSONObject serviceEntity = serviceInstanceEntity.getJSONObject(CFProtocolConstants.V2_KEY_SERVICE_PLAN)//
.getJSONObject(CFProtocolConstants.V2_KEY_ENTITY);
String serviceGuid = serviceEntity.getString(CFProtocolConstants.V2_KEY_SERVICE_GUID);
GetServiceCommand getServiceCommand = new GetServiceCommand(target, serviceGuid);
/* get detailed info about the service */
jobStatus = (ServerStatus) getServiceCommand.doIt(); /* FIXME: unsafe type cast */
status.add(jobStatus);
if (!jobStatus.isOK())
return status;
JSONObject serviceResp = jobStatus.getJsonData();
boolean isBindable = serviceResp.getJSONObject(CFProtocolConstants.V2_KEY_ENTITY).getBoolean(CFProtocolConstants.V2_KEY_BINDABLE);
if (isBindable) {
Service s = new Service(serviceInstanceEntity.getString(CFProtocolConstants.V2_KEY_NAME));
services.put(s.toJSON());
}
}
} while (serviceInstancesURI != null);
response.put(ProtocolConstants.KEY_CHILDREN, services);
return new ServerStatus(Status.OK_STATUS, HttpServletResponse.SC_OK, response);
} catch (Exception e) {
String msg = NLS.bind("An error occured when performing operation {0}", commandName); //$NON-NLS-1$
logger.error(msg, e);
status.add(new ServerStatus(IStatus.ERROR, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, msg, e));
return status;
}
}