/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.master.impl;
import static com.google.common.collect.Maps.newHashMap;
import java.net.URI;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import com.opengamma.core.change.BasicChangeManager;
import com.opengamma.core.change.ChangeManager;
import com.opengamma.id.ObjectIdentifiable;
import com.opengamma.id.UniqueId;
import com.opengamma.master.AbstractDocument;
import com.opengamma.master.AbstractMaster;
/**
* Abstract base class for remote masters.
* <p>
* A remote master provides a client-side view of a remote master over REST.
*
* @param <D> the type of the document
*/
public abstract class AbstractRemoteDocumentMaster<D extends AbstractDocument>
extends AbstractRemoteMaster
implements AbstractMaster<D> {
/**
* Creates an instance.
*
* @param baseUri the base target URI for all RESTful web services, not null
*/
public AbstractRemoteDocumentMaster(final URI baseUri) {
super(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 AbstractRemoteDocumentMaster(final URI baseUri, ChangeManager changeManager) {
super(baseUri, changeManager);
}
//-------------------------------------------------------------------------
@Override
public final UniqueId addVersion(ObjectIdentifiable objectId, D documentToAdd) {
List<UniqueId> result = replaceVersions(objectId, Collections.singletonList(documentToAdd));
if (result.isEmpty()) {
return null;
} else {
return result.get(0);
}
}
@Override
public final void removeVersion(final UniqueId uniqueId) {
replaceVersion(uniqueId, Collections.<D>emptyList());
}
@Override
public final UniqueId replaceVersion(D replacementDocument) {
List<UniqueId> result = replaceVersion(replacementDocument.getUniqueId(), Collections.singletonList(replacementDocument));
if (result.isEmpty()) {
return null;
} else {
return result.get(0);
}
}
@Override
public Map<UniqueId, D> get(Collection<UniqueId> uniqueIds) {
Map<UniqueId, D> resultMap = newHashMap();
for (UniqueId uniqueId : uniqueIds) {
D doc = get(uniqueId);
resultMap.put(uniqueId, doc);
}
return resultMap;
}
}