/** * Copyright (C) 2009 - 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.core.UriBuilder; import org.threeten.bp.Duration; import com.opengamma.engine.view.ViewComputationResultModel; import com.opengamma.engine.view.compilation.CompiledViewDefinitionWithGraphs; import com.opengamma.engine.view.cycle.ComputationCacheResponse; import com.opengamma.engine.view.cycle.ComputationCycleQuery; import com.opengamma.engine.view.cycle.ComputationResultsResponse; import com.opengamma.engine.view.cycle.ViewCycle; import com.opengamma.engine.view.cycle.ViewCycleState; import com.opengamma.engine.view.execution.ViewCycleExecutionOptions; import com.opengamma.id.UniqueId; import com.opengamma.util.ArgumentChecker; import com.opengamma.util.rest.FudgeRestClient; /** * Remote implementation of {@link ViewCycle}. */ public class RemoteViewCycle implements ViewCycle { private final URI _baseUri; private final FudgeRestClient _client; public RemoteViewCycle(URI baseUri) { this(baseUri, FudgeRestClient.create()); } public RemoteViewCycle(URI baseUri, FudgeRestClient client) { _baseUri = baseUri; _client = client; } @Override public String getName() { URI uri = UriBuilder.fromUri(_baseUri).path(DataViewCycleResource.PATH_NAME).build(); return _client.accessFudge(uri).get(String.class); } @Override public UniqueId getUniqueId() { URI uri = UriBuilder.fromUri(_baseUri).path(DataViewCycleResource.PATH_UNIQUE_ID).build(); return _client.accessFudge(uri).get(UniqueId.class); } @Override public UniqueId getViewProcessId() { URI uri = UriBuilder.fromUri(_baseUri).path(DataViewCycleResource.PATH_VIEW_PROCESS_ID).build(); return _client.accessFudge(uri).get(UniqueId.class); } @Override public ViewCycleState getState() { URI uri = UriBuilder.fromUri(_baseUri).path(DataViewCycleResource.PATH_STATE).build(); return _client.accessFudge(uri).get(ViewCycleState.class); } @Override public Duration getDuration() { URI uri = UriBuilder.fromUri(_baseUri).path(DataViewCycleResource.PATH_DURATION).build(); return _client.accessFudge(uri).get(Duration.class); } @Override public ViewCycleExecutionOptions getExecutionOptions() { URI uri = UriBuilder.fromUri(_baseUri).path(DataViewCycleResource.PATH_EXECUTION_OPTIONS).build(); return _client.accessFudge(uri).get(ViewCycleExecutionOptions.class); } @Override public CompiledViewDefinitionWithGraphs getCompiledViewDefinition() { URI uri = UriBuilder.fromUri(_baseUri).path(DataViewCycleResource.PATH_COMPILED_VIEW_DEFINITION).build(); return new RemoteCompiledViewDefinitionWithGraphs(uri); } @Override public ViewComputationResultModel getResultModel() { URI uri = UriBuilder.fromUri(_baseUri).path(DataViewCycleResource.PATH_RESULT).build(); return _client.accessFudge(uri).get(ViewComputationResultModel.class); } @Override public ComputationCacheResponse queryComputationCaches(ComputationCycleQuery query) { ArgumentChecker.notNull(query, "query"); URI uri = UriBuilder.fromUri(_baseUri).path(DataViewCycleResource.PATH_QUERY_CACHES).build(); return _client.accessFudge(uri).post(ComputationCacheResponse.class, query); } @Override public ComputationResultsResponse queryResults(ComputationCycleQuery query) { ArgumentChecker.notNull(query, "query"); URI uri = UriBuilder.fromUri(_baseUri).path(DataViewCycleResource.PATH_QUERY_RESULTS).build(); return _client.accessFudge(uri).post(ComputationResultsResponse.class, query); } }