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 ""; +}