diff --git a/src/main/java/com/devonfw/sample/archunit/batch/L11ViolationBatchLayerDependsOnDataaccessLayer.java b/src/main/java/com/devonfw/sample/archunit/batch/L11ViolationBatchLayerDependsOnDataaccessLayer.java new file mode 100644 index 0000000..910dde5 --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/batch/L11ViolationBatchLayerDependsOnDataaccessLayer.java @@ -0,0 +1,11 @@ +package com.devonfw.sample.archunit.batch; + +import javax.inject.Inject; + +import com.devonfw.sample.archunit.task.dataaccess.TaskItemRepository; + +public class L11ViolationBatchLayerDependsOnDataaccessLayer { + // Violation! Batch layer should not depend on dataaccess layer + @Inject + TaskItemRepository taskItemRepository; +} diff --git a/src/main/java/com/devonfw/sample/archunit/batch/L7ViolationBatchLayerDependsOnServiceLayer.java b/src/main/java/com/devonfw/sample/archunit/batch/L7ViolationBatchLayerDependsOnServiceLayer.java new file mode 100644 index 0000000..c6e3c8b --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/batch/L7ViolationBatchLayerDependsOnServiceLayer.java @@ -0,0 +1,11 @@ +package com.devonfw.sample.archunit.batch; + +import javax.inject.Inject; + +import com.devonfw.sample.archunit.task.service.TaskService; + +public class L7ViolationBatchLayerDependsOnServiceLayer { + // Violation! Batch layer should not depend on service layer + @Inject + TaskService taskService; +} diff --git a/src/main/java/com/devonfw/sample/archunit/batch/SampleBatchClass.java b/src/main/java/com/devonfw/sample/archunit/batch/SampleBatchClass.java new file mode 100644 index 0000000..684d37c --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/batch/SampleBatchClass.java @@ -0,0 +1,6 @@ +package com.devonfw.sample.archunit.batch; +// This demo class is provided to be erroneously depended on by: +// L5ViolationClientLayerDependsOnBatchLayer and L6ViolationServiceLayerDependsOnBatchLayer +public class SampleBatchClass { + +} diff --git a/src/main/java/com/devonfw/sample/archunit/client/L3ViolationClientLayerDependsOnLogicLayer.java b/src/main/java/com/devonfw/sample/archunit/client/L3ViolationClientLayerDependsOnLogicLayer.java new file mode 100644 index 0000000..55e26fe --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/client/L3ViolationClientLayerDependsOnLogicLayer.java @@ -0,0 +1,11 @@ +package com.devonfw.sample.archunit.client; + +import javax.inject.Inject; + +import com.devonfw.sample.archunit.task.logic.TaskItemMapper; + +public class L3ViolationClientLayerDependsOnLogicLayer { + // Violation! Client layer should not depend on logic layer + @Inject + TaskItemMapper taskItemMapper; +} diff --git a/src/main/java/com/devonfw/sample/archunit/client/L4ViolationClientLayerDependsOnDataaccessLayer.java b/src/main/java/com/devonfw/sample/archunit/client/L4ViolationClientLayerDependsOnDataaccessLayer.java new file mode 100644 index 0000000..55b2050 --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/client/L4ViolationClientLayerDependsOnDataaccessLayer.java @@ -0,0 +1,11 @@ +package com.devonfw.sample.archunit.client; + +import javax.inject.Inject; + +import com.devonfw.sample.archunit.task.dataaccess.TaskItemRepository; + +public class L4ViolationClientLayerDependsOnDataaccessLayer { + // Violation! Client layer should not depend on dataaccess layer + @Inject + TaskItemRepository taskItemRepository; +} diff --git a/src/main/java/com/devonfw/sample/archunit/client/L5ViolationClientLayerDependsOnBatchLayer.java b/src/main/java/com/devonfw/sample/archunit/client/L5ViolationClientLayerDependsOnBatchLayer.java new file mode 100644 index 0000000..35489c1 --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/client/L5ViolationClientLayerDependsOnBatchLayer.java @@ -0,0 +1,11 @@ +package com.devonfw.sample.archunit.client; + +import javax.inject.Inject; + +import com.devonfw.sample.archunit.batch.SampleBatchClass; + +public class L5ViolationClientLayerDependsOnBatchLayer { + // Violation! Client layer should not depend on batch layer + @Inject + SampleBatchClass sampleBatchClass; +} diff --git a/src/main/java/com/devonfw/sample/archunit/client/SampleClient.java b/src/main/java/com/devonfw/sample/archunit/client/SampleClient.java new file mode 100644 index 0000000..ef985cc --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/client/SampleClient.java @@ -0,0 +1,28 @@ +package com.devonfw.sample.archunit.client; + +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.net.http.HttpResponse.BodyHandlers; + +public class SampleClient { + + public static void httpGetTaskItem(String taskId) throws URISyntaxException, IOException, InterruptedException { + HttpClient client = HttpClient.newHttpClient(); + HttpRequest request = HttpRequest.newBuilder() + .version(HttpClient.Version.HTTP_2) + .uri(URI.create("http://localhost:8080/task/item/" + taskId)) + .headers("Accept-Enconding", "gzip, deflate") + .build(); + HttpResponse response = client.send(request, BodyHandlers.ofString()); + + String responseBody = response.body(); + int responseStatusCode = response.statusCode(); + + System.out.println("httpGetRequest: " + responseBody); + System.out.println("httpGetRequest status code: " + responseStatusCode); + } +} diff --git a/src/main/java/com/devonfw/sample/archunit/task/common/L1ViolationCommonLayerDependsOnOtherLayer.java b/src/main/java/com/devonfw/sample/archunit/task/common/L1ViolationCommonLayerDependsOnOtherLayer.java new file mode 100644 index 0000000..3c6c6fd --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/task/common/L1ViolationCommonLayerDependsOnOtherLayer.java @@ -0,0 +1,10 @@ +package com.devonfw.sample.archunit.task.common; + +import javax.inject.Inject; + +import com.devonfw.sample.archunit.task.logic.TaskItemMapper; + +public class L1ViolationCommonLayerDependsOnOtherLayer { + @Inject + TaskItemMapper taskItemMapper; +} diff --git a/src/main/java/com/devonfw/sample/archunit/task/dataaccess/L10ViolationDataaccessLayerDependsOnServiceLayer.java b/src/main/java/com/devonfw/sample/archunit/task/dataaccess/L10ViolationDataaccessLayerDependsOnServiceLayer.java new file mode 100644 index 0000000..0894a43 --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/task/dataaccess/L10ViolationDataaccessLayerDependsOnServiceLayer.java @@ -0,0 +1,11 @@ +package com.devonfw.sample.archunit.task.dataaccess; + +import javax.inject.Inject; + +import com.devonfw.sample.archunit.task.service.TaskService; + +public class L10ViolationDataaccessLayerDependsOnServiceLayer { + // Violation! Dataaccess layer should not depend on service layer. + @Inject + TaskService taskService; +} diff --git a/src/main/java/com/devonfw/sample/archunit/task/dataaccess/L12ViolationDataaccessLayerDependsOnLogicLayer.java b/src/main/java/com/devonfw/sample/archunit/task/dataaccess/L12ViolationDataaccessLayerDependsOnLogicLayer.java new file mode 100644 index 0000000..db35a24 --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/task/dataaccess/L12ViolationDataaccessLayerDependsOnLogicLayer.java @@ -0,0 +1,11 @@ +package com.devonfw.sample.archunit.task.dataaccess; + +import javax.inject.Inject; + +import com.devonfw.sample.archunit.task.logic.TaskItemMapper; + +public class L12ViolationDataaccessLayerDependsOnLogicLayer { + // Violation! Dataaccess layer should not depend on logic layer. + @Inject + TaskItemMapper taskItemMapper; +} diff --git a/src/main/java/com/devonfw/sample/archunit/task/logic/L9ViolationLogicLayerDependsOnServiceLayer.java b/src/main/java/com/devonfw/sample/archunit/task/logic/L9ViolationLogicLayerDependsOnServiceLayer.java new file mode 100644 index 0000000..c483b51 --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/task/logic/L9ViolationLogicLayerDependsOnServiceLayer.java @@ -0,0 +1,12 @@ +package com.devonfw.sample.archunit.task.logic; + +import javax.inject.Inject; + +import com.devonfw.sample.archunit.task.service.TaskService; + +public class L9ViolationLogicLayerDependsOnServiceLayer { + // Violation! Logic layer should not depend on service layer + @Inject + TaskService taskService; + +} diff --git a/src/main/java/com/devonfw/sample/archunit/task/service/L2ViolationNoLayerOtherThanClientDependsOnClientLayer.java b/src/main/java/com/devonfw/sample/archunit/task/service/L2ViolationNoLayerOtherThanClientDependsOnClientLayer.java new file mode 100644 index 0000000..ec169cf --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/task/service/L2ViolationNoLayerOtherThanClientDependsOnClientLayer.java @@ -0,0 +1,11 @@ +package com.devonfw.sample.archunit.task.service; + +import javax.inject.Inject; + +import com.devonfw.sample.archunit.client.SampleClient; + +public class L2ViolationNoLayerOtherThanClientDependsOnClientLayer { + // Violation: service layer may not depend on client layer. + @Inject + SampleClient sampleClient; +} diff --git a/src/main/java/com/devonfw/sample/archunit/task/service/L6ViolationServiceLayerDependsOnBatchLayer.java b/src/main/java/com/devonfw/sample/archunit/task/service/L6ViolationServiceLayerDependsOnBatchLayer.java new file mode 100644 index 0000000..e00c2f2 --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/task/service/L6ViolationServiceLayerDependsOnBatchLayer.java @@ -0,0 +1,11 @@ +package com.devonfw.sample.archunit.task.service; + +import javax.inject.Inject; + +import com.devonfw.sample.archunit.batch.SampleBatchClass; + +public class L6ViolationServiceLayerDependsOnBatchLayer { + // Violation! Service layer should not depend on batch layer + @Inject + SampleBatchClass sampleBatchClass; +} diff --git a/src/main/java/com/devonfw/sample/archunit/task/service/L8ViolationServiceLayerDependsOnDataaccessLayer.java b/src/main/java/com/devonfw/sample/archunit/task/service/L8ViolationServiceLayerDependsOnDataaccessLayer.java new file mode 100644 index 0000000..8cb7a09 --- /dev/null +++ b/src/main/java/com/devonfw/sample/archunit/task/service/L8ViolationServiceLayerDependsOnDataaccessLayer.java @@ -0,0 +1,11 @@ +package com.devonfw.sample.archunit.task.service; + +import javax.inject.Inject; + +import com.devonfw.sample.archunit.task.dataaccess.TaskItemRepository; + +public class L8ViolationServiceLayerDependsOnDataaccessLayer { + // Violation! Service layer should not depend on dataaccess layer + @Inject + TaskItemRepository taskItemRepository; +}