/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.masterdb.portfolio; import java.net.URI; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriBuilder; import org.threeten.bp.Clock; import com.opengamma.master.portfolio.impl.DataPortfolioMasterResource; import com.opengamma.masterdb.TimeOverrideRequest; import com.opengamma.util.ArgumentChecker; /** * RESTful resource for portfolios. * <p> * The portfolios resource receives and processes RESTful calls to a database portfolio master. */ @Path("portfolioMaster") public class DataDbPortfolioMasterResource extends DataPortfolioMasterResource { /** * The portfolio master. */ private final DbPortfolioMaster _dbPortfolioMaster; /** * Creates the resource, exposing the underlying master over REST. * * @param dbPortfolioMaster the underlying database portfolio master, not null */ public DataDbPortfolioMasterResource(final DbPortfolioMaster dbPortfolioMaster) { super(dbPortfolioMaster); _dbPortfolioMaster = dbPortfolioMaster; } //------------------------------------------------------------------------- public DbPortfolioMaster getDbPortfolioMaster() { return _dbPortfolioMaster; } //------------------------------------------------------------------------- @PUT @Path("timeOverride") public Response setTimeOverride(final TimeOverrideRequest doc) { ArgumentChecker.notNull(doc, "doc"); if (doc.getTimeOverride() == null) { getDbPortfolioMaster().resetClock(); } else { getDbPortfolioMaster().setClock(Clock.fixed(doc.getTimeOverride(), getDbPortfolioMaster().getClock().getZone())); } return responseOk(); } //------------------------------------------------------------------------- /** * Builds a URI. * * @param baseUri the base URI, not null * @return the URI, not null */ public static URI uriTimeOverride(URI baseUri) { UriBuilder bld = UriBuilder.fromUri(baseUri).path("timeOverride"); return bld.build(); } }