/**
* 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.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import com.opengamma.financial.user.FinancialUser;
import com.opengamma.financial.user.FinancialUserManager;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.rest.AbstractDataResource;
/**
* RESTful resource for users.
* <p>
* This resource receives and processes RESTful calls.
*/
@Path("userManager")
public class DataFinancialUserManagerResource extends AbstractDataResource {
/**
* The user manager.
*/
private final FinancialUserManager _manager;
/**
* Creates an instance.
*
* @param manager the manager, not null
*/
public DataFinancialUserManagerResource(FinancialUserManager manager) {
ArgumentChecker.notNull(manager, "manager");
_manager = manager;
}
//-------------------------------------------------------------------------
/**
* Gets the manager.
*
* @return the manager, not null
*/
public FinancialUserManager getUserManager() {
return _manager;
}
//-------------------------------------------------------------------------
@GET
public Response getHateaos(@Context UriInfo uriInfo) {
return hateoasResponse(uriInfo);
}
@Path("users/{userName}")
public DataFinancialUserResource findUser(@PathParam("userName") String userName) {
ArgumentChecker.notNull(userName, "userName");
FinancialUser user = _manager.getOrCreateUser(userName);
return new DataFinancialUserResource(user);
}
//-------------------------------------------------------------------------
/**
* Builds a URI.
*
* @param baseUri the base URI, not null
* @param userName the user name, not null
* @return the URI, not null
*/
public static URI uriUser(URI baseUri, String userName) {
UriBuilder bld = UriBuilder.fromUri(baseUri).path("users/{userName}");
return bld.build(userName);
}
}