From 5f1b528e5515b27b2e2e26d0ee3bd933179f9f66 Mon Sep 17 00:00:00 2001 From: haerong22 Date: Mon, 3 Jul 2023 20:39:20 +0900 Subject: [PATCH] =?UTF-8?q?#38=20hexagonal:=20=EA=B3=B5=ED=86=B5=20?= =?UTF-8?q?=EC=96=B4=EB=85=B8=ED=85=8C=EC=9D=B4=EC=85=98=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/common/PersistenceAdapter.java | 16 ++++++++++++++ .../src/main/java/common/SelfValidating.java | 21 +++++++++++++++++++ .../src/main/java/common/UseCase.java | 16 ++++++++++++++ .../src/main/java/common/WebAdapter.java | 16 ++++++++++++++ 4 files changed, 69 insertions(+) create mode 100644 bobby-pay/membership-service/src/main/java/common/PersistenceAdapter.java create mode 100644 bobby-pay/membership-service/src/main/java/common/SelfValidating.java create mode 100644 bobby-pay/membership-service/src/main/java/common/UseCase.java create mode 100644 bobby-pay/membership-service/src/main/java/common/WebAdapter.java diff --git a/bobby-pay/membership-service/src/main/java/common/PersistenceAdapter.java b/bobby-pay/membership-service/src/main/java/common/PersistenceAdapter.java new file mode 100644 index 00000000..eafb04a5 --- /dev/null +++ b/bobby-pay/membership-service/src/main/java/common/PersistenceAdapter.java @@ -0,0 +1,16 @@ +package common; + +import org.springframework.core.annotation.AliasFor; +import org.springframework.stereotype.Component; + +import java.lang.annotation.*; + +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Component +public @interface PersistenceAdapter { + + @AliasFor(annotation = Component.class) + String value() default ""; +} diff --git a/bobby-pay/membership-service/src/main/java/common/SelfValidating.java b/bobby-pay/membership-service/src/main/java/common/SelfValidating.java new file mode 100644 index 00000000..73317401 --- /dev/null +++ b/bobby-pay/membership-service/src/main/java/common/SelfValidating.java @@ -0,0 +1,21 @@ +package common; + +import javax.validation.*; +import java.util.Set; + +public abstract class SelfValidating { + + private final Validator validator; + + public SelfValidating() { + ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); + validator = factory.getValidator(); + } + + protected void validateSelf() { + Set> violations = validator.validate((T) this); + if (!violations.isEmpty()) { + throw new ConstraintViolationException(violations); + } + } +} \ No newline at end of file diff --git a/bobby-pay/membership-service/src/main/java/common/UseCase.java b/bobby-pay/membership-service/src/main/java/common/UseCase.java new file mode 100644 index 00000000..767edf65 --- /dev/null +++ b/bobby-pay/membership-service/src/main/java/common/UseCase.java @@ -0,0 +1,16 @@ +package common; + +import org.springframework.core.annotation.AliasFor; +import org.springframework.stereotype.Component; + +import java.lang.annotation.*; + +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Component +public @interface UseCase { + + @AliasFor(annotation = Component.class) + String value() default ""; +} diff --git a/bobby-pay/membership-service/src/main/java/common/WebAdapter.java b/bobby-pay/membership-service/src/main/java/common/WebAdapter.java new file mode 100644 index 00000000..63f61044 --- /dev/null +++ b/bobby-pay/membership-service/src/main/java/common/WebAdapter.java @@ -0,0 +1,16 @@ +package common; + +import org.springframework.core.annotation.AliasFor; +import org.springframework.stereotype.Component; + +import java.lang.annotation.*; + +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Component +public @interface WebAdapter { + + @AliasFor(annotation = Component.class) + String value() default ""; +}