/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.provider.permission.impl;
import java.net.URI;
import java.util.Map;
import java.util.Set;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.provider.permission.PermissionCheckProvider;
import com.opengamma.provider.permission.PermissionCheckProviderRequest;
import com.opengamma.provider.permission.PermissionCheckProviderResult;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.rest.AbstractRemoteClient;
/**
* Provides access to a remote permission check provider.
* <p>
* This is a client that connects to a permission check provider at a remote URI.
*/
public class RemotePermissionCheckProvider extends AbstractRemoteClient implements PermissionCheckProvider {
/**
* Creates an instance.
*
* @param baseUri the base target URI for all RESTful web services, not null
*/
public RemotePermissionCheckProvider(final URI baseUri) {
super(baseUri);
}
//-------------------------------------------------------------------------
@Override
public boolean isPermitted(ExternalIdBundle userIdBundle, String ipAddress, String requestedPermission) {
PermissionCheckProviderRequest request = PermissionCheckProviderRequest.createGet(userIdBundle, ipAddress, requestedPermission);
PermissionCheckProviderResult holderResult = isPermitted(request);
return holderResult.isPermitted(requestedPermission);
}
@Override
public Map<String, Boolean> isPermitted(ExternalIdBundle userIdBundle, String ipAddress, Set<String> requestedPermissions) {
PermissionCheckProviderRequest request = PermissionCheckProviderRequest.createGet(userIdBundle, ipAddress, requestedPermissions);
PermissionCheckProviderResult permissionResult = isPermitted(request);
return permissionResult.getCheckedPermissions();
}
@Override
public PermissionCheckProviderResult isPermitted(PermissionCheckProviderRequest request) {
ArgumentChecker.notNull(request, "request");
URI uri = DataPermissionCheckProviderResource.uriGet(getBaseUri());
return accessRemote(uri).post(PermissionCheckProviderResult.class, request);
}
}