com.opengamma.provider.security.impl.RemoteSecurityEnhancer.java Source code

Java tutorial

Introduction

Here is the source code for com.opengamma.provider.security.impl.RemoteSecurityEnhancer.java

Source

/**
 * 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.List;
import java.util.Map;
import java.util.Map.Entry;

import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.opengamma.core.security.Security;
import com.opengamma.provider.security.SecurityEnhancer;
import com.opengamma.provider.security.SecurityEnhancerRequest;
import com.opengamma.provider.security.SecurityEnhancerResult;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.rest.AbstractRemoteClient;

/**
 * Provides access to a remote security enhancer.
 * <p>
 * This is a client that connects to a security enhancer at a remote URI.
 */
public class RemoteSecurityEnhancer extends AbstractRemoteClient implements SecurityEnhancer {

    /**
     * Creates an instance.
     * 
     * @param baseUri  the base target URI for all RESTful web services, not null
     */
    public RemoteSecurityEnhancer(final URI baseUri) {
        super(baseUri);
    }

    //-------------------------------------------------------------------------
    // delegate convenience methods to request/result method
    // code copied from AbstractSecurityEnhancer due to lack of multiple inheritance
    @Override
    public Security enhanceSecurity(Security security) {
        SecurityEnhancerRequest request = SecurityEnhancerRequest.create(security);
        SecurityEnhancerResult result = enhanceSecurities(request);
        return Iterables.getOnlyElement(result.getResultList());
    }

    @Override
    public List<Security> enhanceSecurities(List<Security> securities) {
        SecurityEnhancerRequest request = SecurityEnhancerRequest.create(securities);
        SecurityEnhancerResult result = enhanceSecurities(request);
        return result.getResultList();
    }

    @Override
    public <R> Map<R, Security> enhanceSecurities(Map<R, Security> securities) {
        List<R> keyList = Lists.newArrayList();
        List<Security> securityList = Lists.newArrayList();
        for (Entry<R, Security> entry : securities.entrySet()) {
            keyList.add(entry.getKey());
            securityList.add(entry.getValue());
        }
        securityList = enhanceSecurities(securityList);
        Map<R, Security> result = Maps.newHashMap();
        for (int i = 0; i < keyList.size(); i++) {
            result.put(keyList.get(i), securityList.get(i));
        }
        return result;
    }

    //-------------------------------------------------------------------------
    @Override
    public SecurityEnhancerResult enhanceSecurities(SecurityEnhancerRequest request) {
        ArgumentChecker.notNull(request, "request");

        URI uri = DataSecurityEnhancerResource.uriGet(getBaseUri());
        return accessRemote(uri).post(SecurityEnhancerResult.class, request);
    }

}