/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.view.rest; import java.net.URI; import javax.ws.rs.GET; import javax.ws.rs.Path; 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 org.fudgemsg.FudgeContext; import com.opengamma.engine.view.helper.AvailableOutputsProvider; import com.opengamma.util.ArgumentChecker; import com.opengamma.util.fudgemsg.OpenGammaFudgeContext; import com.opengamma.util.rest.AbstractDataResource; /** * RESTful resource for available outputs. * <p> * This resource receives and processes RESTful calls. */ @Path("availableOutputs") public class DataAvailableOutputsProviderResource extends AbstractDataResource { /** * The provider. */ private final AvailableOutputsProvider _provider; /** * The Fudge context. */ private final FudgeContext _fudgeContext; /** * Creates an instance. * * @param provider the provider, not null */ public DataAvailableOutputsProviderResource(final AvailableOutputsProvider provider) { this(provider, OpenGammaFudgeContext.getInstance()); } /** * Creates an instance. * * @param provider the provider, not null * @param fudgeContext the Fudge context, not null */ public DataAvailableOutputsProviderResource(final AvailableOutputsProvider provider, final FudgeContext fudgeContext) { ArgumentChecker.notNull(provider, "provider"); ArgumentChecker.notNull(fudgeContext, "fudgeContext"); _provider = provider; _fudgeContext = fudgeContext; } //------------------------------------------------------------------------- /** * Gets the available outputs provider. * * @return the available outputs provider, not null */ public AvailableOutputsProvider getAvailableOutputsProvider() { return _provider; } //------------------------------------------------------------------------- @GET public Response getHateaos(@Context UriInfo uriInfo) { return hateoasResponse(uriInfo); } @Path("portfolio") public DataAvailablePortfolioOutputsResource portfolio() { return new DataAvailablePortfolioOutputsResource(_provider, _fudgeContext); } //------------------------------------------------------------------------- /** * Builds a URI. * * @param baseUri the base URI, not null * @return the URI, not null */ public static URI uriPortfolio(URI baseUri) { UriBuilder bld = UriBuilder.fromUri(baseUri).path("portfolio"); return bld.build(); } }