/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.livedata.rest;
import java.net.URI;
import javax.ws.rs.core.UriBuilder;
import com.opengamma.engine.marketdata.MarketDataInjector;
import com.opengamma.engine.value.ValueRequirement;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.rest.FudgeRestClient;
/**
* Provides access to a remote {@link MarketDataInjector}.
*/
public class RemoteLiveDataInjector implements MarketDataInjector {
private final URI _baseUri;
private final FudgeRestClient _client;
public RemoteLiveDataInjector(final URI baseUri) {
this(baseUri, FudgeRestClient.create());
}
public RemoteLiveDataInjector(final URI baseUri, final FudgeRestClient client) {
_baseUri = baseUri;
_client = client;
}
@Override
public void addValue(final ValueSpecification valueSpecification, final Object value) {
ArgumentChecker.notNull(valueSpecification, "valueSpecification");
final AddValueRequest request = new AddValueRequest();
request.setValueSpecification(valueSpecification);
request.setValue(value);
addValue(request);
}
@Override
public void addValue(final ValueRequirement valueRequirement, final Object value) {
ArgumentChecker.notNull(valueRequirement, "valueRequirement");
final AddValueRequest request = new AddValueRequest();
request.setValueRequirement(valueRequirement);
request.setValue(value);
addValue(request);
}
private void addValue(final AddValueRequest request) {
final URI uri = UriBuilder.fromUri(_baseUri).path(DataLiveDataInjectorResource.PATH_ADD).build();
_client.accessFudge(uri).post(request);
}
@Override
public void removeValue(final ValueSpecification valueSpecification) {
ArgumentChecker.notNull(valueSpecification, "valueSpecification");
final RemoveValueRequest request = new RemoveValueRequest();
request.setValueSpecification(valueSpecification);
removeValue(request);
}
@Override
public void removeValue(final ValueRequirement valueRequirement) {
ArgumentChecker.notNull(valueRequirement, "valueRequirement");
final RemoveValueRequest request = new RemoveValueRequest();
request.setValueRequirement(valueRequirement);
removeValue(request);
}
private void removeValue(final RemoveValueRequest request) {
final URI uri = UriBuilder.fromUri(_baseUri).path(DataLiveDataInjectorResource.PATH_REMOVE).build();
_client.accessFudge(uri).post(request);
}
}