fineract-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From my...@apache.org
Subject [fineract-cn-lang] 32/49: Created an annotation for ensuring the validity of LocalDateTime iso strings.
Date Mon, 22 Jan 2018 15:01:27 GMT
This is an automated email from the ASF dual-hosted git repository.

myrle pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-lang.git

commit 8e3bff8f0b761bb2dfcc0f19505d2df27aec79ec
Author: Myrle Krantz <myrle@apache.org>
AuthorDate: Tue Jul 4 11:53:07 2017 +0200

    Created an annotation for ensuring the validity of LocalDateTime iso strings.
---
 .../lang/validation/CheckLocalDateTimeString.java  | 44 ++++++++++++
 .../constraints/ValidLocalDateTimeString.java      | 46 ++++++++++++
 .../validation/ValidLocalDateTimeStringTest.java   | 82 ++++++++++++++++++++++
 3 files changed, 172 insertions(+)

diff --git a/src/main/java/io/mifos/core/lang/validation/CheckLocalDateTimeString.java b/src/main/java/io/mifos/core/lang/validation/CheckLocalDateTimeString.java
new file mode 100644
index 0000000..9be3cbb
--- /dev/null
+++ b/src/main/java/io/mifos/core/lang/validation/CheckLocalDateTimeString.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.core.lang.validation;
+
+import io.mifos.core.lang.DateConverter;
+import io.mifos.core.lang.validation.constraints.ValidLocalDateTimeString;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import java.time.DateTimeException;
+import java.time.format.DateTimeParseException;
+
+/**
+ * @author Myrle Krantz
+ */
+public class CheckLocalDateTimeString implements ConstraintValidator<ValidLocalDateTimeString,
String> {
+   public void initialize(ValidLocalDateTimeString constraint) {
+   }
+
+   public boolean isValid(final String obj, ConstraintValidatorContext context) {
+      if (obj == null)
+         return true;
+      try {
+         DateConverter.fromIsoString(obj);
+         return true;
+      }
+      catch (final DateTimeException e) {
+         return false;
+      }
+   }
+}
diff --git a/src/main/java/io/mifos/core/lang/validation/constraints/ValidLocalDateTimeString.java
b/src/main/java/io/mifos/core/lang/validation/constraints/ValidLocalDateTimeString.java
new file mode 100644
index 0000000..3e42d9e
--- /dev/null
+++ b/src/main/java/io/mifos/core/lang/validation/constraints/ValidLocalDateTimeString.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.core.lang.validation.constraints;
+
+import io.mifos.core.lang.validation.CheckLocalDateTimeString;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * The annotated string must either null or must contain a time which can be
+ * read by DateConverter.fromIsoString()
+ *
+ * @author Myrle Krantz
+ */
+@SuppressWarnings("unused")
+@Target({ FIELD, METHOD, PARAMETER})
+@Retention(RUNTIME)
+@Documented
+@Constraint(validatedBy = CheckLocalDateTimeString.class)
+public @interface ValidLocalDateTimeString {
+  String message() default "Invalid local date time string.";
+  Class<?>[] groups() default { };
+  Class<? extends Payload>[] payload() default { };
+}
diff --git a/src/test/java/io/mifos/core/lang/validation/ValidLocalDateTimeStringTest.java
b/src/test/java/io/mifos/core/lang/validation/ValidLocalDateTimeStringTest.java
new file mode 100644
index 0000000..5a46383
--- /dev/null
+++ b/src/test/java/io/mifos/core/lang/validation/ValidLocalDateTimeStringTest.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.core.lang.validation;
+
+import io.mifos.core.lang.DateConverter;
+import io.mifos.core.lang.validation.constraints.ValidLocalDateTimeString;
+import org.junit.Assert;
+import org.junit.Test;
+
+import javax.annotation.Nullable;
+import javax.validation.constraints.NotNull;
+
+import java.time.LocalDateTime;
+
+import static io.mifos.core.lang.validation.TestHelper.isValid;
+
+/**
+ * @author Myrle Krantz
+ */
+public class ValidLocalDateTimeStringTest {
+
+  @Test
+  public void now()
+  {
+    final AnnotatedClassNullable annotatedInstance = new AnnotatedClassNullable(DateConverter.toIsoString(LocalDateTime.now()));
+    Assert.assertTrue(isValid(annotatedInstance));
+  }
+
+  @Test
+  public void invalidString()
+  {
+    final AnnotatedClassNullable annotatedInstance = new AnnotatedClassNullable("This is
not a date time.");
+    Assert.assertFalse(isValid(annotatedInstance));
+  }
+
+  @Test
+  public void nullLocalDateTimeStringAllowed()
+  {
+    final AnnotatedClassNullable annotatedInstance = new AnnotatedClassNullable(null);
+    Assert.assertTrue(isValid(annotatedInstance));
+  }
+
+  @Test
+  public void nullLocalDateTimeStringNotAllowed()
+  {
+    final AnnotatedClassNotNull annotatedInstance = new AnnotatedClassNotNull(null);
+    Assert.assertFalse(isValid(annotatedInstance));
+  }
+
+  private static class AnnotatedClassNullable {
+    @Nullable
+    @ValidLocalDateTimeString()
+    String localDateTimeString;
+
+    AnnotatedClassNullable(final String localDateTimeString) {
+      this.localDateTimeString = localDateTimeString;
+    }
+  }
+
+  private static class AnnotatedClassNotNull {
+    @NotNull
+    @ValidLocalDateTimeString()
+    String localDateTimeString;
+
+    AnnotatedClassNotNull(final String localDateTimeString) {
+      this.localDateTimeString = localDateTimeString;
+    }
+  }
+}

-- 
To stop receiving notification emails like this one, please contact
myrle@apache.org.

Mime
View raw message