/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.user.rest;
import java.net.URI;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.UriBuilder;
import com.opengamma.financial.user.FinancialClient;
import com.opengamma.financial.user.FinancialClientManager;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.rest.AbstractDataResource;
/**
* RESTful resource for the clients of a single user.
* <p>
* This resource receives and processes RESTful calls.
*/
public class DataFinancialClientManagerResource extends AbstractDataResource {
/**
* The client manager.
*/
private final FinancialClientManager _clientManager;
/**
* Creates an instance.
*
* @param clientManager the client manager, not null
*/
public DataFinancialClientManagerResource(FinancialClientManager clientManager) {
_clientManager = clientManager;
}
//-------------------------------------------------------------------------
/**
* Gets the manager.
*
* @return the manager, not null
*/
public FinancialClientManager getClientManager() {
return _clientManager;
}
//-------------------------------------------------------------------------
@Path("{clientName}")
public DataFinancialClientResource findClient(@PathParam("clientName") String clientName) {
ArgumentChecker.notNull(clientName, "clientName");
FinancialClient client = getClientManager().getOrCreateClient(clientName);
return new DataFinancialClientResource(client);
}
//-------------------------------------------------------------------------
/**
* Builds a URI.
*
* @param baseUri the base URI, not null
* @param userName the user name, not null
* @param clientName the client name, not null
* @return the URI, not null
*/
public static URI uriClient(URI baseUri, String userName, String clientName) {
UriBuilder bld = UriBuilder.fromUri(DataFinancialUserManagerResource.uriUser(baseUri, userName)).path("clients/{clientName}");
return bld.build(clientName);
}
}