diff --git a/docker/config/application.tmpl b/docker/config/application.tmpl index 9a56dad4cd7bcdc5d78db3b07473f28521149358..fcdc4ec92f27f0876f4bbd9d9d24c4f157fc1e4e 100644 --- a/docker/config/application.tmpl +++ b/docker/config/application.tmpl @@ -21,6 +21,10 @@ spring: username: {{ default .Env.FEATURES_DB_USER "postgres" }} password: {{ .Env.FEATURES_DB_PASSWORD }} driver-class-name: org.postgresql.Driver + data: + jpa: + repositories: + bootstrap-mode: default jpa: hibernate: dialect: org.hibernate.dialect.PostgreSQL9Dialect diff --git a/pom.xml b/pom.xml index 4963d1dbd4b1c951bd22f9b18397df92b98a7929..911818e6e2848f3a3208eebbdf832bba1ceed7af 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ <asciidoctor.maven.plugin.version>1.5.5</asciidoctor.maven.plugin.version> <asciidoctorj.pdf.version>1.5.0-alpha.15</asciidoctorj.pdf.version> <asciidoctorj.version>1.5.5</asciidoctorj.version> - <spring-data-commons.version>1.13.17.RELEASE</spring-data-commons.version> + <spring-data-commons.version>1.12.11.RELEASE</spring-data-commons.version> <angularjs.version>1.5.7</angularjs.version> <jquery.version>3.0.0</jquery.version> <bootstrap.version>3.3.7</bootstrap.version> diff --git a/src/main/java/eu/hbp/mip/MIPApplication.java b/src/main/java/eu/hbp/mip/MIPApplication.java index df70ba78a5ba397676f1ad1533895e86a67c4f89..b3f8648cdf599b97bc2965426532f4f21156d612 100644 --- a/src/main/java/eu/hbp/mip/MIPApplication.java +++ b/src/main/java/eu/hbp/mip/MIPApplication.java @@ -4,10 +4,19 @@ package eu.hbp.mip; +import eu.hbp.mip.configuration.*; import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; -@SpringBootApplication + +@Configuration +@EnableAutoConfiguration(exclude = { ValidationAutoConfiguration.class }) +@Import({ AkkaConfiguration.class, BugsnagConfiguration.class, + CacheConfiguration.class, PersistenceConfiguration.class, + SecurityConfiguration.class, WebConfiguration.class}) public class MIPApplication { public static void main(String[] args) { diff --git a/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java b/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java index d85bf5d3afbee20d3f03c4b37b864636c0892ff5..6e679f6716228ccbb392ed131c1c3f3386d83205 100644 --- a/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java +++ b/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java @@ -27,7 +27,7 @@ import static eu.hbp.mip.akka.SpringExtension.SPRING_EXTENSION_PROVIDER; @Configuration @ComponentScan -class AkkaConfiguration { +public class AkkaConfiguration { protected final Logger LOGGER = LoggerFactory.getLogger(this.getClass()); diff --git a/src/main/java/eu/hbp/mip/configuration/BugsnagConfig.java b/src/main/java/eu/hbp/mip/configuration/BugsnagConfiguration.java similarity index 92% rename from src/main/java/eu/hbp/mip/configuration/BugsnagConfig.java rename to src/main/java/eu/hbp/mip/configuration/BugsnagConfiguration.java index 4bc042fe8368cbe1ff127a349ac8dbb1b3e1be16..b02b1e6a1001ad3cbdff4cfa03a469086b0c08d2 100644 --- a/src/main/java/eu/hbp/mip/configuration/BugsnagConfig.java +++ b/src/main/java/eu/hbp/mip/configuration/BugsnagConfiguration.java @@ -8,7 +8,7 @@ import org.springframework.context.annotation.Import; @Configuration @Import(BugsnagSpringConfiguration.class) -public class BugsnagConfig { +public class BugsnagConfiguration { @Bean public Bugsnag bugsnag() { return new Bugsnag("dff301aa15eb795a6d8b22b600586f77"); diff --git a/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java b/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java index 069f6552579626529ef21e11c743ec5d7fa34f90..d1a57c65458bc836e55d7c7115ebfed0af1d0ee3 100644 --- a/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java +++ b/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java @@ -11,9 +11,12 @@ import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.context.annotation.*; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.JpaVendorAdapter; 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 javax.sql.DataSource; @@ -22,7 +25,8 @@ import javax.sql.DataSource; */ @Configuration -@EnableJpaRepositories(value = "eu.hbp.mip.repositories") +@EnableJpaRepositories("eu.hbp.mip.repositories") +@EnableTransactionManagement @EntityScan(basePackages = "eu.hbp.mip.model") public class PersistenceConfiguration { @@ -67,11 +71,20 @@ public class PersistenceConfiguration { public LocalContainerEntityManagerFactoryBean entityManagerFactory() { LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); em.setDataSource(portalDataSource()); + em.setPackagesToScan("eu.hbp.mip.model"); + em.setPersistenceUnitName("portal"); JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); em.setJpaVendorAdapter(vendorAdapter); return em; } + @Bean + public PlatformTransactionManager transactionManager() { + JpaTransactionManager txManager = new JpaTransactionManager(); + txManager.setEntityManagerFactory(entityManagerFactory().getNativeEntityManagerFactory()); + return txManager; + } + @Bean(name = "flyway", initMethod = "migrate") public Flyway migrations() { Flyway flyway = new Flyway(); diff --git a/src/main/java/eu/hbp/mip/model/Article.java b/src/main/java/eu/hbp/mip/model/Article.java index 220839623d0c63f32d3cb30f28436513ae59ea2b..4fdfc40b88da0e7661a00271ab9875c3ae20ff25 100644 --- a/src/main/java/eu/hbp/mip/model/Article.java +++ b/src/main/java/eu/hbp/mip/model/Article.java @@ -7,6 +7,7 @@ package eu.hbp.mip.model; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; +import org.springframework.validation.annotation.Validated; import javax.persistence.*; import javax.validation.constraints.NotNull; @@ -19,6 +20,7 @@ import java.util.List; @Table(name = "`article`") @ApiModel @JsonInclude(JsonInclude.Include.NON_NULL) +@Validated public class Article { @Id