package com.tinkerpop.rexster.kibbles.sample;
import com.tinkerpop.blueprints.Graph;
import com.tinkerpop.rexster.RexsterResourceContext;
import com.tinkerpop.rexster.extension.ExtensionDefinition;
import com.tinkerpop.rexster.extension.ExtensionDescriptor;
import com.tinkerpop.rexster.extension.ExtensionMethod;
import com.tinkerpop.rexster.extension.ExtensionNaming;
import com.tinkerpop.rexster.extension.ExtensionPoint;
import com.tinkerpop.rexster.extension.ExtensionRequestParameter;
import com.tinkerpop.rexster.extension.ExtensionResponse;
import com.tinkerpop.rexster.extension.RexsterContext;
import javax.ws.rs.core.Response;
import java.util.HashMap;
import java.util.Map;
/**
* A simple extension that just echoes back the string parameter passed in.
*/
@ExtensionNaming(namespace = AbstractSampleExtension.EXTENSION_NAMESPACE, name = PingExtension.EXTENSION_NAME)
public class PingExtension extends AbstractSampleExtension {
public static final String EXTENSION_NAME = "ping";
/**
* Exposes the ping extension from the root of the graph name accepting a single parameter
* called "reply" which will be echoed back in the a JSON response.
* <p/>
* The "reply" parameter is the only parameter that matters for purpose of the ping extension.
* The remaining parameters ("context" and "graph") are present only for example purposes. In
* a more realistic example, the extension would make use of these types of objects to perform
* the extensions function.
*/
@ExtensionDefinition(extensionPoint = ExtensionPoint.GRAPH)
@ExtensionDescriptor(description = "a simple ping extension.")
public ExtensionResponse evaluatePing(@RexsterContext RexsterResourceContext context,
@RexsterContext Graph graph,
@ExtensionRequestParameter(name = "reply", defaultValue = "pong (default)", description = "a value to reply with") String reply) {
if (reply == null || reply.isEmpty()) {
ExtensionMethod extMethod = context.getExtensionMethod();
return ExtensionResponse.error(
"the reply parameter cannot be empty",
null,
Response.Status.BAD_REQUEST.getStatusCode(),
null,
generateErrorJson(extMethod.getExtensionApiAsJson()));
}
Map<String, String> map = new HashMap<String, String>();
map.put("ping", reply);
return ExtensionResponse.ok(map);
}
}