/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.view.rest; import java.net.URI; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriBuilder; import com.opengamma.engine.depgraph.DependencyGraphExplorer; import com.opengamma.engine.value.ValueSpecification; import com.opengamma.util.ArgumentChecker; import com.opengamma.util.rest.AbstractDataResource; import com.opengamma.util.rest.RestUtils; /** * RESTful resource for {@link DependencyGraphExplorer}. */ public class DataDependencyGraphExplorerResource extends AbstractDataResource { // CSOFF: just constants public static final String PATH_WHOLE_GRAPH = "wholeGraph"; public static final String PATH_SUBGRAPH_PRODUCING = "subgraphProducing"; // CSON: just constants private final DependencyGraphExplorer _explorer; public DataDependencyGraphExplorerResource(DependencyGraphExplorer explorer) { ArgumentChecker.notNull(explorer, "explorer"); _explorer = explorer; } @Path(PATH_WHOLE_GRAPH) @GET public Response getWholeGraph() { return responseOkObject(_explorer.getWholeGraph()); } @Path(PATH_SUBGRAPH_PRODUCING) @GET public Response getSubgraphProducing(@QueryParam("msg") String msgBase64) { ValueSpecification output = RestUtils.decodeBase64(ValueSpecification.class, msgBase64); return responseOkObject(_explorer.getSubgraphProducing(output)); } //------------------------------------------------------------------------- public static URI uriSubgraph(URI baseUri, ValueSpecification output) { UriBuilder bld = UriBuilder.fromUri(baseUri).path(PATH_SUBGRAPH_PRODUCING); if (output != null) { bld.queryParam("msg", RestUtils.encodeBase64(output)); } return bld.build(); } public static URI uriWholeGraph(URI baseUri) { UriBuilder bld = UriBuilder.fromUri(baseUri).path(DataDependencyGraphExplorerResource.PATH_WHOLE_GRAPH); URI uriWholeGraph = bld.build(); return uriWholeGraph; } }