From 06190b135353cbff7f1c55a3ad8690bf3209f454 Mon Sep 17 00:00:00 2001 From: Ilayaperumal Gopinathan Date: Mon, 20 Jul 2015 10:25:05 -0700 Subject: [PATCH] Remove spring-xd-module dependency - Remove `spring-xd-module` dependency from spring-cloud-stream - Move `DateFormat` validation class to sample --- pom.xml | 10 -- .../src/main/java/source/DateFormat.java | 93 +++++++++++++++++++ .../source/TimeSourceOptionsMetadata.java | 2 - spring-cloud-stream/pom.xml | 5 - 4 files changed, 93 insertions(+), 17 deletions(-) create mode 100644 spring-cloud-stream-samples/source/src/main/java/source/DateFormat.java diff --git a/pom.xml b/pom.xml index bba99596d..a498b69d0 100644 --- a/pom.xml +++ b/pom.xml @@ -52,11 +52,6 @@ org.springframework.cloud spring-cloud-stream ${project.version} - - - org.springframework.cloud - spring-xd-runner - ${project.version} org.springframework.cloud @@ -68,11 +63,6 @@ spring-cloud-stream-common ${project.version} - - org.springframework.xd - spring-xd-module - ${spring-xd.version} - org.springframework.cloud spring-cloud-stream-binder-local diff --git a/spring-cloud-stream-samples/source/src/main/java/source/DateFormat.java b/spring-cloud-stream-samples/source/src/main/java/source/DateFormat.java new file mode 100644 index 000000000..ee0ce7964 --- /dev/null +++ b/spring-cloud-stream-samples/source/src/main/java/source/DateFormat.java @@ -0,0 +1,93 @@ +/* + * Copyright 2015 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package source; + +import static java.lang.annotation.ElementType.*; +import static java.lang.annotation.RetentionPolicy.*; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; +import java.text.SimpleDateFormat; + +import javax.validation.Constraint; +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; +import javax.validation.Payload; + +/** + * The annotated String must be a valid {@link java.text.SimpleDateFormat} pattern. + * + * @author Eric Bottard + */ +@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER}) +@Retention(RUNTIME) +@Documented +@Constraint(validatedBy = {DateFormat.DateFormatValidator.class}) +public @interface DateFormat { + + String DEFAULT_MESSAGE = ""; + + String message() default DEFAULT_MESSAGE; + + Class[] groups() default {}; + + Class[] payload() default {}; + + + /** + * Defines several {@link DateFormat} annotations on the same element. + * + * @see DateFormat + */ + @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER}) + @Retention(RUNTIME) + @Documented + @interface List { + + DateFormat[] value(); + } + + public static class DateFormatValidator implements ConstraintValidator { + + private String message; + + @Override + public void initialize(DateFormat constraintAnnotation) { + this.message = constraintAnnotation.message(); + } + + @Override + public boolean isValid(CharSequence value, ConstraintValidatorContext context) { + if (value == null) { + return true; + } + try { + new SimpleDateFormat(value.toString()); + } + catch (IllegalArgumentException e) { + if (DEFAULT_MESSAGE.equals(this.message)) { + context.disableDefaultConstraintViolation(); + context.buildConstraintViolationWithTemplate(e.getMessage()).addConstraintViolation(); + } + return false; + } + return true; + } + } + +} diff --git a/spring-cloud-stream-samples/source/src/main/java/source/TimeSourceOptionsMetadata.java b/spring-cloud-stream-samples/source/src/main/java/source/TimeSourceOptionsMetadata.java index 5f184f6ae..ab2fb3937 100644 --- a/spring-cloud-stream-samples/source/src/main/java/source/TimeSourceOptionsMetadata.java +++ b/spring-cloud-stream-samples/source/src/main/java/source/TimeSourceOptionsMetadata.java @@ -19,8 +19,6 @@ package source; import javax.validation.constraints.Min; import javax.validation.constraints.Pattern; -import org.springframework.xd.module.options.validation.DateFormat; - /** * Describes options to the {@code time} source module. * diff --git a/spring-cloud-stream/pom.xml b/spring-cloud-stream/pom.xml index 14eb1a3a6..777ee1941 100644 --- a/spring-cloud-stream/pom.xml +++ b/spring-cloud-stream/pom.xml @@ -43,11 +43,6 @@ spring-cloud-stream-codec - - org.springframework.xd - spring-xd-module - - org.springframework.cloud spring-cloud-stream-binder-local