use of org.restlet.Response in project helix by apache.
the class TestHelixAdminScenariosRest method getUrl.
String getUrl(String url) throws IOException {
Reference resourceRef = new Reference(url);
Request request = new Request(Method.GET, resourceRef);
Response response = _gClient.handle(request);
Representation result = response.getEntity();
StringWriter sw = new StringWriter();
result.write(sw);
return sw.toString();
}
use of org.restlet.Response in project helix by apache.
the class TestHelixAdminScenariosRest method assertSuccessPostOperation.
static String assertSuccessPostOperation(String url, Map<String, String> jsonParameters, Map<String, String> extraForm, boolean hasException) throws IOException {
Reference resourceRef = new Reference(url);
int numRetries = 0;
while (numRetries <= MAX_RETRIES) {
Request request = new Request(Method.POST, resourceRef);
if (extraForm != null) {
String entity = JsonParameters.JSON_PARAMETERS + "=" + ClusterRepresentationUtil.ObjectToJson(jsonParameters);
for (String key : extraForm.keySet()) {
entity = entity + "&" + (key + "=" + extraForm.get(key));
}
request.setEntity(entity, MediaType.APPLICATION_ALL);
} else {
request.setEntity(JsonParameters.JSON_PARAMETERS + "=" + ClusterRepresentationUtil.ObjectToJson(jsonParameters), MediaType.APPLICATION_ALL);
}
Response response = _gClient.handle(request);
Representation result = response.getEntity();
StringWriter sw = new StringWriter();
if (result != null) {
result.write(sw);
}
int code = response.getStatus().getCode();
boolean successCode = code == Status.SUCCESS_NO_CONTENT.getCode() || code == Status.SUCCESS_OK.getCode();
if (successCode || numRetries == MAX_RETRIES) {
Assert.assertTrue(successCode);
Assert.assertTrue(hasException == sw.toString().toLowerCase().contains("exception"));
return sw.toString();
}
numRetries++;
}
Assert.fail("Request failed after all retries");
return null;
}
use of org.restlet.Response in project helix by apache.
the class RestAdminApplication method createInboundRoot.
@Override
public Restlet createInboundRoot() {
Router router = new Router(getContext());
router.setDefaultMatchingMode(Template.MODE_EQUALS);
router.attach("/clusters", ClustersResource.class);
router.attach("/clusters/{clusterName}", ClusterResource.class);
router.attach("/clusters/{clusterName}/resourceGroups", ResourceGroupsResource.class);
router.attach("/clusters/{clusterName}/resourceGroups/{resourceName}", ResourceGroupResource.class);
router.attach("/clusters/{clusterName}/workflows", WorkflowsResource.class);
router.attach("/clusters/{clusterName}/jobQueues", JobQueuesResource.class);
router.attach("/clusters/{clusterName}/jobQueues/{jobQueue}", JobQueueResource.class);
router.attach("/clusters/{clusterName}/jobQueues/{jobQueue}/{job}", JobResource.class);
router.attach("/clusters/{clusterName}/instances", InstancesResource.class);
router.attach("/clusters/{clusterName}/instances/{instanceName}", InstanceResource.class);
router.attach("/clusters/{clusterName}/instances/{instanceName}/currentState/{resourceName}", CurrentStateResource.class);
router.attach("/clusters/{clusterName}/instances/{instanceName}/statusUpdate/{resourceName}", StatusUpdateResource.class);
router.attach("/clusters/{clusterName}/instances/{instanceName}/errors/{resourceName}", ErrorResource.class);
router.attach("/clusters/{clusterName}/instances/{instanceName}/currentState", CurrentStatesResource.class);
router.attach("/clusters/{clusterName}/instances/{instanceName}/statusUpdate", StatusUpdatesResource.class);
router.attach("/clusters/{clusterName}/instances/{instanceName}/errors", ErrorsResource.class);
router.attach("/clusters/{clusterName}/resourceGroups/{resourceName}/idealState", IdealStateResource.class);
router.attach("/clusters/{clusterName}/resourceGroups/{resourceName}/externalView", ExternalViewResource.class);
router.attach("/clusters/{clusterName}/StateModelDefs/{modelName}", StateModelResource.class);
router.attach("/clusters/{clusterName}/StateModelDefs", StateModelsResource.class);
router.attach("/clusters/{clusterName}/SchedulerTasks", SchedulerTasksResource.class);
router.attach("/clusters/{clusterName}/Controller", ControllerResource.class);
router.attach("/clusters/{clusterName}/Controller/statusUpdates/{MessageType}/{MessageId}", ControllerStatusUpdateResource.class);
router.attach("/clusters/{clusterName}/configs", ConfigResource.class);
router.attach("/clusters/{clusterName}/configs/{scope}", ConfigResource.class);
router.attach("/clusters/{clusterName}/configs/{scope}/{scopeKey1}", ConfigResource.class);
router.attach("/clusters/{clusterName}/configs/{scope}/{scopeKey1}/{scopeKey2}", ConfigResource.class);
router.attach("/clusters/{clusterName}/constraints/{constraintType}", ConstraintResource.class);
router.attach("/clusters/{clusterName}/constraints/{constraintType}/{constraintId}", ConstraintResource.class);
router.attach("/zkPath", ZkPathResource.class).setMatchingMode(Template.MODE_STARTS_WITH);
router.attach("/zkChild", ZkChildResource.class).setMatchingMode(Template.MODE_STARTS_WITH);
Restlet mainpage = new Restlet() {
@Override
public void handle(Request request, Response response) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<html>");
stringBuilder.append("<head><title>Restlet Cluster Management page</title></head>");
stringBuilder.append("<body bgcolor=white>");
stringBuilder.append("<table border=\"0\">");
stringBuilder.append("<tr>");
stringBuilder.append("<td>");
stringBuilder.append("<h1>Rest cluster management interface V1</h1>");
stringBuilder.append("</td>");
stringBuilder.append("</tr>");
stringBuilder.append("</table>");
stringBuilder.append("</body>");
stringBuilder.append("</html>");
response.setEntity(new StringRepresentation(stringBuilder.toString(), MediaType.TEXT_HTML));
}
};
router.attach("", mainpage);
return router;
}
use of org.restlet.Response in project qi4j-sdk by Qi4j.
the class ContextResourceClient method onCommand.
public <T> ContextResourceClient onCommand(String relation, final ResultHandler<T> handler) {
final Class<T> resultType = (Class<T>) Classes.RAW_CLASS.map(((ParameterizedType) handler.getClass().getGenericInterfaces()[0]).getActualTypeArguments()[0]);
commandHandlers.put(relation, new ResponseHandler() {
@Override
public HandlerCommand handleResponse(Response response, ContextResourceClient client) {
T result = contextResourceFactory.readResponse(response, resultType);
return handler.handleResult(result, client);
}
});
return this;
}
use of org.restlet.Response in project qi4j-sdk by Qi4j.
the class ContextResourceClient method invokeCommand.
private HandlerCommand invokeCommand(Reference ref, Method method, Object requestObject, ResponseHandler responseHandler, ResponseHandler processingErrorHandler) {
Request request = new Request(method, ref);
if (requestObject == null)
requestObject = new EmptyRepresentation();
contextResourceFactory.writeRequest(request, requestObject);
contextResourceFactory.updateCommandRequest(request);
User user = request.getClientInfo().getUser();
if (user != null)
request.setChallengeResponse(new ChallengeResponse(ChallengeScheme.HTTP_BASIC, user.getName(), user.getSecret()));
Response response = new Response(request);
contextResourceFactory.getClient().handle(request, response);
try {
if (response.getStatus().isSuccess()) {
contextResourceFactory.updateCache(response);
if (responseHandler != null)
return responseHandler.handleResponse(response, this);
} else {
if (response.getStatus().equals(Status.CLIENT_ERROR_UNPROCESSABLE_ENTITY) && processingErrorHandler != null) {
return processingErrorHandler.handleResponse(response, this);
} else {
// TODO This needs to be expanded to allow custom handling of all the various cases
return errorHandler.handleResponse(response, this);
}
}
// No handler found
return null;
} finally {
try {
response.getEntity().exhaust();
} catch (Throwable e) {
// Ignore
}
}
}
Aggregations