package com.tinkerpop.rexster.kibbles.sample; import com.tinkerpop.rexster.RexsterApplicationGraph; import com.tinkerpop.rexster.extension.ExtensionConfiguration; import com.tinkerpop.rexster.extension.ExtensionDefinition; import com.tinkerpop.rexster.extension.ExtensionDescriptor; import com.tinkerpop.rexster.extension.ExtensionNaming; import com.tinkerpop.rexster.extension.ExtensionPoint; import com.tinkerpop.rexster.extension.ExtensionResponse; import com.tinkerpop.rexster.extension.RexsterContext; import java.util.Map; /** * Demonstrates how to do a simple Map based configuration of an extension. * <p/> * This extension expects a configuration that contains a simple set of name * value pairs: * <p/> * <configuration> * <some-key>some-value</some-key> * <other-key>other-value</other-key> * </configuration> */ @ExtensionNaming(name = MapConfigurationExtension.EXTENSION_NAME, namespace = AbstractSampleExtension.EXTENSION_NAMESPACE) public class MapConfigurationExtension extends AbstractSampleExtension { public static final String EXTENSION_NAME = "map-config"; private static final String CONFIG_SOME_KEY = "some-key"; private static final String CONFIG_OTHER_KEY = "other-key"; /** * Reads the values from the configuration and returns them as JSON. */ @ExtensionDefinition(extensionPoint = ExtensionPoint.GRAPH) @ExtensionDescriptor(description = "returns the configuration as JSON.") public ExtensionResponse doConfiguredWork(@RexsterContext RexsterApplicationGraph rag) { // finds the configuration settings from the configured graph ExtensionConfiguration configuration = rag.findExtensionConfiguration(EXTENSION_NAMESPACE, EXTENSION_NAME); Map<String, String> map = configuration.tryGetMapFromConfiguration(); return ExtensionResponse.ok(map); } /** * Ensures that the configuration is valid. * <p/> * A valid configuration is one that has a map like structure and contains two keys. */ @Override public boolean isConfigurationValid(ExtensionConfiguration extensionConfiguration) { boolean valid = false; if (extensionConfiguration != null) { Map<String, String> map = extensionConfiguration.tryGetMapFromConfiguration(); valid = map != null && !map.isEmpty() && map.containsKey(CONFIG_SOME_KEY) && map.containsKey(CONFIG_OTHER_KEY); } return valid; } }