From eab17dc0ad633e5adb8c615db50bc5c17eb7e7c2 Mon Sep 17 00:00:00 2001 From: jcagarcia Date: Thu, 9 Feb 2017 16:25:53 +0100 Subject: [PATCH] Using CollectionValidator and ValidationAdvice classes instead of include into the generated project --- .../addon/dto/addon/DtoOperationsImpl.java | 2 +- .../addon/jpa/addon/JpaOperationsImpl.java | 2 +- .../addon/audit/JpaAuditOperationsImpl.java | 2 +- .../SpringletsJpaSecurityProvider.java | 2 +- .../addon/ControllerOperationsImpl.java | 65 +---------------- .../addon/CollectionValidator-template._java | 71 ------------------- .../addon/ValidatorAdvice-template._java | 37 ---------- .../annotations/RooCollectionValidator.java | 19 ----- .../annotations/RooValidatorAdvice.java | 19 ----- 9 files changed, 5 insertions(+), 214 deletions(-) delete mode 100644 addon-web-mvc-controller/addon/src/main/resources/org/springframework/roo/addon/web/mvc/controller/addon/CollectionValidator-template._java delete mode 100644 addon-web-mvc-controller/addon/src/main/resources/org/springframework/roo/addon/web/mvc/controller/addon/ValidatorAdvice-template._java delete mode 100644 addon-web-mvc-controller/annotations/src/main/java/org/springframework/roo/addon/web/mvc/controller/annotations/RooCollectionValidator.java delete mode 100644 addon-web-mvc-controller/annotations/src/main/java/org/springframework/roo/addon/web/mvc/controller/annotations/RooValidatorAdvice.java diff --git a/addon-dto/addon/src/main/java/org/springframework/roo/addon/dto/addon/DtoOperationsImpl.java b/addon-dto/addon/src/main/java/org/springframework/roo/addon/dto/addon/DtoOperationsImpl.java index 6a06d77605..d255a86b14 100644 --- a/addon-dto/addon/src/main/java/org/springframework/roo/addon/dto/addon/DtoOperationsImpl.java +++ b/addon-dto/addon/src/main/java/org/springframework/roo/addon/dto/addon/DtoOperationsImpl.java @@ -67,7 +67,7 @@ public class DtoOperationsImpl implements DtoOperations { protected final static Logger LOGGER = HandlerUtils.getLogger(DtoOperationsImpl.class); private static final Property SPRINGLETS_VERSION_PROPERTY = new Property("springlets.version", - "1.1.0.RELEASE"); + "1.2.0.BUILD-SNAPSHOT"); private static final Dependency SPRINGLETS_CONTEXT_DEPENDENCY = new Dependency("io.springlets", "springlets-context", "${springlets.version}"); diff --git a/addon-jpa/addon/src/main/java/org/springframework/roo/addon/jpa/addon/JpaOperationsImpl.java b/addon-jpa/addon/src/main/java/org/springframework/roo/addon/jpa/addon/JpaOperationsImpl.java index f85ff29b45..03ceb043f5 100644 --- a/addon-jpa/addon/src/main/java/org/springframework/roo/addon/jpa/addon/JpaOperationsImpl.java +++ b/addon-jpa/addon/src/main/java/org/springframework/roo/addon/jpa/addon/JpaOperationsImpl.java @@ -109,7 +109,7 @@ public class JpaOperationsImpl implements JpaOperations { private ServiceInstaceManager serviceManager = new ServiceInstaceManager(); private static final Property SPRINGLETS_VERSION_PROPERTY = new Property("springlets.version", - "1.1.0.RELEASE"); + "1.2.0.BUILD-SNAPSHOT"); private static final Dependency SPRINGLETS_DATA_JPA_STARTER = new Dependency("io.springlets", "springlets-data-jpa", "${springlets.version}"); private static final Dependency SPRINGLETS_DATA_COMMONS_STARTER = new Dependency("io.springlets", diff --git a/addon-jpa/addon/src/main/java/org/springframework/roo/addon/jpa/addon/audit/JpaAuditOperationsImpl.java b/addon-jpa/addon/src/main/java/org/springframework/roo/addon/jpa/addon/audit/JpaAuditOperationsImpl.java index a3309e407d..b67e09975a 100644 --- a/addon-jpa/addon/src/main/java/org/springframework/roo/addon/jpa/addon/audit/JpaAuditOperationsImpl.java +++ b/addon-jpa/addon/src/main/java/org/springframework/roo/addon/jpa/addon/audit/JpaAuditOperationsImpl.java @@ -54,7 +54,7 @@ public class JpaAuditOperationsImpl implements JpaAuditOperations { private ServiceInstaceManager serviceInstaceManager = new ServiceInstaceManager(); private static final Property SPRINGLETS_VERSION_PROPERTY = new Property("springlets.version", - "1.1.0.RELEASE"); + "1.2.0.BUILD-SNAPSHOT"); private static final Dependency SPRINGLETS_DATA_JPA_STARTER = new Dependency("io.springlets", "springlets-boot-starter-data-jpa", "${springlets.version}"); diff --git a/addon-security/addon/src/main/java/org/springframework/roo/addon/security/addon/security/providers/SpringletsJpaSecurityProvider.java b/addon-security/addon/src/main/java/org/springframework/roo/addon/security/addon/security/providers/SpringletsJpaSecurityProvider.java index abb11037f9..f15cb913bb 100644 --- a/addon-security/addon/src/main/java/org/springframework/roo/addon/security/addon/security/providers/SpringletsJpaSecurityProvider.java +++ b/addon-security/addon/src/main/java/org/springframework/roo/addon/security/addon/security/providers/SpringletsJpaSecurityProvider.java @@ -31,7 +31,7 @@ public class SpringletsJpaSecurityProvider implements SecurityProvider { private static final Property SPRINGLETS_VERSION_PROPERTY = new Property("springlets.version", - "1.1.0.RELEASE"); + "1.2.0.BUILD-SNAPSHOT"); private static final Dependency SPRINGLETS_SECURITY_AUTHENTICATION_STARTER = new Dependency( "io.springlets", "springlets-boot-starter-authentication", "${springlets.version}"); diff --git a/addon-web-mvc-controller/addon/src/main/java/org/springframework/roo/addon/web/mvc/controller/addon/ControllerOperationsImpl.java b/addon-web-mvc-controller/addon/src/main/java/org/springframework/roo/addon/web/mvc/controller/addon/ControllerOperationsImpl.java index 3de7f1ebd6..8bf4145047 100644 --- a/addon-web-mvc-controller/addon/src/main/java/org/springframework/roo/addon/web/mvc/controller/addon/ControllerOperationsImpl.java +++ b/addon-web-mvc-controller/addon/src/main/java/org/springframework/roo/addon/web/mvc/controller/addon/ControllerOperationsImpl.java @@ -108,7 +108,7 @@ public class ControllerOperationsImpl implements ControllerOperations { "org.springframework.boot.jackson.JsonObjectDeserializer"); private static final Property SPRINGLETS_VERSION_PROPERTY = new Property("springlets.version", - "1.1.0.RELEASE"); + "1.2.0.BUILD-SNAPSHOT"); private static final Dependency SPRINGLETS_WEB_STARTER = new Dependency("io.springlets", "springlets-boot-starter-web", "${springlets.version}"); private static final Property TRACEE_PROPERTY = new Property("tracee.version", "1.1.2"); @@ -231,12 +231,6 @@ public void setup(Pom module, boolean usesDefaultModule) { // Create JSON configuration class createDomainModelModule(module); - // Create Roo Validator classes - createClassFromTemplate(module, "CollectionValidator-template._java", "CollectionValidator", - "validation"); - createClassFromTemplate(module, "ValidatorAdvice-template._java", "ValidatorAdvice", - "validation"); - // Adding spring.jackson.serialization.indent-output property getApplicationConfigService().addProperty(module.getModuleName(), "spring.jackson.serialization.indent-output", "true", "dev", true); @@ -788,63 +782,6 @@ private AnnotationMetadataBuilder getRooDetailAnnotation(final String relationFi return annotationDetail; } - /** - * Creates a class from a template - * - * @param module - * the Pom related to modeule where the class should be created - * @param templateName - * the String with the template name - * @param className - * the String with the class name to create - * @param packageLastElement - * the String (optional) with the last element of the package, - * which will be appended to module artifactId. If null, package - * will be module artifactId - */ - public void createClassFromTemplate(Pom module, String templateName, String className, - String packageLastElement) { - - // Set package - String packageName = null; - if (StringUtils.isNotBlank(packageLastElement)) { - packageName = - String.format("%s.%s", getTypeLocationService().getTopLevelPackageForModule(module), - packageLastElement); - } else { - packageName = module.getGroupId(); - } - - // Include implementation of Validator from template - final JavaType type = - new JavaType(String.format("%s.%s", packageName, className), module.getModuleName()); - Validate.notNull(type.getModule(), - "ERROR: Module name is required to generate a valid JavaType"); - final String identifier = - getPathResolver().getCanonicalPath(type.getModule(), Path.SRC_MAIN_JAVA, type); - InputStream inputStream = null; - - // Check first if file exists - if (!getFileManager().exists(identifier)) { - try { - - // Use defined template - inputStream = FileUtils.getInputStream(getClass(), templateName); - String input = IOUtils.toString(inputStream); - - // Replacing package - input = input.replace("__PACKAGE__", packageName); - - // Creating CollectionValidator - getFileManager().createOrUpdateTextFileIfRequired(identifier, input, true); - } catch (final IOException e) { - throw new IllegalStateException(String.format("Unable to create '%s'", identifier), e); - } finally { - IOUtils.closeQuietly(inputStream); - } - } - } - /** * This method gets all implementations of ControllerMVCResponseService * interface to be able to locate all installed ControllerMVCResponseService diff --git a/addon-web-mvc-controller/addon/src/main/resources/org/springframework/roo/addon/web/mvc/controller/addon/CollectionValidator-template._java b/addon-web-mvc-controller/addon/src/main/resources/org/springframework/roo/addon/web/mvc/controller/addon/CollectionValidator-template._java deleted file mode 100644 index f45e42c8e5..0000000000 --- a/addon-web-mvc-controller/addon/src/main/resources/org/springframework/roo/addon/web/mvc/controller/addon/CollectionValidator-template._java +++ /dev/null @@ -1,71 +0,0 @@ -package __PACKAGE__; - -import org.springframework.roo.addon.web.mvc.controller.annotations.RooCollectionValidator; -import org.springframework.validation.BeanPropertyBindingResult; -import org.springframework.validation.Errors; -import org.springframework.validation.ValidationUtils; -import org.springframework.validation.Validator; -import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; - -import java.util.Collection; - -/** - * = CollectionValidator - * - * Spring {@link Validator} that iterates over the elements of a {@link Collection} and run the - * validation process for each of them individually. - * - */ -@RooCollectionValidator -public class CollectionValidator implements Validator { - - /** - * TODO Auto-generated attribute documentation - */ - private final Validator validator; - - /** - * TODO Auto-generated constructor documentation - * - * @param validatorFactory - */ - public CollectionValidator(LocalValidatorFactoryBean validatorFactory) { - this.validator = validatorFactory; - } - - /** - * TODO Auto-generated method documentation - * - * @param clazz - * @return boolean - */ - @Override - public boolean supports(Class clazz) { - return Collection.class.isAssignableFrom(clazz); - } - - /** - * Validate each element inside the supplied {@link Collection}. - * - * The supplied errors instance is used to report the validation errors. - * - * @param target the collection that is to be validated - * @param errors contextual state about the validation process - */ - @Override - @SuppressWarnings("rawtypes") - public void validate(Object target, Errors errors) { - Collection collection = (Collection) target; - int index = 0; - - for (Object object : collection) { - BeanPropertyBindingResult elementErrors = new BeanPropertyBindingResult(object, - errors.getObjectName()); - elementErrors.setNestedPath("[".concat(Integer.toString(index++)).concat("].")); - ValidationUtils.invokeValidator(validator, object, elementErrors); - - errors.addAllErrors(elementErrors); - } - } - -} diff --git a/addon-web-mvc-controller/addon/src/main/resources/org/springframework/roo/addon/web/mvc/controller/addon/ValidatorAdvice-template._java b/addon-web-mvc-controller/addon/src/main/resources/org/springframework/roo/addon/web/mvc/controller/addon/ValidatorAdvice-template._java deleted file mode 100644 index 924f3da69d..0000000000 --- a/addon-web-mvc-controller/addon/src/main/resources/org/springframework/roo/addon/web/mvc/controller/addon/ValidatorAdvice-template._java +++ /dev/null @@ -1,37 +0,0 @@ -package __PACKAGE__; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.roo.addon.web.mvc.controller.annotations.RooValidatorAdvice; -import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; -import org.springframework.web.bind.WebDataBinder; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.InitBinder; - -/** - * Controller advice that adds the {@link CollectionValidator} to the {@link WebDataBinder}. - * - */ -@ControllerAdvice -@RooValidatorAdvice -public class ValidatorAdvice { - - private final CollectionValidator collectionValidator; - - @Autowired - public ValidatorAdvice(LocalValidatorFactoryBean validatorFactory) { - collectionValidator = new CollectionValidator(validatorFactory); - } - - /** - * Adds the {@link CollectionValidator} to the supplied {@link WebDataBinder} - * - * @param binder web data binder. - */ - @InitBinder - public void initBinder(WebDataBinder binder) { - Object target = binder.getTarget(); - if (target != null && collectionValidator.supports(target.getClass())) { - binder.addValidators(collectionValidator); - } - } -} \ No newline at end of file diff --git a/addon-web-mvc-controller/annotations/src/main/java/org/springframework/roo/addon/web/mvc/controller/annotations/RooCollectionValidator.java b/addon-web-mvc-controller/annotations/src/main/java/org/springframework/roo/addon/web/mvc/controller/annotations/RooCollectionValidator.java deleted file mode 100644 index 6bf8459368..0000000000 --- a/addon-web-mvc-controller/annotations/src/main/java/org/springframework/roo/addon/web/mvc/controller/annotations/RooCollectionValidator.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.springframework.roo.addon.web.mvc.controller.annotations; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Indicates a type that adds Collection validation to Spring MVC. - *

- * This annotation doesn't produce any code by the moment - * - * @author Sergio Clares - * @since 2.0 - */ -@Retention(RetentionPolicy.SOURCE) -@Target(ElementType.TYPE) -public @interface RooCollectionValidator { -} diff --git a/addon-web-mvc-controller/annotations/src/main/java/org/springframework/roo/addon/web/mvc/controller/annotations/RooValidatorAdvice.java b/addon-web-mvc-controller/annotations/src/main/java/org/springframework/roo/addon/web/mvc/controller/annotations/RooValidatorAdvice.java deleted file mode 100644 index ee86429ca8..0000000000 --- a/addon-web-mvc-controller/annotations/src/main/java/org/springframework/roo/addon/web/mvc/controller/annotations/RooValidatorAdvice.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.springframework.roo.addon.web.mvc.controller.annotations; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Indicates a type that adds CollectionValidator advice to Controllers. - *

- * This annotation doesn't produce any code by the moment. - * - * @author Sergio Clares - * @since 2.0 - */ -@Retention(RetentionPolicy.SOURCE) -@Target(ElementType.TYPE) -public @interface RooValidatorAdvice { -}