Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix for issue 61: Spring seems does not like bean classes with the same #62

Merged
merged 1 commit into from
Nov 5, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,10 @@
import java.util.function.Function;

import javax.servlet.ServletContextListener;
import javax.sql.DataSource;

import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;

import com.aol.micro.server.Plugin;
import com.aol.micro.server.config.Config;
import com.aol.micro.server.servers.model.ServerData;
import com.aol.micro.server.spring.datasource.DataSourceBuilder;
import com.aol.micro.server.spring.datasource.DataDataSourceBuilder;
import com.aol.micro.server.spring.datasource.JdbcConfig;
import com.aol.micro.server.spring.datasource.hibernate.HibernateConfig;
import com.aol.micro.server.spring.datasource.hibernate.SpringDataConfig;
Expand All @@ -30,18 +25,16 @@
* @author johnmcclean
*
*/
public class DataPlugin implements Plugin{
public class DataPlugin implements Plugin {

@Override
public Optional<SpringDBConfig> springDbConfigurer(){
public Optional<SpringDBConfig> springDbConfigurer() {
return Optional.of(new SpringConfigurer());
}

@Override
public Set<Class> springClasses() {
return new HashSet<>(Arrays.asList(JdbcConfig.class,
DataSourceBuilder.class, SQL.class,
SpringDataConfig.class,
HibernateConfig.class));
return new HashSet<>(Arrays.asList(JdbcConfig.class, DataDataSourceBuilder.class, SQL.class, SpringDataConfig.class, HibernateConfig.class));
}

@Override
Expand All @@ -51,13 +44,11 @@ public Set<Function<ServerData, ServletContextListener>> servletContextListeners

@Override
public Set<Class> jaxRsResources() {

return null;
}

@Override
public Set<String> jaxRsPackages() {

return null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,17 @@
import lombok.Setter;

import org.hibernate.SessionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;

import com.aol.micro.server.config.Config;
import com.aol.micro.server.spring.datasource.DataSourceBuilder;
import com.aol.micro.server.spring.datasource.DataDataSourceBuilder;
import com.aol.micro.server.spring.datasource.JdbcConfig;
import com.aol.micro.server.spring.datasource.hibernate.HibernateSessionBuilder;

public class SpringConfigurer implements SpringDBConfig {
private final Logger logger = LoggerFactory.getLogger(this.getClass());


@Setter
private ConfigurableListableBeanFactory beanFactory;
@Setter
Expand All @@ -31,8 +28,7 @@ public class SpringConfigurer implements SpringDBConfig {
private Config config;
@Setter
private AnnotationConfigWebApplicationContext rootContext;



public void createSpringApp(String name) {

JdbcConfig jdbc = buildJdbcProperties(rootContext, name);
Expand All @@ -42,11 +38,11 @@ public void createSpringApp(String name) {
beanFactory.registerSingleton(name + "DataSource", dataSource);
beanFactory.registerSingleton(name + "SessionFactory", sessionFactory);
beanFactory.registerSingleton(name + "HibernateTransactionManager", buildTransactionManager(name, config, dataSource, jdbc));

}

private DataSource buildDataSource(String name, JdbcConfig jdbc) {
return DataSourceBuilder.builder().env(jdbc).build().mainDataSource();
return DataDataSourceBuilder.builder().env(jdbc).build().mainDataSource();
}

private JdbcConfig buildJdbcProperties(AnnotationConfigWebApplicationContext rootContext, String name) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import javax.sql.DataSource;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.experimental.Builder;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand All @@ -16,25 +16,25 @@
@Configuration
@NoArgsConstructor
@AllArgsConstructor
public class DataSourceBuilder {
@Resource(name="mainEnv")
public class DataDataSourceBuilder {

@Resource(name = "mainEnv")
private JdbcConfig env;

@Bean(destroyMethod = "close", name = "mainDataSource")
public DataSource mainDataSource() {
return getDataSource();
}

private DataSource getDataSource() {
HikariDataSource ds = new HikariDataSource();

ds.setDriverClassName(env.getDriverClassName());
ds.setJdbcUrl(env.getUrl());
ds.setUsername(env.getUsername());
ds.setPassword(env.getPassword());


return ds;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import javax.sql.DataSource;

import lombok.AllArgsConstructor;
import lombok.experimental.Builder;
import lombok.Builder;

import org.hibernate.SessionFactory;
import org.slf4j.Logger;
Expand All @@ -17,60 +17,52 @@
import com.aol.cyclops.invokedynamic.ExceptionSoftener;
import com.aol.micro.server.spring.datasource.JdbcConfig;


@Builder
@AllArgsConstructor
public class HibernateSessionBuilder {
private final Logger logger = LoggerFactory.getLogger( getClass());


private final Logger logger = LoggerFactory.getLogger(getClass());

private final JdbcConfig env;
private final DataSource dataSource;
private final List<String> packages;

public SessionFactory sessionFactory() {

LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();

sessionFactoryBean.setDataSource(dataSource);

List<String> packagesToScan = packages;
sessionFactoryBean.setPackagesToScan(packagesToScan
.toArray(new String[packagesToScan.size()]));
sessionFactoryBean.setPackagesToScan(packagesToScan.toArray(new String[packagesToScan.size()]));

Properties p = new Properties();
p.setProperty("hibernate.dialect", env.getDialect());
if(env.getShowSql()!=null)
if (env.getShowSql() != null)
p.setProperty("hibernate.show_sql", env.getShowSql());

if (env.getDdlAuto() != null)
p.setProperty("hibernate.hbm2ddl.auto", env.getDdlAuto());

logger.info(
"Hibernate properties [ hibernate.dialect : {} ; hibernate.hbm2ddl.auto : {} ]",
env.getDialect(), env.getDdlAuto());
logger.info("Hibernate properties [ hibernate.dialect : {} ; hibernate.hbm2ddl.auto : {} ]", env.getDialect(), env.getDdlAuto());

sessionFactoryBean.setHibernateProperties(p);

try {
sessionFactoryBean.afterPropertiesSet();
} catch (Exception e) {
logger.error(e.getMessage(),e);
logger.error(e.getMessage(), e);
ExceptionSoftener.throwSoftenedException(e);
}
try{

try {
return sessionFactoryBean.getObject();
}catch(Exception e){
logger.error(e.getMessage(),e);
} catch (Exception e) {
logger.error(e.getMessage(), e);
ExceptionSoftener.throwSoftenedException(e);
}
return null;
}




public HibernateTransactionManager transactionManager() {
HibernateTransactionManager transactionManager = new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,14 @@
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import com.aol.micro.server.config.Config;
import com.aol.micro.server.config.ConfigAccessor;
import com.aol.micro.server.spring.datasource.JdbcConfig;

Expand All @@ -35,9 +32,8 @@ public EntityManagerFactory entityManagerFactory() {

LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);

factory.setPackagesToScan(new ConfigAccessor().get().getDataSources()
.get(new ConfigAccessor().get().getDefaultDataSourceName())

factory.setPackagesToScan(new ConfigAccessor().get().getDataSources().get(new ConfigAccessor().get().getDefaultDataSourceName())
.toArray(new String[0]));
factory.setDataSource(dataSource);
factory.afterPropertiesSet();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
import java.util.Set;

import com.aol.micro.server.Plugin;
import com.aol.micro.server.mysql.distlock.datasource.DataSourceBuilder;
import com.aol.micro.server.mysql.distlock.datasource.MysqlDataSourceBuilder;
import com.aol.micro.server.mysql.distlock.datasource.JdbcConfigDistLock;

public class MySqlPlugin implements Plugin {
public Set<Class> springClasses(){
return new HashSet(Arrays.asList(DistributedLockServiceMySqlImpl.class,
DataSourceBuilder.class,JdbcConfigDistLock.class));
MysqlDataSourceBuilder.class,JdbcConfigDistLock.class));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import javax.sql.DataSource;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.experimental.Builder;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand All @@ -16,7 +16,7 @@
@Configuration
@NoArgsConstructor
@AllArgsConstructor
public class DataSourceBuilder {
public class MysqlDataSourceBuilder {

@Resource(name = "distLockingEnv")
private JdbcConfigDistLock env;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.aol.micro.server.MicroserverApp;
import com.aol.micro.server.config.Microserver;
import com.aol.micro.server.spring.DataPlugin;
import com.aol.micro.server.spring.datasource.DataSourceBuilder;
import com.aol.micro.server.spring.datasource.DataDataSourceBuilder;
import com.aol.micro.server.spring.datasource.JdbcConfig;
import com.aol.micro.server.spring.datasource.hibernate.HibernateConfig;
import com.aol.micro.server.spring.datasource.hibernate.SpringDataConfig;
Expand Down