/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.provider.security.impl; import java.net.URI; import java.util.Collection; import java.util.Map; import com.opengamma.core.security.Security; import com.opengamma.id.ExternalIdBundle; import com.opengamma.provider.security.SecurityProvider; import com.opengamma.provider.security.SecurityProviderRequest; import com.opengamma.provider.security.SecurityProviderResult; import com.opengamma.util.ArgumentChecker; import com.opengamma.util.rest.AbstractRemoteClient; /** * Provides access to a remote security provider. * <p> * This is a client that connects to a security provider at a remote URI. */ public class RemoteSecurityProvider extends AbstractRemoteClient implements SecurityProvider { /** * Creates an instance. * * @param baseUri the base target URI for all RESTful web services, not null */ public RemoteSecurityProvider(final URI baseUri) { super(baseUri); } //------------------------------------------------------------------------- // delegate convenience methods to request/result method // code copied from AbstractSecurityProvider due to lack of multiple inheritance @Override public Security getSecurity(ExternalIdBundle externalIdBundle) { SecurityProviderRequest request = SecurityProviderRequest.createGet(externalIdBundle, null); SecurityProviderResult result = getSecurities(request); return result.getResultMap().get(externalIdBundle); } @Override public Map<ExternalIdBundle, Security> getSecurities(Collection<ExternalIdBundle> externalIdBundles) { SecurityProviderRequest request = SecurityProviderRequest.createGet(externalIdBundles, null); SecurityProviderResult result = getSecurities(request); return result.getResultMap(); } //------------------------------------------------------------------------- @Override public SecurityProviderResult getSecurities(SecurityProviderRequest request) { ArgumentChecker.notNull(request, "request"); URI uri = DataSecurityProviderResource.uriGet(getBaseUri()); return accessRemote(uri).post(SecurityProviderResult.class, request); } }