diff --git a/src/main/java/com/devonfw/sample/archunit/violation/common/ApplicationPersistenceEntity.java b/src/main/java/com/devonfw/sample/archunit/violation/common/ApplicationPersistenceEntity.java new file mode 100644 index 0000000..ecbcbfb --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/violation/common/ApplicationPersistenceEntity.java @@ -0,0 +1,14 @@ +package com.devonfw.sample.archunit.violation.common; + +import javax.persistence.MappedSuperclass; + +import com.devonfw.sample.archunit.general.common.ApplicationEntity; + +/** + * Abstract base class for all persistent entities of this app. + */ +// Violation: ApplicationPersistenceEntity has to be be in layer dataaccess +@MappedSuperclass +public abstract class ApplicationPersistenceEntity implements ApplicationEntity { + +} diff --git a/src/main/java/com/devonfw/sample/archunit/violation/common/ViolationItem.java b/src/main/java/com/devonfw/sample/archunit/violation/common/ViolationItem.java new file mode 100644 index 0000000..42a2055 --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/violation/common/ViolationItem.java @@ -0,0 +1,10 @@ +package com.devonfw.sample.archunit.violation.common; + + +import com.devonfw.sample.archunit.general.common.ApplicationEntity; + +/** + * {@link ApplicationEntity} for a single task item. + */ +public interface ViolationItem extends ApplicationEntity { +} diff --git a/src/main/java/com/devonfw/sample/archunit/violation/common/ViolationRepository.java b/src/main/java/com/devonfw/sample/archunit/violation/common/ViolationRepository.java new file mode 100644 index 0000000..505ec58 --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/violation/common/ViolationRepository.java @@ -0,0 +1,12 @@ +package com.devonfw.sample.archunit.violation.common; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.devonfw.sample.archunit.violation.dataaccess.ViolationEntity; + +/** + * Interface for the {@link JpaRepository} giving database access to {@link ViolationEntity}. + */ + // Violation: JpaRepository has to be in layer dataaccess and should be in the same package as the entity. +public interface ViolationRepository extends JpaRepository { +} diff --git a/src/main/java/com/devonfw/sample/archunit/violation/common/WrongInterfaceViolationEto.java b/src/main/java/com/devonfw/sample/archunit/violation/common/WrongInterfaceViolationEto.java new file mode 100644 index 0000000..f17ec10 --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/violation/common/WrongInterfaceViolationEto.java @@ -0,0 +1,11 @@ +package com.devonfw.sample.archunit.violation.common; + + +import com.devonfw.sample.archunit.general.common.AbstractEto; + +/** + * {@link ViolationItem} implementation as {@link AbstractEto}. + */ + // Violation: ETO for entity interface shall be named «EntityName»Eto (ViolationItemEto) +public class WrongInterfaceViolationEto extends AbstractEto implements ViolationItem { +} diff --git a/src/main/java/com/devonfw/sample/archunit/violation/common/WrongNameRepository.java b/src/main/java/com/devonfw/sample/archunit/violation/common/WrongNameRepository.java new file mode 100644 index 0000000..a4c9fb1 --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/violation/common/WrongNameRepository.java @@ -0,0 +1,14 @@ +package com.devonfw.sample.archunit.violation.common; + + +import org.springframework.data.jpa.repository.JpaRepository; + + +import com.devonfw.sample.archunit.violation.dataaccess.ViolationEntity; + +/** + * Interface for the {@link JpaRepository} giving database access to {@link ViolationEntity}. + */ + // Violation: JpaRepository interface shall be named «EntityName»Repository (ViolationRepository) +public interface WrongNameRepository extends JpaRepository { +} diff --git a/src/main/java/com/devonfw/sample/archunit/violation/dataaccess/MapperViolation.java b/src/main/java/com/devonfw/sample/archunit/violation/dataaccess/MapperViolation.java new file mode 100644 index 0000000..cee441d --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/violation/dataaccess/MapperViolation.java @@ -0,0 +1,11 @@ +package com.devonfw.sample.archunit.violation.dataaccess; + +import org.mapstruct.Mapper; + +/** + * {@link Mapper} for {@link com.devonfw.sample.archunit.task.common.TaskItem}. + */ +// Violation: Mapper has to be in logic layer and name has to end with Mapper. +@Mapper(componentModel = "cdi") +public abstract interface MapperViolation { +} diff --git a/src/main/java/com/devonfw/sample/archunit/violation/dataaccess/ServiceViolation.java b/src/main/java/com/devonfw/sample/archunit/violation/dataaccess/ServiceViolation.java new file mode 100644 index 0000000..0a61185 --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/violation/dataaccess/ServiceViolation.java @@ -0,0 +1,12 @@ +package com.devonfw.sample.archunit.violation.dataaccess; + +import javax.ws.rs.Path; + +/** + * Rest service for task component with {@link com.devonfw.sample.archunit.task.common.TaskList} and + * {@link com.devonfw.sample.archunit.task.common.TaskItem}. + */ + // Violation: REST-Service has to be in service layer and name has to end with "Service". +@Path("/task") +public class ServiceViolation { +} diff --git a/src/main/java/com/devonfw/sample/archunit/violation/dataaccess/UcViolation.java b/src/main/java/com/devonfw/sample/archunit/violation/dataaccess/UcViolation.java new file mode 100644 index 0000000..68526a1 --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/violation/dataaccess/UcViolation.java @@ -0,0 +1,17 @@ +package com.devonfw.sample.archunit.violation.dataaccess; + +import javax.enterprise.context.ApplicationScoped; +import javax.inject.Named; +import javax.transaction.Transactional; + +import com.devonfw.sample.archunit.general.logic.AbstractUc; + +/** + * {@link AbstractUc Use-case} to save {@link com.devonfw.sample.archunit.task.common.TaskList}s. + */ +@ApplicationScoped +@Named +@Transactional +// Violation: Use-case has to be in logic layer. +public class UcViolation extends AbstractUc { +} diff --git a/src/main/java/com/devonfw/sample/archunit/violation/dataaccess/ViolationEntity.java b/src/main/java/com/devonfw/sample/archunit/violation/dataaccess/ViolationEntity.java new file mode 100644 index 0000000..16f8fff --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/violation/dataaccess/ViolationEntity.java @@ -0,0 +1,22 @@ +package com.devonfw.sample.archunit.violation.dataaccess; + +import java.time.LocalDateTime; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import com.devonfw.sample.archunit.general.dataaccess.ApplicationPersistenceEntity; +import com.devonfw.sample.archunit.violation.common.ViolationItem; + +/** + * {@link TaskItem} implementation as {@link ApplicationPersistenceEntity}. + */ +@Entity +@Table(name = "VIOLATION") +// Violation: Entity has to be named «EntityName»Entity (ViolationItemEntity). +public class ViolationEntity extends ApplicationPersistenceEntity implements ViolationItem { +} diff --git a/src/main/java/com/devonfw/sample/archunit/violation/dataaccess/ViolationEto.java b/src/main/java/com/devonfw/sample/archunit/violation/dataaccess/ViolationEto.java new file mode 100644 index 0000000..190138f --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/violation/dataaccess/ViolationEto.java @@ -0,0 +1,11 @@ +package com.devonfw.sample.archunit.violation.dataaccess; + +import com.devonfw.sample.archunit.violation.common.ViolationItem; +import com.devonfw.sample.archunit.general.common.AbstractEto; + +/** + * {@link ViolationItem} implementation as {@link AbstractEto}. + */ + // Violation: ETO has to be in common layer. +public class ViolationEto extends AbstractEto implements ViolationItem { +}