/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.web.bundle;
import java.util.List;
import javax.servlet.ServletContext;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import org.joda.beans.impl.flexi.FlexiBean;
import com.google.common.collect.Iterables;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.web.AbstractPerRequestWebResource;
/**
* Abstract base class for RESTful bundle resources.
*/
public abstract class AbstractWebBundleResource
extends AbstractPerRequestWebResource<WebBundlesData> {
/**
* Creates the resource.
*
* @param bundleManagerFactory the bundle manager, not null
* @param compressor the bundle compressor, not null
* @param mode the deploy mode, not null
*/
protected AbstractWebBundleResource(
final BundleManagerFactory bundleManagerFactory, final BundleCompressor compressor, final DeployMode mode) {
super(new WebBundlesData());
ArgumentChecker.notNull(bundleManagerFactory, "bundleManagerFactory");
ArgumentChecker.notNull(compressor, "compressedBundleSource");
ArgumentChecker.notNull(mode, "mode");
data().setBundleManagerFactory(bundleManagerFactory);
data().setCompressor(compressor);
data().setMode(mode);
}
/**
* Creates the resource.
*
* @param parent the parent resource, not null
*/
protected AbstractWebBundleResource(final AbstractWebBundleResource parent) {
super(parent);
}
//-------------------------------------------------------------------------
@Override
@Context
public void setServletContext(ServletContext servletContext) {
super.setServletContext(servletContext);
// initialise the manager now that we have the servlet context
BundleManager bundleManager = data().getBundleManagerFactory().get(servletContext);
data().setBundleManager(bundleManager);
data().setDevBundleManager(new DevBundleBuilder(bundleManager).getDevBundleManager());
}
@Context
public void setHttpHeaders(HttpHeaders httpHeaders) {
data().setHttpHeaders(httpHeaders);
}
//-------------------------------------------------------------------------
/**
* Creates the output root data.
*
* @return the output root data, not null
*/
@Override
protected FlexiBean createRootData() {
FlexiBean out = super.createRootData();
out.put("ogStyle", new StyleTag(data()));
out.put("ogScript", new ScriptTag(data()));
HttpHeaders httpHeaders = data().getHttpHeaders();
String openfin = "";
if (httpHeaders != null) {
out.put("httpHeaders", data().getHttpHeaders());
List<String> openfinHeader = httpHeaders.getRequestHeader("x-powered-by");
if (openfinHeader != null) {
openfin = Iterables.getFirst(openfinHeader, "");
}
}
out.put("openfin", openfin.toLowerCase());
return out;
}
}