package org.jenkinsci.plugins.jenkow.activiti.override; import org.springframework.beans.factory.FactoryBean; import org.springframework.web.context.ServletContextAware; import javax.servlet.ServletContext; import javax.sql.DataSource; /** * Returns {@link DataSource} injected through {@link ServletContext} attribute. * * This is how the jenkow plugin passes in the {@link DataSource} to the embedded activiti explorer. * * @author Kohsuke Kawaguchi */ public class ServletContextDataSource implements FactoryBean, ServletContextAware { private ServletContext servletContext; @Override public void setServletContext(ServletContext servletContext) { this.servletContext = servletContext; } @Override public Object getObject() throws Exception { Object o = servletContext.getAttribute(ServletContextDataSource.class.getName()); if (o==null) throw new IllegalStateException("ServletContext doesn't contain a DataSource"); return o; } @Override public Class<?> getObjectType() { return DataSource.class; } @Override public boolean isSingleton() { return true; } }