use of org.qi4j.library.rest.common.Resource in project qi4j-sdk by Qi4j.
the class ContextResourceClientFactoryTest method testQueryListAndCommand.
@Test
public void testQueryListAndCommand() {
// START SNIPPET: query-list-and-command
crc.onResource(new ResultHandler<Resource>() {
@Override
public HandlerCommand handleResult(Resource result, ContextResourceClient client) {
return query("commandwithvalue");
}
}).onQuery("commandwithvalue", new ResultHandler<Links>() {
@Override
public HandlerCommand handleResult(Links result, ContextResourceClient client) {
Link link = LinksUtil.withId("right", result);
return command(link);
}
}).onCommand("commandwithvalue", new ResponseHandler() {
@Override
public HandlerCommand handleResponse(Response response, ContextResourceClient client) {
System.out.println("Done");
return null;
}
});
crc.start();
// END SNIPPET: query-list-and-command
}
use of org.qi4j.library.rest.common.Resource in project qi4j-sdk by Qi4j.
the class ContinuousIntegrationTest method testRunBuildProgressive.
@Test
public void testRunBuildProgressive() {
// START SNIPPET: query-list-and-command-progressive
crc.onResource(new ResultHandler<Resource>() {
@Override
public HandlerCommand handleResult(Resource result, ContextResourceClient client) {
return query("runbuild").onSuccess(new ResultHandler<Links>() {
@Override
public HandlerCommand handleResult(Links result, ContextResourceClient client) {
Link link = LinksUtil.withId("any", result);
return command(link).onSuccess(new ResponseHandler() {
@Override
public HandlerCommand handleResponse(Response response, ContextResourceClient client) {
System.out.println("Done");
return null;
}
});
}
});
}
});
crc.start();
// END SNIPPET: query-list-and-command-progressive
}
use of org.qi4j.library.rest.common.Resource in project qi4j-sdk by Qi4j.
the class ContextResourceClientFactoryTest method testQueryListAndCommandProgressive.
@Test
public void testQueryListAndCommandProgressive() {
// START SNIPPET: query-list-and-command-progressive
crc.onResource(new ResultHandler<Resource>() {
@Override
public HandlerCommand handleResult(Resource result, ContextResourceClient client) {
return query("commandwithvalue").onSuccess(new ResultHandler<Links>() {
@Override
public HandlerCommand handleResult(Links result, ContextResourceClient client) {
Link link = LinksUtil.withId("right", result);
return command(link).onSuccess(new ResponseHandler() {
@Override
public HandlerCommand handleResponse(Response response, ContextResourceClient client) {
System.out.println("Done");
return null;
}
});
}
});
}
});
crc.start();
// END SNIPPET: query-list-and-command-progressive
}
use of org.qi4j.library.rest.common.Resource in project qi4j-sdk by Qi4j.
the class ContinuousIntegrationTest method testRunBuild.
@Test
public void testRunBuild() {
// START SNIPPET: query-list-and-command
crc.onResource(new ResultHandler<Resource>() {
@Override
public HandlerCommand handleResult(Resource result, ContextResourceClient client) {
return query("runbuild");
}
}).onQuery("runbuild", new ResultHandler<Links>() {
@Override
public HandlerCommand handleResult(Links result, ContextResourceClient client) {
Link link = LinksUtil.withId("any", result);
return command(link);
}
}).onCommand("runbuild", new ResponseHandler() {
@Override
public HandlerCommand handleResponse(Response response, ContextResourceClient client) {
System.out.println("Done");
return null;
}
});
crc.start();
// END SNIPPET: query-list-and-command
}
use of org.qi4j.library.rest.common.Resource in project qi4j-sdk by Qi4j.
the class ContextResource method resource.
private void resource() {
Request request = Request.getCurrent();
Response response = Response.getCurrent();
if (!request.getMethod().equals(org.restlet.data.Method.GET)) {
response.setStatus(Status.CLIENT_ERROR_METHOD_NOT_ALLOWED);
return;
}
ObjectSelection objectSelection = current();
// Check for interaction->method mappings
if (ResourceDelete.class.isAssignableFrom(getClass())) {
response.getAllowedMethods().add(org.restlet.data.Method.DELETE);
}
if (ResourceUpdate.class.isAssignableFrom(getClass())) {
response.getAllowedMethods().add(org.restlet.data.Method.PUT);
}
// Construct resource
ValueBuilder<Resource> builder = module.newValueBuilder(Resource.class);
List<Link> queriesProperty = builder.prototype().queries().get();
for (Method query : resourceQueries) {
if (constraints.isValid(query, objectSelection, module)) {
ValueBuilder<Link> linkBuilder = module.newValueBuilder(Link.class);
Link prototype = linkBuilder.prototype();
prototype.classes().set("query");
prototype.text().set(humanReadable(query.getName()));
prototype.href().set(query.getName().toLowerCase());
prototype.rel().set(query.getName().toLowerCase());
prototype.id().set(query.getName().toLowerCase());
queriesProperty.add(linkBuilder.newInstance());
}
}
List<Link> commandsProperty = builder.prototype().commands().get();
for (Method command : resourceCommands) {
if (constraints.isValid(command, objectSelection, module)) {
ValueBuilder<Link> linkBuilder = module.newValueBuilder(Link.class);
Link prototype = linkBuilder.prototype();
prototype.classes().set("command");
prototype.text().set(humanReadable(command.getName()));
prototype.href().set(command.getName().toLowerCase());
prototype.rel().set(command.getName().toLowerCase());
prototype.id().set(command.getName().toLowerCase());
commandsProperty.add(linkBuilder.newInstance());
}
}
List<Link> resourcesProperty = builder.prototype().resources().get();
for (Method subResource : subResources.values()) {
if (constraints.isValid(subResource, objectSelection, module)) {
ValueBuilder<Link> linkBuilder = module.newValueBuilder(Link.class);
Link prototype = linkBuilder.prototype();
prototype.classes().set("resource");
prototype.text().set(humanReadable(subResource.getName()));
prototype.href().set(subResource.getName().toLowerCase() + "/");
prototype.rel().set(subResource.getName().toLowerCase());
prototype.id().set(subResource.getName().toLowerCase());
resourcesProperty.add(linkBuilder.newInstance());
}
}
try {
Method indexMethod = resourceMethodQueries.get("index");
if (indexMethod != null) {
Object index = convert(indexMethod.invoke(this));
if (index != null && index instanceof ValueComposite) {
builder.prototype().index().set((ValueComposite) index);
}
}
} catch (Throwable e) {
// Ignore
}
try {
responseWriter.writeResponse(builder.newInstance(), response);
} catch (Throwable e) {
handleException(response, e);
}
}
Aggregations