/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.master.portfolio.impl; import java.net.URI; import javax.ws.rs.GET; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriBuilder; import com.opengamma.id.UniqueId; import com.opengamma.master.portfolio.ManageablePortfolioNode; import com.opengamma.master.portfolio.PortfolioMaster; import com.opengamma.util.ArgumentChecker; import com.opengamma.util.rest.AbstractDataResource; /** * RESTful resource for a portfolio node. */ public class DataPortfolioNodeResource extends AbstractDataResource { /** * The portfolios resource. */ private final DataPortfolioMasterResource _portfoliosResource; /** * The identifier specified in the URI. */ private UniqueId _urlResourceId; /** * Creates the resource. * * @param portfoliosResource the parent resource, not null * @param nodeId the node unique identifier, not null */ public DataPortfolioNodeResource(final DataPortfolioMasterResource portfoliosResource, final UniqueId nodeId) { ArgumentChecker.notNull(portfoliosResource, "portfoliosResource"); ArgumentChecker.notNull(nodeId, "nodeId"); _portfoliosResource = portfoliosResource; _urlResourceId = nodeId; } //------------------------------------------------------------------------- /** * Gets the portfolios resource. * * @return the portfolios resource, not null */ public DataPortfolioMasterResource getPortfoliosResource() { return _portfoliosResource; } /** * Gets the node identifier from the URL. * * @return the unique identifier, not null */ public UniqueId getUrlNodeId() { return _urlResourceId; } //------------------------------------------------------------------------- /** * Gets the portfolio master. * * @return the portfolio master, not null */ public PortfolioMaster getPortfolioMaster() { return getPortfoliosResource().getPortfolioMaster(); } //------------------------------------------------------------------------- @GET public Response get() { ManageablePortfolioNode result = getPortfolioMaster().getNode(_urlResourceId); return responseOkObject(result); } //------------------------------------------------------------------------- /** * Builds a URI for the resource. * * @param baseUri the base URI, not null * @param nodeId the resource identifier, not null * @return the URI, not null */ public static URI uri(URI baseUri, UniqueId nodeId) { return UriBuilder.fromUri(baseUri).path("/nodes/{nodeId}") .build(nodeId); } }