/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.core.position.impl;
import java.net.URI;
import com.opengamma.core.change.BasicChangeManager;
import com.opengamma.core.change.ChangeManager;
import com.opengamma.core.position.Portfolio;
import com.opengamma.core.position.PortfolioNode;
import com.opengamma.core.position.Position;
import com.opengamma.core.position.PositionSource;
import com.opengamma.core.position.Trade;
import com.opengamma.id.ObjectId;
import com.opengamma.id.UniqueId;
import com.opengamma.id.VersionCorrection;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.rest.AbstractRemoteClient;
/**
* Provides remote access to an {@link PositionSource}.
*/
public class RemotePositionSource extends AbstractRemoteClient implements PositionSource {
/**
* The change manager.
*/
private final ChangeManager _changeManager;
/**
* Creates an instance.
*
* @param baseUri the base target URI for all RESTful web services, not null
*/
public RemotePositionSource(final URI baseUri) {
this(baseUri, new BasicChangeManager());
}
/**
* Creates an instance.
*
* @param baseUri the base target URI for all RESTful web services, not null
* @param changeManager the change manager, not null
*/
public RemotePositionSource(final URI baseUri, final ChangeManager changeManager) {
super(baseUri);
ArgumentChecker.notNull(changeManager, "changeManager");
_changeManager = changeManager;
}
//-------------------------------------------------------------------------
@Override
public Portfolio getPortfolio(final UniqueId uniqueId, final VersionCorrection versionCorrection) {
ArgumentChecker.notNull(uniqueId, "uniqueId");
ArgumentChecker.notNull(versionCorrection, "versionCorrection");
URI uri = DataPositionSourceResource.uriGetPortfolio(getBaseUri(), uniqueId);
return accessRemote(uri).get(Portfolio.class);
}
@Override
public Portfolio getPortfolio(final ObjectId objectId, final VersionCorrection versionCorrection) {
ArgumentChecker.notNull(objectId, "objectId");
ArgumentChecker.notNull(versionCorrection, "versionCorrection");
URI uri = DataPositionSourceResource.uriGetPortfolio(getBaseUri(), objectId, versionCorrection);
return accessRemote(uri).get(Portfolio.class);
}
@Override
public PortfolioNode getPortfolioNode(final UniqueId uniqueId, final VersionCorrection versionCorrection) {
ArgumentChecker.notNull(uniqueId, "uniqueId");
ArgumentChecker.notNull(versionCorrection, "versionCorrection");
URI uri = DataPositionSourceResource.uriGetNode(getBaseUri(), uniqueId);
return accessRemote(uri).get(PortfolioNode.class);
}
@Override
public Position getPosition(UniqueId uniqueId) {
ArgumentChecker.notNull(uniqueId, "uniqueId");
URI uri = DataPositionSourceResource.uriGetPosition(getBaseUri(), uniqueId);
return accessRemote(uri).get(Position.class);
}
@Override
public Position getPosition(final ObjectId objectId, final VersionCorrection versionCorrection) {
ArgumentChecker.notNull(objectId, "objectId");
ArgumentChecker.notNull(versionCorrection, "versionCorrection");
URI uri = DataPositionSourceResource.uriGetPosition(getBaseUri(), objectId, versionCorrection);
return accessRemote(uri).get(Position.class);
}
@Override
public Trade getTrade(UniqueId uniqueId) {
ArgumentChecker.notNull(uniqueId, "uniqueId");
URI uri = DataPositionSourceResource.uriGetTrade(getBaseUri(), uniqueId);
return accessRemote(uri).get(Trade.class);
}
@Override
public ChangeManager changeManager() {
return _changeManager;
}
}