es.prodevelop.pui9.spring.configuration.AbstractAppSpringConfiguration Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of es.prodevelop.pui9.controllers Show documentation
Show all versions of es.prodevelop.pui9.controllers Show documentation
Web service layer support (WEB)
package es.prodevelop.pui9.spring.configuration;
import java.util.Collections;
import java.util.List;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.jndi.JndiTemplate;
import org.springframework.web.servlet.HandlerInterceptor;
import es.prodevelop.pui9.controller.AbstractPuiController;
import es.prodevelop.pui9.interceptors.PuiInterceptor;
import es.prodevelop.pui9.spring.configuration.annotations.PuiSpringConfiguration;
/**
* This is an abstract Application Configuration for Spring that all the PUI
* applications should implement. Basically need to provide implementation for
* the kind of interceptor to be used. You can define in the concrete class more
* dataSources if needed.
*
* @author Marc Gil - [email protected]
*/
@PuiSpringConfiguration
public abstract class AbstractAppSpringConfiguration {
private HandlerInterceptor interceptor;
private DataSource dataSource;
private String appname;
private List> overridedPuiControllers;
@Bean
public HandlerInterceptor actionInterceptor() {
if (interceptor == null) {
interceptor = getHandlerInterceptor();
}
return interceptor;
}
@Bean
public DataSource dataSource() throws NamingException {
if (dataSource == null) {
JndiTemplate jndi = new JndiTemplate();
dataSource = (DataSource) jndi.lookup(getJndiName());
}
return dataSource;
}
@Bean
public String appname() {
if (appname == null) {
appname = getAppnameForElasticsearch();
}
return appname;
}
/**
* Get a list with the overrided PUI controllers
*
* @return The list of the overrided PUI controllers
*/
public List> getOverridedPuiControllers() {
if (overridedPuiControllers == null) {
overridedPuiControllers = fillOverridedPuiControllers();
}
return overridedPuiControllers;
}
// @Bean
// public DataSource dataSource2() {
// return new
// EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL).build();
// }
/**
* Provide the implementation class for the {@link HandlerInterceptor} object to
* use
*
* @return The interceptor to be used
*/
protected abstract PuiInterceptor getHandlerInterceptor();
/**
* The name of the JNDI for the datasource
*
* @return the JNDI name
*/
protected abstract String getJndiName();
protected String getAppnameForElasticsearch() {
return null;
}
/**
* A list with the overrided PUI controllers. An overrided controller, should be
* declared with {@link Primary} annotation
*
* @return
*/
protected List> fillOverridedPuiControllers() {
return Collections.emptyList();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy