diff --git a/pom.xml b/pom.xml
index 52f316f..8ee1fee 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
ucles.weblab
weblab-spring-boot
pom
- 0.5-SNAPSHOT
+ 2.0.0-SNAPSHOT
weblab-spring-boot-starter
@@ -18,8 +18,9 @@
- 0.5-SNAPSHOT
- 1.5.3.RELEASE
+ 2.0.0-SNAPSHOT
+ 2.0.2.RELEASE
+ 1.0.9.RELEASE
5.19.0.1
1.8
UTF-8
diff --git a/weblab-spring-boot-autoconfiguration/pom.xml b/weblab-spring-boot-autoconfiguration/pom.xml
index d2df88d..a79db72 100644
--- a/weblab-spring-boot-autoconfiguration/pom.xml
+++ b/weblab-spring-boot-autoconfiguration/pom.xml
@@ -5,7 +5,7 @@
weblab-spring-boot
ucles.weblab
- 0.5-SNAPSHOT
+ 2.0.0-SNAPSHOT
4.0.0
@@ -36,11 +36,6 @@
hibernate-entitymanager
true
-
- ucles.weblab
- weblab-files
- true
-
ucles.weblab
weblab-audit
diff --git a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/feedback/FeedbackAutoConfiguration.java b/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/feedback/FeedbackAutoConfiguration.java
index 8a4406a..8ae9689 100644
--- a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/feedback/FeedbackAutoConfiguration.java
+++ b/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/feedback/FeedbackAutoConfiguration.java
@@ -8,8 +8,8 @@
import org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration;
-import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
+import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
+import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.convert.threeten.Jsr310JpaConverters;
diff --git a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/files/FilesAutoConfiguration.java b/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/files/FilesAutoConfiguration.java
deleted file mode 100644
index db52b57..0000000
--- a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/files/FilesAutoConfiguration.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package ucles.weblab.common.config.files;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import ucles.weblab.common.files.domain.AesGcmEncryptionStrategy;
-import ucles.weblab.common.files.domain.AutoPurgeSecureFileCollectionServiceImpl;
-import ucles.weblab.common.files.domain.DummyEncryptionStrategy;
-import ucles.weblab.common.files.domain.EncryptionService;
-import ucles.weblab.common.files.domain.EncryptionServiceImpl;
-import ucles.weblab.common.files.domain.FilesBuilders;
-import ucles.weblab.common.files.domain.SecureFileCollectionRepository;
-import ucles.weblab.common.files.domain.SecureFileCollectionService;
-import ucles.weblab.common.files.domain.SecureFileRepository;
-import ucles.weblab.common.files.webapi.FileController;
-import ucles.weblab.common.files.webapi.converter.FilesConverters;
-
-import java.util.Arrays;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-/**
- * Auto-configuration for the files domain.
- */
-@Configuration
-@ConditionalOnClass({EncryptionService.class, SecureFileCollectionRepository.class})
-//@AutoConfigureAfter({FilesJpaAutoConfiguration.class, FilesS3AutoConfiguration.class})
-@Import({FilesConverters.class, FilesBuilders.class})
-@ComponentScan(basePackageClasses = FileController.class)
-public class FilesAutoConfiguration {
-
- /*Optional property for AesGcmEncryptionStrategy*/
- @Value("${aad.string:}")
- private String aadString;
-
- @Bean
- @ConditionalOnProperty("files.security.secretkey")
- @ConditionalOnMissingBean(EncryptionService.class)
- public EncryptionService encryptionService(@Value("${files.security.secretkey}") String secretKey) {
- return new EncryptionServiceImpl(Arrays.asList(new AesGcmEncryptionStrategy(aadString.isEmpty() ? null : aadString),
- new DummyEncryptionStrategy()),
- secretKey.getBytes(UTF_8));
- }
-
- @Bean
- public SecureFileCollectionService secureFileCollectionService(SecureFileCollectionRepository secureFileCollectionRepository, SecureFileRepository secureFileRepository) {
- return new AutoPurgeSecureFileCollectionServiceImpl(secureFileCollectionRepository, secureFileRepository);
- }
-}
diff --git a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/files/FilesJpaAutoConfiguration.java b/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/files/FilesJpaAutoConfiguration.java
deleted file mode 100644
index f794cc8..0000000
--- a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/files/FilesJpaAutoConfiguration.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package ucles.weblab.common.config.files;
-
-import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.jpa.convert.threeten.Jsr310JpaConverters;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import ucles.weblab.common.files.domain.FilesFactory;
-import ucles.weblab.common.files.domain.jpa.FilesFactoryJpa;
-import ucles.weblab.common.files.domain.jpa.SecureFileCollectionRepositoryJpa;
-import ucles.weblab.common.files.domain.jpa.SecureFileEntityJpa;
-
-import javax.sql.DataSource;
-
-/**
- * Auto-configuration for JPA support for file storage.
- *
- * @since 19/06/15
- */
-@Configuration
-@AutoConfigureAfter({DataSourceAutoConfiguration.class, JpaRepositoriesAutoConfiguration.class})
-@ConditionalOnBean(DataSource.class)
-@ConditionalOnClass({JpaRepository.class, FilesFactory.class})
-@ConditionalOnProperty(prefix = "spring.data.jpa.repositories", name = "enabled", havingValue = "true", matchIfMissing = true)
-@EnableJpaRepositories(basePackageClasses = {SecureFileCollectionRepositoryJpa.class})
-@EntityScan(basePackageClasses = {SecureFileEntityJpa.class, Jsr310JpaConverters.class})
-public class FilesJpaAutoConfiguration {
- @Bean
- public FilesFactory filesFactoryJpa() {
- return new FilesFactoryJpa();
- }
-}
diff --git a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/files/FilesMongoAutoConfiguration.java b/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/files/FilesMongoAutoConfiguration.java
deleted file mode 100644
index a51aa94..0000000
--- a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/files/FilesMongoAutoConfiguration.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package ucles.weblab.common.config.files;
-
-import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
-import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.mongodb.core.MongoOperations;
-import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
-import ucles.weblab.common.files.domain.EncryptionService;
-import ucles.weblab.common.files.domain.FilesFactory;
-import ucles.weblab.common.files.domain.SecureFileRepository;
-import ucles.weblab.common.files.domain.mongodb.FilesFactoryMongo;
-import ucles.weblab.common.files.domain.mongodb.SecureFileCollectionRepositoryMongo;
-import ucles.weblab.common.files.domain.mongodb.SecureFileRepositoryMongo;
-
-/**
- * Auto-configuration for MongoDB support for file storage.
- *
- * @since 19/06/15
- */
-@Configuration
-@AutoConfigureAfter({MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
-@ConditionalOnClass(FilesFactory.class)
-@ConditionalOnBean(MongoOperations.class)
-@ConditionalOnProperty(prefix = "spring.data.mongodb.repositories", name = "enabled", havingValue = "true", matchIfMissing = true)
-@EnableMongoRepositories(basePackageClasses = {SecureFileCollectionRepositoryMongo.class})
-public class FilesMongoAutoConfiguration {
- @Bean
- public FilesFactory filesFactoryMongo() {
- return new FilesFactoryMongo();
- }
-
- @Bean
- public SecureFileRepository secureFileRepositoryMongo(MongoOperations mongoOperations, EncryptionService encryptionService) {
- return new SecureFileRepositoryMongo(mongoOperations, encryptionService);
- }
-}
diff --git a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/files/FilesS3AutoConfiguration.java b/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/files/FilesS3AutoConfiguration.java
deleted file mode 100644
index 640afae..0000000
--- a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/files/FilesS3AutoConfiguration.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package ucles.weblab.common.config.files;
-
-import com.amazonaws.auth.BasicAWSCredentials;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import ucles.weblab.common.files.blob.api.BlobStoreService;
-import ucles.weblab.common.files.domain.s3.BlobStoreServiceS3;
-import ucles.weblab.common.files.domain.s3.S3HealthCheckIndicator;
-
-/**
- * An auto configuration class for when there is a BlobStoreServiceS3 initialised.
- *
- * @author Sukhraj
- */
-@Configuration
-@ConditionalOnBean({BlobStoreServiceS3.class})
-public class FilesS3AutoConfiguration {
-
- /**
- * Declare health check for AWS S3
- * @param basicAWSCredentials
- * @param blobStoreService
- * @return
- */
- @Bean
- public S3HealthCheckIndicator healthCheckIndicator(BasicAWSCredentials basicAWSCredentials,
- BlobStoreService blobStoreService) {
-
- return new S3HealthCheckIndicator(basicAWSCredentials, blobStoreService.getBucketName());
- }
-
-}
diff --git a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/forms/FormsMongoAutoConfiguration.java b/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/forms/FormsMongoAutoConfiguration.java
index 17e4068..578058d 100644
--- a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/forms/FormsMongoAutoConfiguration.java
+++ b/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/forms/FormsMongoAutoConfiguration.java
@@ -8,8 +8,8 @@
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
-import org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration;
-import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
+import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
+import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@@ -33,16 +33,16 @@
//@ConditionalOnBean(MongoOperations.class)
@ConditionalOnProperty(prefix = "spring.data.mongodb.repositories", name = "enabled", havingValue = "true", matchIfMissing = true)
@EnableMongoRepositories(basePackageClasses = {FormRepositoryMongo.class})
-public class FormsMongoAutoConfiguration {
-
-
+public class FormsMongoAutoConfiguration {
+
+
@Configuration
@AutoConfigureAfter({DispatcherServletAutoConfiguration.class, WebMvcAutoConfiguration.class})
@ConditionalOnWebApplication
@ConditionalOnClass({RestController.class, ResourceAssembler.class, ObjectMapper.class})
@ComponentScan(basePackageClasses = {FormController.class })
public static class FormsAutoConfigurationWeb {
-
+
@Bean
public FormResourceAssembler formResourceAssembler(ObjectMapper objectMapper) {
return new FormResourceAssembler(objectMapper);
@@ -55,9 +55,9 @@ public FormDelegate formDelegate(FormRepositoryMongo formRepositoryMongo,
ObjectMapper objectMapper) {
return new FormDelegate(formRepositoryMongo, formAssembler, formFactory, objectMapper);
}
-
+
}
-
+
@Bean
public FormFactory formFactoryMongo() {
return new FormFactoryMongo();
diff --git a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/schema/SchemaCreatorAutoConfiguration.java b/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/schema/SchemaCreatorAutoConfiguration.java
index 436fecc..457e7f6 100644
--- a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/schema/SchemaCreatorAutoConfiguration.java
+++ b/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/schema/SchemaCreatorAutoConfiguration.java
@@ -6,12 +6,13 @@
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration;
+import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler;
import org.springframework.security.access.expression.method.MethodSecurityExpressionHandler;
import org.springframework.security.core.context.SecurityContextHolder;
+import ucles.weblab.common.config.xc.CrossContextAutoConfiguration;
import ucles.weblab.common.i18n.service.LocalisationService;
import ucles.weblab.common.schema.webapi.ControllerMethodSchemaCreator;
import ucles.weblab.common.schema.webapi.EnumSchemaCreator;
@@ -27,7 +28,7 @@
@Configuration
@ConditionalOnBean({ ObjectMapper.class, CrossContextConversionService.class })
@ConditionalOnClass({ SecurityContextHolder.class, JsonSchemaFactory.class, SecurityChecker.class, MethodSecurityExpressionHandler.class, ResourceSchemaCreator.class })
-@AutoConfigureAfter(SecurityAutoConfiguration.class)
+@AutoConfigureAfter({SecurityAutoConfiguration.class, CrossContextAutoConfiguration.class})
public class SchemaCreatorAutoConfiguration {
@Bean
diff --git a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/xc/CrossContextAutoConfiguration.java b/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/xc/CrossContextAutoConfiguration.java
index ee0ac05..ea1db94 100644
--- a/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/xc/CrossContextAutoConfiguration.java
+++ b/weblab-spring-boot-autoconfiguration/src/main/java/ucles/weblab/common/config/xc/CrossContextAutoConfiguration.java
@@ -9,8 +9,8 @@
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration;
-import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
+import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
+import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
diff --git a/weblab-spring-boot-autoconfiguration/src/main/resources/META-INF/spring.factories b/weblab-spring-boot-autoconfiguration/src/main/resources/META-INF/spring.factories
index 1c96add..1bec302 100644
--- a/weblab-spring-boot-autoconfiguration/src/main/resources/META-INF/spring.factories
+++ b/weblab-spring-boot-autoconfiguration/src/main/resources/META-INF/spring.factories
@@ -1,8 +1,4 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
- ucles.weblab.common.config.files.FilesAutoConfiguration,\
- ucles.weblab.common.config.files.FilesJpaAutoConfiguration,\
- ucles.weblab.common.config.files.FilesMongoAutoConfiguration,\
- ucles.weblab.common.config.files.FilesS3AutoConfiguration,\
ucles.weblab.common.config.audit.AuditAutoConfiguration,\
ucles.weblab.common.config.forms.FormsAutoConfiguration,\
ucles.weblab.common.config.feedback.FeedbackAutoConfiguration,\
diff --git a/weblab-spring-boot-starter-actions/pom.xml b/weblab-spring-boot-starter-actions/pom.xml
index 2dc2d5a..61f73bd 100644
--- a/weblab-spring-boot-starter-actions/pom.xml
+++ b/weblab-spring-boot-starter-actions/pom.xml
@@ -5,7 +5,7 @@
weblab-spring-boot
ucles.weblab
- 0.5-SNAPSHOT
+ 2.0.0-SNAPSHOT
4.0.0
diff --git a/weblab-spring-boot-starter-actions/src/main/java/ucles/weblab/common/actions/webapi/ActionDecorator.java b/weblab-spring-boot-starter-actions/src/main/java/ucles/weblab/common/actions/webapi/ActionDecorator.java
index 821b22f..132b94d 100644
--- a/weblab-spring-boot-starter-actions/src/main/java/ucles/weblab/common/actions/webapi/ActionDecorator.java
+++ b/weblab-spring-boot-starter-actions/src/main/java/ucles/weblab/common/actions/webapi/ActionDecorator.java
@@ -3,17 +3,18 @@
import com.fasterxml.jackson.module.jsonSchema.types.NullSchema;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.core.MethodIntrospector;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.hateoas.ResourceSupport;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
+import org.springframework.util.ReflectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.method.HandlerMethodSelector;
import ucles.weblab.common.i18n.service.LocalisationService;
import ucles.weblab.common.schema.webapi.ResourceSchemaCreator;
import ucles.weblab.common.security.SecurityChecker;
@@ -172,8 +173,8 @@ private Optional processControllerAction(Actio
}
private Method findControllerMethod(ActionCommand actionCommand) {
- final Set methods = HandlerMethodSelector.selectMethods(actionCommand.controller(),
- method -> actionCommand.method().equals(method.getName()));
+ final Set methods = MethodIntrospector.selectMethods(actionCommand.controller(),
+ (ReflectionUtils.MethodFilter) method -> actionCommand.method().equals(method.getName()));
if (methods.size() > 1) {
log.error("More than one controller method matches ");
return null;
diff --git a/weblab-spring-boot-starter-test/pom.xml b/weblab-spring-boot-starter-test/pom.xml
index 30533e6..b3fa0eb 100644
--- a/weblab-spring-boot-starter-test/pom.xml
+++ b/weblab-spring-boot-starter-test/pom.xml
@@ -5,7 +5,7 @@
weblab-spring-boot
ucles.weblab
- 0.5-SNAPSHOT
+ 2.0.0-SNAPSHOT
4.0.0
@@ -64,6 +64,7 @@
org.springframework.security
spring-security-jwt
+ ${spring-security-jwt.version}