/** * 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 com.opengamma.engine.marketdata.MarketDataInjector; import com.opengamma.engine.view.ViewDefinition; import com.opengamma.engine.view.ViewProcess; import com.opengamma.engine.view.ViewProcessState; import com.opengamma.financial.livedata.rest.RemoteLiveDataInjector; import com.opengamma.id.UniqueId; import com.opengamma.util.rest.FudgeRestClient; /** * Provides access to a remote {@link ViewProcess}. */ public class RemoteViewProcess implements ViewProcess { private final URI _baseUri; private final FudgeRestClient _client; public RemoteViewProcess(URI baseUri) { this(baseUri, FudgeRestClient.create()); } public RemoteViewProcess(URI baseUri, FudgeRestClient client) { _baseUri = baseUri; _client = client; } //------------------------------------------------------------------------- @Override public UniqueId getUniqueId() { URI uri = UriBuilder.fromUri(_baseUri).path(DataViewProcessResource.PATH_UNIQUE_ID).build(); return _client.accessFudge(uri).get(UniqueId.class); } @Override public UniqueId getDefinitionId() { URI uri = UriBuilder.fromUri(_baseUri).path(DataViewProcessResource.PATH_DEFINITION_ID).build(); return _client.accessFudge(uri).get(UniqueId.class); } @Override public ViewDefinition getLatestViewDefinition() { URI uri = UriBuilder.fromUri(_baseUri).path(DataViewProcessResource.PATH_DEFINITION).build(); return _client.accessFudge(uri).get(ViewDefinition.class); } @Override public ViewProcessState getState() { URI uri = UriBuilder.fromUri(_baseUri).path(DataViewProcessResource.PATH_STATE).build(); return _client.accessFudge(uri).get(ViewProcessState.class); } @Override public MarketDataInjector getLiveDataOverrideInjector() { URI uri = UriBuilder.fromUri(_baseUri).path(DataViewProcessResource.PATH_LIVE_DATA_OVERRIDE_INJECTOR).build(); return new RemoteLiveDataInjector(uri, _client); } @Override public void shutdown() { _client.accessFudge(_baseUri).delete(); } }