package scrum.server.css;
import ilarkesto.core.logging.Log;
import ilarkesto.io.DynamicClassLoader;
import ilarkesto.ui.web.CssRenderer;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import scrum.server.ScrumWebApplication;
import scrum.server.WebSession;
import scrum.server.common.AHttpServlet;
public class CssServlet extends AHttpServlet {
private static final Log LOG = Log.get(CssServlet.class);
private static final long serialVersionUID = 1;
private transient final ScreenCssBuilder screenCssBuilder = new ScreenCssBuilder();
@Override
protected void onRequest(HttpServletRequest req, HttpServletResponse resp, WebSession session) throws IOException {
resp.setContentType("text/css");
CssRenderer css = new CssRenderer(resp.getWriter());
CssBuilder builder = getCssBuilder();
builder.buildCss(css);
css.flush();
// LOG.debug(builder);
}
private CssBuilder getCssBuilder() {
if (ScrumWebApplication.get().isDevelopmentMode()) {
ClassLoader loader = new DynamicClassLoader(getClass().getClassLoader(), ScreenCssBuilder.class.getName());
Class<? extends CssBuilder> type;
try {
type = (Class<? extends CssBuilder>) loader.loadClass(ScreenCssBuilder.class.getName());
return type.newInstance();
} catch (Throwable ex) {
LOG.fatal(ex);
throw new RuntimeException(ex);
}
} else {
return screenCssBuilder;
}
}
@Override
protected void onInit(ServletConfig config) {
ScrumWebApplication.get(config);
}
}