/**
* 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 javax.ws.rs.POST;
import javax.ws.rs.Path;
import com.opengamma.OpenGammaRuntimeException;
import com.opengamma.engine.marketdata.MarketDataInjector;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.rest.AbstractDataResource;
/**
* Wrapper to provide RESTful access to a {@link MarketDataInjector}.
*/
public class DataLiveDataInjectorResource extends AbstractDataResource {
//CSOFF: just constants
public static final String PATH_ADD = "add";
public static final String PATH_REMOVE = "remove";
//CSON: just constants
private final MarketDataInjector _injector;
public DataLiveDataInjectorResource(final MarketDataInjector injector) {
ArgumentChecker.notNull(injector, "injector");
_injector = injector;
}
@POST
@Path(PATH_ADD)
public void put(final AddValueRequest request) {
ArgumentChecker.notNull(request.getValue(), "value");
if (request.getValueRequirement() != null) {
_injector.addValue(request.getValueRequirement(), request.getValue());
} else if (request.getValueSpecification() != null) {
_injector.addValue(request.getValueSpecification(), request.getValue());
} else {
throw new OpenGammaRuntimeException("Invalid request: " + request);
}
}
@POST
@Path(PATH_REMOVE)
public void remove(final RemoveValueRequest request) {
if (request.getValueRequirement() != null) {
_injector.removeValue(request.getValueRequirement());
} else if (request.getValueSpecification() != null) {
_injector.removeValue(request.getValueSpecification());
} else {
throw new OpenGammaRuntimeException("Invalid request: " + request);
}
}
}