diff --git a/Chapter15/.gitattributes b/Chapter15/.gitattributes
new file mode 100644
index 0000000..c412f9e
--- /dev/null
+++ b/Chapter15/.gitattributes
@@ -0,0 +1,92 @@
+# Auto detect text files and perform LF normalization
+* text=auto
+
+# Java sources
+*.java text diff=java
+*.kt text diff=kotlin
+*.groovy text diff=java
+*.scala text diff=java
+*.gradle text diff=java
+*.gradle.kts text diff=kotlin
+
+# These files are text and should be normalized (Convert crlf => lf)
+*.css text diff=css
+*.scss text diff=css
+*.sass text
+*.df text
+*.htm text diff=html
+*.html text diff=html
+*.js text
+*.jsp text
+*.jspf text
+*.jspx text
+*.properties text
+*.yaml text
+*.yml text
+*.tld text
+*.tag text
+*.tagx text
+*.xml text
+
+# These files are binary and should be left untouched
+# (binary is a macro for -text -diff)
+*.class binary
+*.dll binary
+*.ear binary
+*.jar binary
+*.so binary
+*.war binary
+*.jks binary
+
+# Documentation
+*.ipynb text eol=lf
+*.markdown text diff=markdown
+*.md text diff=markdown
+*.mdwn text diff=markdown
+*.mdown text diff=markdown
+*.mkd text diff=markdown
+*.mkdn text diff=markdown
+*.mdtxt text
+*.mdtext text
+*.txt text
+AUTHORS text
+CHANGELOG text
+CHANGES text
+CONTRIBUTING text
+COPYING text
+copyright text
+*COPYRIGHT* text
+INSTALL text
+license text
+LICENSE text
+NEWS text
+readme text
+*README* text
+TODO text
+
+# Docker
+Dockerfile text
+
+# Scripts
+*.bash text eol=lf
+*.fish text eol=lf
+*.sh text eol=lf
+*.zsh text eol=lf
+# These are explicitly windows files and should use crlf
+*.bat text eol=crlf
+*.cmd text eol=crlf
+*.ps1 text eol=crlf
+
+# Common build-tool wrapper scripts ('.cmd' versions are handled by 'Common.gitattributes')
+mvnw text eol=lf
+gradlew text eol=lf
+
+*.md linguist-detectable
+
+#
+# Exclude files from exporting
+#
+
+.gitattributes export-ignore
+.gitignore export-ignore
+.gitkeep export-ignore
\ No newline at end of file
diff --git a/Chapter15/.gitignore b/Chapter15/.gitignore
new file mode 100644
index 0000000..66ab00e
--- /dev/null
+++ b/Chapter15/.gitignore
@@ -0,0 +1,40 @@
+# Package Files #
+*.jar
+*.war
+*.ear
+
+# OS
+.DS_Store
+
+# Tests
+/coverage
+/.nyc_output
+
+# IDEs and editors
+/.idea
+.project
+.classpath
+*.class
+.c9/
+*.launch
+.settings/
+*.sublime-workspace
+*.iml
+target
+**/*.iml
+**/target
+.factorypath
+*.factorypath
+/k8s/local
+.gradle
+!gradle/wrapper/*.jar
+
+# IDE - VSCode
+.vscode/
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+
+#Sonarqube
diff --git a/Chapter15/Dockerfile b/Chapter15/Dockerfile
index 8ebfc24..2d83529 100644
--- a/Chapter15/Dockerfile
+++ b/Chapter15/Dockerfile
@@ -1,4 +1,4 @@
-FROM adoptopenjdk/openjdk11:x86_64-alpine-jre11u-nightly
+FROM eclipse-temurin:17.0.6_10-jre-alpine
ENV APP_FILE_RUNNER bootstrap-1.0-SNAPSHOT-runner.jar
ENV APP_HOME /usr/apps
EXPOSE 8080
diff --git a/Chapter15/Dockerfile-native b/Chapter15/Dockerfile-native
index 8d3bb3b..2230609 100644
--- a/Chapter15/Dockerfile-native
+++ b/Chapter15/Dockerfile-native
@@ -1,4 +1,4 @@
-FROM registry.access.redhat.com/ubi8/ubi-minimal
+FROM redhat/ubi8-minimal:8.7
ENV APP_FILE_RUNNER bootstrap-1.0-SNAPSHOT-runner
ENV APP_HOME /work
EXPOSE 8080
diff --git a/Chapter15/README.md b/Chapter15/README.md
index 117c516..b6b7ee4 100644
--- a/Chapter15/README.md
+++ b/Chapter15/README.md
@@ -24,4 +24,12 @@ docker run -p 5555:8080 topology-inventory-native
**To access the Dockerized application**
```
http://localhost:5555/q/swagger-ui/
-```
\ No newline at end of file
+```
+**To start the application from the terminal (without docker)**
+```
+mvn quarkus:dev
+```
+**To access the application (Swagger UI) without docker**
+```
+http://localhost:8080/q/swagger-ui/
+```
diff --git a/Chapter15/application/pom.xml b/Chapter15/application/pom.xml
index c404f06..1384f81 100644
--- a/Chapter15/application/pom.xml
+++ b/Chapter15/application/pom.xml
@@ -7,16 +7,20 @@
topology-inventory
1.0-SNAPSHOT
+
application
+
+
dev.davivieira
domain
+
io.quarkiverse.cucumber
quarkus-cucumber
- 0.3.0
+ 0.6.0
test
@@ -38,4 +42,4 @@
test
-
\ No newline at end of file
+
diff --git a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/input/NetworkManagementInputPort.java b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/input/NetworkManagementInputPort.java
index 33e5dab..8244601 100644
--- a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/input/NetworkManagementInputPort.java
+++ b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/input/NetworkManagementInputPort.java
@@ -5,19 +5,24 @@
import dev.davivieira.topologyinventory.domain.entity.EdgeRouter;
import dev.davivieira.topologyinventory.domain.entity.Switch;
import dev.davivieira.topologyinventory.domain.service.NetworkService;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Network;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Network;
+import lombok.NoArgsConstructor;
+
import java.util.function.Predicate;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
@ApplicationScoped
+@NoArgsConstructor
public class NetworkManagementInputPort implements NetworkManagementUseCase {
-
+ private RouterManagementOutputPort routerManagementOutputPort;
@Inject
- RouterManagementOutputPort routerManagementOutputPort;
+ public NetworkManagementInputPort(RouterManagementOutputPort routerManagementOutputPort) {
+ this.routerManagementOutputPort = routerManagementOutputPort;
+ }
@Override
public Network createNetwork(
diff --git a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/input/RouterManagementInputPort.java b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/input/RouterManagementInputPort.java
index fa11876..a16c564 100644
--- a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/input/RouterManagementInputPort.java
+++ b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/input/RouterManagementInputPort.java
@@ -5,22 +5,27 @@
import dev.davivieira.topologyinventory.domain.entity.CoreRouter;
import dev.davivieira.topologyinventory.domain.entity.Router;
import dev.davivieira.topologyinventory.domain.entity.factory.RouterFactory;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Location;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.RouterType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.RouterType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import dev.davivieira.topologyinventory.status.RouterInfo;
+import lombok.NoArgsConstructor;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
@ApplicationScoped
-public class RouterManagementInputPort implements RouterManagementUseCase {
+@NoArgsConstructor
+public final class RouterManagementInputPort implements RouterManagementUseCase {
+ private RouterManagementOutputPort routerManagementOutputPort;
@Inject
- RouterManagementOutputPort routerManagementOutputPort;
+ public RouterManagementInputPort(RouterManagementOutputPort routerManagementOutputPort) {
+ this.routerManagementOutputPort = routerManagementOutputPort;
+ }
@Override
public Router createRouter(Id id,
@@ -70,4 +75,4 @@ public String getRouterStatus() {
var routerInfo = new RouterInfo();
return routerInfo.getRouterStatus();
}
-}
\ No newline at end of file
+}
diff --git a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/input/SwitchManagementInputPort.java b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/input/SwitchManagementInputPort.java
index 80d3868..f5878be 100644
--- a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/input/SwitchManagementInputPort.java
+++ b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/input/SwitchManagementInputPort.java
@@ -4,16 +4,23 @@
import dev.davivieira.topologyinventory.application.usecases.SwitchManagementUseCase;
import dev.davivieira.topologyinventory.domain.entity.EdgeRouter;
import dev.davivieira.topologyinventory.domain.entity.Switch;
-import dev.davivieira.topologyinventory.domain.vo.*;
+import dev.davivieira.topologyinventory.domain.valueobject.*;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
@ApplicationScoped
-public class SwitchManagementInputPort implements SwitchManagementUseCase {
+@NoArgsConstructor
+public final class SwitchManagementInputPort implements SwitchManagementUseCase {
+
+ private SwitchManagementOutputPort switchManagementOutputPort;
@Inject
- SwitchManagementOutputPort switchManagementOutputPort;
+ SwitchManagementInputPort(SwitchManagementOutputPort switchManagementOutputPort) {
+ this.switchManagementOutputPort = switchManagementOutputPort;
+ }
@Override
public Switch createSwitch(
diff --git a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/output/RouterManagementOutputPort.java b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/output/RouterManagementOutputPort.java
index 5546cfe..a70497e 100644
--- a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/output/RouterManagementOutputPort.java
+++ b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/output/RouterManagementOutputPort.java
@@ -1,7 +1,7 @@
package dev.davivieira.topologyinventory.application.ports.output;
import dev.davivieira.topologyinventory.domain.entity.Router;
-import dev.davivieira.topologyinventory.domain.vo.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
public interface RouterManagementOutputPort {
Router retrieveRouter(Id id);
diff --git a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/output/SwitchManagementOutputPort.java b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/output/SwitchManagementOutputPort.java
index 21c5628..658b38d 100644
--- a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/output/SwitchManagementOutputPort.java
+++ b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/ports/output/SwitchManagementOutputPort.java
@@ -1,7 +1,7 @@
package dev.davivieira.topologyinventory.application.ports.output;
import dev.davivieira.topologyinventory.domain.entity.Switch;
-import dev.davivieira.topologyinventory.domain.vo.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
public interface SwitchManagementOutputPort {
Switch retrieveSwitch(Id id);
diff --git a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/usecases/NetworkManagementUseCase.java b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/usecases/NetworkManagementUseCase.java
index 75f23e4..4bf8bb2 100644
--- a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/usecases/NetworkManagementUseCase.java
+++ b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/usecases/NetworkManagementUseCase.java
@@ -1,8 +1,8 @@
package dev.davivieira.topologyinventory.application.usecases;
import dev.davivieira.topologyinventory.domain.entity.Switch;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Network;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Network;
public interface NetworkManagementUseCase {
diff --git a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/usecases/RouterManagementUseCase.java b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/usecases/RouterManagementUseCase.java
index 8b82f58..94b5621 100644
--- a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/usecases/RouterManagementUseCase.java
+++ b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/usecases/RouterManagementUseCase.java
@@ -2,12 +2,12 @@
import dev.davivieira.topologyinventory.domain.entity.CoreRouter;
import dev.davivieira.topologyinventory.domain.entity.Router;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Location;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.RouterType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.RouterType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
public interface RouterManagementUseCase {
diff --git a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/usecases/SwitchManagementUseCase.java b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/usecases/SwitchManagementUseCase.java
index 03c2675..3da58c3 100644
--- a/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/usecases/SwitchManagementUseCase.java
+++ b/Chapter15/application/src/main/java/dev/davivieira/topologyinventory/application/usecases/SwitchManagementUseCase.java
@@ -2,12 +2,12 @@
import dev.davivieira.topologyinventory.domain.entity.EdgeRouter;
import dev.davivieira.topologyinventory.domain.entity.Switch;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Location;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.SwitchType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.SwitchType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
public interface SwitchManagementUseCase {
diff --git a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/ApplicationTestData.java b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/ApplicationTestData.java
index 2e7b8c7..dd856e0 100644
--- a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/ApplicationTestData.java
+++ b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/ApplicationTestData.java
@@ -4,14 +4,14 @@
import dev.davivieira.topologyinventory.domain.entity.EdgeRouter;
import dev.davivieira.topologyinventory.domain.entity.Router;
import dev.davivieira.topologyinventory.domain.entity.Switch;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Location;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.Network;
-import dev.davivieira.topologyinventory.domain.vo.RouterType;
-import dev.davivieira.topologyinventory.domain.vo.SwitchType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.Network;
+import dev.davivieira.topologyinventory.domain.valueobject.RouterType;
+import dev.davivieira.topologyinventory.domain.valueobject.SwitchType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import java.util.ArrayList;
import java.util.HashMap;
diff --git a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/NetworkAdd.java b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/NetworkAdd.java
index c0a941f..beaecbf 100644
--- a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/NetworkAdd.java
+++ b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/NetworkAdd.java
@@ -2,8 +2,8 @@
import dev.davivieira.topologyinventory.application.usecases.NetworkManagementUseCase;
import dev.davivieira.topologyinventory.domain.service.NetworkService;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Network;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Network;
import io.cucumber.java.en.And;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
diff --git a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/NetworkCreate.java b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/NetworkCreate.java
index 1fbfae2..a69c60e 100644
--- a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/NetworkCreate.java
+++ b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/NetworkCreate.java
@@ -1,7 +1,7 @@
package dev.davivieira.topologyinventory.application;
import dev.davivieira.topologyinventory.application.usecases.NetworkManagementUseCase;
-import dev.davivieira.topologyinventory.domain.vo.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
diff --git a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/NetworkRemove.java b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/NetworkRemove.java
index 707ab72..b7032ba 100644
--- a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/NetworkRemove.java
+++ b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/NetworkRemove.java
@@ -2,7 +2,7 @@
import dev.davivieira.topologyinventory.application.usecases.NetworkManagementUseCase;
import dev.davivieira.topologyinventory.domain.service.NetworkService;
-import dev.davivieira.topologyinventory.domain.vo.Network;
+import dev.davivieira.topologyinventory.domain.valueobject.Network;
import io.cucumber.java.en.And;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
diff --git a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/RouterAdd.java b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/RouterAdd.java
index 9da1dc5..ab51cc3 100644
--- a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/RouterAdd.java
+++ b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/RouterAdd.java
@@ -3,17 +3,17 @@
import dev.davivieira.topologyinventory.application.usecases.RouterManagementUseCase;
import dev.davivieira.topologyinventory.domain.entity.CoreRouter;
import dev.davivieira.topologyinventory.domain.entity.EdgeRouter;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import io.cucumber.java.en.And;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import javax.inject.Inject;
-import static dev.davivieira.topologyinventory.domain.vo.RouterType.CORE;
-import static dev.davivieira.topologyinventory.domain.vo.RouterType.EDGE;
+import static dev.davivieira.topologyinventory.domain.valueobject.RouterType.CORE;
+import static dev.davivieira.topologyinventory.domain.valueobject.RouterType.EDGE;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
diff --git a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/RouterCreate.java b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/RouterCreate.java
index 12c8b2e..8adfc43 100644
--- a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/RouterCreate.java
+++ b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/RouterCreate.java
@@ -1,16 +1,16 @@
package dev.davivieira.topologyinventory.application;
import dev.davivieira.topologyinventory.application.usecases.RouterManagementUseCase;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import javax.inject.Inject;
-import static dev.davivieira.topologyinventory.domain.vo.RouterType.CORE;
-import static dev.davivieira.topologyinventory.domain.vo.RouterType.EDGE;
+import static dev.davivieira.topologyinventory.domain.valueobject.RouterType.CORE;
+import static dev.davivieira.topologyinventory.domain.valueobject.RouterType.EDGE;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
diff --git a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/RouterRemove.java b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/RouterRemove.java
index 3924bd4..6d413fc 100644
--- a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/RouterRemove.java
+++ b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/RouterRemove.java
@@ -10,8 +10,8 @@
import javax.inject.Inject;
-import static dev.davivieira.topologyinventory.domain.vo.RouterType.CORE;
-import static dev.davivieira.topologyinventory.domain.vo.RouterType.EDGE;
+import static dev.davivieira.topologyinventory.domain.valueobject.RouterType.CORE;
+import static dev.davivieira.topologyinventory.domain.valueobject.RouterType.EDGE;
import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertEquals;
diff --git a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/SwitchAdd.java b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/SwitchAdd.java
index c2529a8..1f7e403 100644
--- a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/SwitchAdd.java
+++ b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/SwitchAdd.java
@@ -2,7 +2,7 @@
import dev.davivieira.topologyinventory.application.usecases.SwitchManagementUseCase;
import dev.davivieira.topologyinventory.domain.entity.Switch;
-import dev.davivieira.topologyinventory.domain.vo.*;
+import dev.davivieira.topologyinventory.domain.valueobject.*;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
diff --git a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/SwitchCreate.java b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/SwitchCreate.java
index 4b49a5f..9d6542e 100644
--- a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/SwitchCreate.java
+++ b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/SwitchCreate.java
@@ -1,10 +1,10 @@
package dev.davivieira.topologyinventory.application;
import dev.davivieira.topologyinventory.application.usecases.SwitchManagementUseCase;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.SwitchType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.SwitchType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
diff --git a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/SwitchRemove.java b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/SwitchRemove.java
index d22f41f..06c4ff0 100644
--- a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/SwitchRemove.java
+++ b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/SwitchRemove.java
@@ -2,7 +2,7 @@
import dev.davivieira.topologyinventory.application.usecases.SwitchManagementUseCase;
import dev.davivieira.topologyinventory.domain.entity.Switch;
-import dev.davivieira.topologyinventory.domain.vo.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
import io.cucumber.java.en.And;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
diff --git a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/mocks/RouterManagementOutputPortMock.java b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/mocks/RouterManagementOutputPortMock.java
index 88f3425..4212327 100644
--- a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/mocks/RouterManagementOutputPortMock.java
+++ b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/mocks/RouterManagementOutputPortMock.java
@@ -2,7 +2,7 @@
import dev.davivieira.topologyinventory.application.ports.output.RouterManagementOutputPort;
import dev.davivieira.topologyinventory.domain.entity.Router;
-import dev.davivieira.topologyinventory.domain.vo.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
import io.quarkus.test.Mock;
@Mock
@@ -21,4 +21,4 @@ public Router removeRouter(Id id) {
public Router persistRouter(Router router) {
return null;
}
-}
\ No newline at end of file
+}
diff --git a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/mocks/SwitchManagementOutputPortMock.java b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/mocks/SwitchManagementOutputPortMock.java
index 4af752a..e67eaf2 100644
--- a/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/mocks/SwitchManagementOutputPortMock.java
+++ b/Chapter15/application/src/test/java/dev/davivieira/topologyinventory/application/mocks/SwitchManagementOutputPortMock.java
@@ -2,7 +2,7 @@
import dev.davivieira.topologyinventory.application.ports.output.SwitchManagementOutputPort;
import dev.davivieira.topologyinventory.domain.entity.Switch;
-import dev.davivieira.topologyinventory.domain.vo.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
import io.quarkus.test.Mock;
@Mock
diff --git a/Chapter15/bootstrap/pom.xml b/Chapter15/bootstrap/pom.xml
index 4eb7e41..021d329 100644
--- a/Chapter15/bootstrap/pom.xml
+++ b/Chapter15/bootstrap/pom.xml
@@ -7,20 +7,16 @@
topology-inventory
1.0-SNAPSHOT
+
bootstrap
+
-
- dev.davivieira
- domain
-
-
- dev.davivieira
- application
-
+
dev.davivieira
framework
+
jakarta.persistence
jakarta.persistence-api
@@ -35,12 +31,12 @@
quarkus-config-yaml
+
io.quarkus
quarkus-maven-plugin
- ${quarkus-plugin.version}
true
diff --git a/Chapter15/bootstrap/src/main/java/dev/davivieira/topologyinventory/bootstrap/App.java b/Chapter15/bootstrap/src/main/java/dev/davivieira/topologyinventory/bootstrap/App.java
index 9e5e2d2..002f9a3 100644
--- a/Chapter15/bootstrap/src/main/java/dev/davivieira/topologyinventory/bootstrap/App.java
+++ b/Chapter15/bootstrap/src/main/java/dev/davivieira/topologyinventory/bootstrap/App.java
@@ -3,7 +3,7 @@
import io.quarkus.runtime.Quarkus;
import io.quarkus.runtime.annotations.QuarkusMain;
-//@QuarkusMain
+@QuarkusMain
public class App {
public static void main(String ... args) {
Quarkus.run(args);
diff --git a/Chapter15/bootstrap/src/main/java/dev/davivieira/topologyinventory/bootstrap/ReflectionConfiguration.java b/Chapter15/bootstrap/src/main/java/dev/davivieira/topologyinventory/bootstrap/ReflectionConfiguration.java
index f39b13a..14c69e3 100644
--- a/Chapter15/bootstrap/src/main/java/dev/davivieira/topologyinventory/bootstrap/ReflectionConfiguration.java
+++ b/Chapter15/bootstrap/src/main/java/dev/davivieira/topologyinventory/bootstrap/ReflectionConfiguration.java
@@ -3,15 +3,15 @@
import dev.davivieira.topologyinventory.domain.entity.CoreRouter;
import dev.davivieira.topologyinventory.domain.entity.EdgeRouter;
import dev.davivieira.topologyinventory.domain.entity.Switch;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Location;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.Network;
-import dev.davivieira.topologyinventory.domain.vo.Protocol;
-import dev.davivieira.topologyinventory.domain.vo.RouterType;
-import dev.davivieira.topologyinventory.domain.vo.SwitchType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.Network;
+import dev.davivieira.topologyinventory.domain.valueobject.Protocol;
+import dev.davivieira.topologyinventory.domain.valueobject.RouterType;
+import dev.davivieira.topologyinventory.domain.valueobject.SwitchType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import io.quarkus.runtime.annotations.RegisterForReflection;
@RegisterForReflection(targets = {
@@ -29,5 +29,5 @@
Vendor.class,
})
public class ReflectionConfiguration {
-
-}
\ No newline at end of file
+ // Used for registering reflections see https://quarkus.io/guides/writing-native-applications-tips
+}
diff --git a/Chapter15/bootstrap/src/main/resources/application.properties b/Chapter15/bootstrap/src/main/resources/application.properties
index b9ebc28..2ef0b08 100644
--- a/Chapter15/bootstrap/src/main/resources/application.properties
+++ b/Chapter15/bootstrap/src/main/resources/application.properties
@@ -10,6 +10,9 @@ mp.openapi.extensions.smallrye.info.title=Topology & Inventory API
mp.openapi.extensions.smallrye.info.version=1.0
mp.openapi.extensions.smallrye.info.description=Manage networks assets
+# Allow for final classes to be managed by CDI/Arc in Quarkus
+quarkus.arc.transform-unproxyable-classes=true
+
quarkus.datasource.db-kind = mysql
quarkus.datasource.reactive= true
diff --git a/Chapter15/domain/inventory-core-domain/pom.xml b/Chapter15/domain/inventory-core-domain/pom.xml
index 3a70ff8..3b33d21 100644
--- a/Chapter15/domain/inventory-core-domain/pom.xml
+++ b/Chapter15/domain/inventory-core-domain/pom.xml
@@ -8,5 +8,7 @@
1.0-SNAPSHOT
../../pom.xml
+
inventory-core-domain
+
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/CoreRouter.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/CoreRouter.java
index a71887a..1eadc50 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/CoreRouter.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/CoreRouter.java
@@ -4,12 +4,12 @@
import dev.davivieira.topologyinventory.domain.specification.EmptySwitchSpec;
import dev.davivieira.topologyinventory.domain.specification.SameCountrySpec;
import dev.davivieira.topologyinventory.domain.specification.SameIpSpec;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Location;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.RouterType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.RouterType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@@ -20,15 +20,22 @@
@Getter
@ToString
-public class CoreRouter extends Router{
+public class CoreRouter extends Router {
@Setter
private Map routers;
@Builder
- public CoreRouter(Id id, Id parentRouterId, Vendor vendor, Model model, IP ip, Location location, RouterType routerType, Map routers) {
+ public CoreRouter(Id id,
+ Id parentRouterId,
+ Vendor vendor,
+ Model model,
+ IP ip,
+ Location location,
+ RouterType routerType,
+ Map routers) {
super(id, parentRouterId, vendor, model, ip, location, routerType);
- this.routers = routers == null ? new HashMap() : routers;
+ this.routers = routers == null ? new HashMap<>() : routers;
}
public CoreRouter addRouter(Router anyRouter) {
@@ -48,13 +55,14 @@ public Router removeRouter(Router anyRouter) {
var emptySwitchSpec = new EmptySwitchSpec();
switch (anyRouter.routerType) {
- case CORE:
- var coreRouter = (CoreRouter)anyRouter;
+ case CORE -> {
+ var coreRouter = (CoreRouter) anyRouter;
emptyRoutersSpec.check(coreRouter);
- break;
- case EDGE:
- var edgeRouter = (EdgeRouter)anyRouter;
+ }
+ case EDGE -> {
+ var edgeRouter = (EdgeRouter) anyRouter;
emptySwitchSpec.check(edgeRouter);
+ }
}
return this.routers.remove(anyRouter.id);
}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/EdgeRouter.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/EdgeRouter.java
index 2c1a795..c8f1d2d 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/EdgeRouter.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/EdgeRouter.java
@@ -3,12 +3,12 @@
import dev.davivieira.topologyinventory.domain.specification.EmptyNetworkSpec;
import dev.davivieira.topologyinventory.domain.specification.SameCountrySpec;
import dev.davivieira.topologyinventory.domain.specification.SameIpSpec;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Location;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.RouterType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.RouterType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@@ -45,4 +45,4 @@ public Switch removeSwitch(Switch anySwitch) {
return this.switches.remove(anySwitch.id);
}
-}
\ No newline at end of file
+}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/Equipment.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/Equipment.java
index bf2be4f..52db2af 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/Equipment.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/Equipment.java
@@ -1,10 +1,10 @@
package dev.davivieira.topologyinventory.domain.entity;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Location;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/Router.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/Router.java
index 6cad53e..7647cec 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/Router.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/Router.java
@@ -1,11 +1,11 @@
package dev.davivieira.topologyinventory.domain.entity;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Location;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.RouterType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.RouterType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import lombok.Getter;
import lombok.Setter;
@@ -31,9 +31,9 @@ public static Predicate getCountryPredicate(Location location){
return p -> p.location.getCountry().equals(location.getCountry());
}
- public Router(Id id, Id parentRouterId, Vendor vendor, Model model, IP ip, Location location, RouterType routerType) {
+ protected Router(Id id, Id parentRouterId, Vendor vendor, Model model, IP ip, Location location, RouterType routerType) {
super(id, vendor, model, ip, location);
this.routerType = routerType;
this.parentRouterId = parentRouterId;
}
-}
\ No newline at end of file
+}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/Switch.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/Switch.java
index de49ee3..cce702a 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/Switch.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/Switch.java
@@ -3,14 +3,14 @@
import dev.davivieira.topologyinventory.domain.specification.CIDRSpecification;
import dev.davivieira.topologyinventory.domain.specification.NetworkAmountSpec;
import dev.davivieira.topologyinventory.domain.specification.NetworkAvailabilitySpec;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Location;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.Network;
-import dev.davivieira.topologyinventory.domain.vo.Protocol;
-import dev.davivieira.topologyinventory.domain.vo.SwitchType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.Network;
+import dev.davivieira.topologyinventory.domain.valueobject.Protocol;
+import dev.davivieira.topologyinventory.domain.valueobject.SwitchType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@@ -19,9 +19,9 @@
import java.util.function.Predicate;
@Getter
-public class Switch extends Equipment {
+public final class Switch extends Equipment {
- private SwitchType switchType;
+ private final SwitchType switchType;
@Setter
private List switchNetworks;
@@ -29,7 +29,14 @@ public class Switch extends Equipment {
private Id routerId;
@Builder
- public Switch(Id switchId, Id routerId, Vendor vendor, Model model, IP ip, Location location, SwitchType switchType, List switchNetworks){
+ public Switch(Id switchId,
+ Id routerId,
+ Vendor vendor,
+ Model model,
+ IP ip,
+ Location location,
+ SwitchType switchType,
+ List switchNetworks) {
super(switchId, vendor, model, ip, location);
this.switchType = switchType;
this.switchNetworks = switchNetworks;
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/factory/RouterFactory.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/factory/RouterFactory.java
index de8a9ec..0444553 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/factory/RouterFactory.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/entity/factory/RouterFactory.java
@@ -3,15 +3,18 @@
import dev.davivieira.topologyinventory.domain.entity.CoreRouter;
import dev.davivieira.topologyinventory.domain.entity.EdgeRouter;
import dev.davivieira.topologyinventory.domain.entity.Router;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Location;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.RouterType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.RouterType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
-public class RouterFactory {
+public final class RouterFactory {
+ private RouterFactory() {
+ // not instantiated
+ }
public static Router getRouter(Id id,
Vendor vendor,
Model model,
@@ -19,27 +22,23 @@ public static Router getRouter(Id id,
Location location,
RouterType routerType){
- switch (routerType){
- case CORE:
- return CoreRouter.builder().
- id(id==null ? Id.withoutId():id).
- vendor(vendor).
- model(model).
- ip(ip).
- location(location).
- routerType(routerType).
- build();
- case EDGE:
- return EdgeRouter.builder().
- id(id==null ? Id.withoutId():id).
- vendor(vendor).
- model(model).
- ip(ip).
- location(location).
- routerType(routerType).
- build();
- default:
- return null;
- }
+ return switch (routerType) {
+ case CORE -> CoreRouter.builder().
+ id(id == null ? Id.withoutId() : id).
+ vendor(vendor).
+ model(model).
+ ip(ip).
+ location(location).
+ routerType(routerType).
+ build();
+ case EDGE -> EdgeRouter.builder().
+ id(id == null ? Id.withoutId() : id).
+ vendor(vendor).
+ model(model).
+ ip(ip).
+ location(location).
+ routerType(routerType).
+ build();
+ };
}
}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/exception/GenericSpecificationException.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/exception/GenericSpecificationException.java
index 1b378bc..b8b9130 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/exception/GenericSpecificationException.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/exception/GenericSpecificationException.java
@@ -1,6 +1,6 @@
package dev.davivieira.topologyinventory.domain.exception;
-public class GenericSpecificationException extends RuntimeException {
+public final class GenericSpecificationException extends RuntimeException {
public GenericSpecificationException(String message) {
super(message);
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/service/NetworkService.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/service/NetworkService.java
index dd664ea..6304237 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/service/NetworkService.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/service/NetworkService.java
@@ -1,24 +1,26 @@
package dev.davivieira.topologyinventory.domain.service;
-import dev.davivieira.topologyinventory.domain.vo.Network;
+import dev.davivieira.topologyinventory.domain.valueobject.Network;
import java.util.List;
import java.util.function.Predicate;
-import java.util.stream.Collectors;
-public class NetworkService {
+public final class NetworkService {
+
+ private NetworkService() {}
public static List filterAndRetrieveNetworks(List networks, Predicate networkPredicate){
return networks
.stream()
.filter(networkPredicate)
- .collect(Collectors.toList());
+ .toList();
}
public static Network findNetwork(List networks, Predicate networkPredicate){
return networks
.stream()
.filter(networkPredicate)
- .findFirst().orElse(null);
+ .findFirst()
+ .orElse(null);
}
}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/service/RouterService.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/service/RouterService.java
index a354283..adff8eb 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/service/RouterService.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/service/RouterService.java
@@ -2,20 +2,22 @@
import dev.davivieira.topologyinventory.domain.entity.Equipment;
import dev.davivieira.topologyinventory.domain.entity.Router;
-import dev.davivieira.topologyinventory.domain.vo.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
-import java.util.stream.Collectors;
-public class RouterService {
+public final class RouterService {
+
+ private RouterService() {
+ }
public static List filterAndRetrieveRouter(List routers, Predicate routerPredicate){
return routers
.stream()
.filter(routerPredicate)
- .collect(Collectors.toList());
+ .toList();
}
public static Router findById(Map routers, Id id){
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/service/SwitchService.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/service/SwitchService.java
index 4746e8d..1c2269b 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/service/SwitchService.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/service/SwitchService.java
@@ -1,23 +1,25 @@
package dev.davivieira.topologyinventory.domain.service;
import dev.davivieira.topologyinventory.domain.entity.Switch;
-import dev.davivieira.topologyinventory.domain.vo.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
-import java.util.stream.Collectors;
-public class SwitchService {
+public final class SwitchService {
+ private SwitchService() {
+ // should not be instantiated
+ }
public static List filterAndRetrieveSwitch(List switches, Predicate switchPredicate){
return switches
.stream()
.filter(switchPredicate)
- .collect(Collectors.toList());
+ .toList();
}
- public static Switch findById(Map switches, Id id){
+ public static Switch findById(Map switches, Id id) {
return switches.get(id);
}
}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/CIDRSpecification.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/CIDRSpecification.java
index b1f859c..326ee13 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/CIDRSpecification.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/CIDRSpecification.java
@@ -3,9 +3,9 @@
import dev.davivieira.topologyinventory.domain.exception.GenericSpecificationException;
import dev.davivieira.topologyinventory.domain.specification.shared.AbstractSpecification;
-public class CIDRSpecification extends AbstractSpecification {
+public final class CIDRSpecification extends AbstractSpecification {
- final static public int MINIMUM_ALLOWED_CIDR = 8;
+ private static final int MINIMUM_ALLOWED_CIDR = 8;
@Override
public boolean isSatisfiedBy(Integer cidr) {
@@ -14,7 +14,9 @@ public boolean isSatisfiedBy(Integer cidr) {
@Override
public void check(Integer cidr) throws GenericSpecificationException {
- if(!isSatisfiedBy(cidr))
- throw new GenericSpecificationException("CIDR is below "+CIDRSpecification.MINIMUM_ALLOWED_CIDR);
+ if (!isSatisfiedBy(cidr)) {
+ throw new GenericSpecificationException("CIDR is below " + CIDRSpecification.MINIMUM_ALLOWED_CIDR);
+ }
+
}
}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/EmptyNetworkSpec.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/EmptyNetworkSpec.java
index 53419ba..2915e10 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/EmptyNetworkSpec.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/EmptyNetworkSpec.java
@@ -4,17 +4,17 @@
import dev.davivieira.topologyinventory.domain.exception.GenericSpecificationException;
import dev.davivieira.topologyinventory.domain.specification.shared.AbstractSpecification;
-public class EmptyNetworkSpec extends AbstractSpecification {
+public final class EmptyNetworkSpec extends AbstractSpecification {
@Override
public boolean isSatisfiedBy(Switch switchNetwork) {
- return switchNetwork.getSwitchNetworks()==null||
- switchNetwork.getSwitchNetworks().isEmpty();
+ return switchNetwork.getSwitchNetworks() == null || switchNetwork.getSwitchNetworks().isEmpty();
}
@Override
public void check(Switch aSwitch) throws GenericSpecificationException {
- if(!isSatisfiedBy(aSwitch))
+ if (!isSatisfiedBy(aSwitch)) {
throw new GenericSpecificationException("It's not possible to remove a switch with networks attached to it");
+ }
}
}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/EmptyRouterSpec.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/EmptyRouterSpec.java
index bbf4773..33d4e22 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/EmptyRouterSpec.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/EmptyRouterSpec.java
@@ -4,18 +4,18 @@
import dev.davivieira.topologyinventory.domain.exception.GenericSpecificationException;
import dev.davivieira.topologyinventory.domain.specification.shared.AbstractSpecification;
-public class EmptyRouterSpec extends AbstractSpecification {
+public final class EmptyRouterSpec extends AbstractSpecification {
@Override
public boolean isSatisfiedBy(CoreRouter coreRouter) {
- return coreRouter.getRouters()==null||
- coreRouter.getRouters().isEmpty();
+ return coreRouter.getRouters() == null || coreRouter.getRouters().isEmpty();
}
@Override
public void check(CoreRouter coreRouter) {
- if(!isSatisfiedBy(coreRouter))
+ if(!isSatisfiedBy(coreRouter)) {
throw new GenericSpecificationException("It isn't allowed to remove a core router with other routers attached to it");
+ }
}
}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/EmptySwitchSpec.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/EmptySwitchSpec.java
index 830178c..6d2035e 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/EmptySwitchSpec.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/EmptySwitchSpec.java
@@ -4,17 +4,18 @@
import dev.davivieira.topologyinventory.domain.exception.GenericSpecificationException;
import dev.davivieira.topologyinventory.domain.specification.shared.AbstractSpecification;
-public class EmptySwitchSpec extends AbstractSpecification {
+public final class EmptySwitchSpec extends AbstractSpecification {
@Override
public boolean isSatisfiedBy(EdgeRouter edgeRouter) {
- return edgeRouter.getSwitches()==null ||
- edgeRouter.getSwitches().isEmpty();
+ return edgeRouter.getSwitches() == null || edgeRouter.getSwitches().isEmpty();
}
@Override
public void check(EdgeRouter edgeRouter) {
- if(!isSatisfiedBy(edgeRouter))
+ if (!isSatisfiedBy(edgeRouter)) {
throw new GenericSpecificationException("It isn't allowed to remove an edge router with a switch attached to it");
+ }
+
}
}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/NetworkAmountSpec.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/NetworkAmountSpec.java
index 9eb78f3..f721abe 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/NetworkAmountSpec.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/NetworkAmountSpec.java
@@ -5,19 +5,21 @@
import dev.davivieira.topologyinventory.domain.exception.GenericSpecificationException;
import dev.davivieira.topologyinventory.domain.specification.shared.AbstractSpecification;
-public class NetworkAmountSpec extends AbstractSpecification {
+public final class NetworkAmountSpec extends AbstractSpecification {
- final static public int MAXIMUM_ALLOWED_NETWORKS = 6;
+ private static final int MAXIMUM_ALLOWED_NETWORKS = 6;
@Override
public boolean isSatisfiedBy(Equipment switchNetwork) {
- return ((Switch)switchNetwork).getSwitchNetworks().size()
- <=MAXIMUM_ALLOWED_NETWORKS;
+ return ((Switch) switchNetwork)
+ .getSwitchNetworks()
+ .size() <= MAXIMUM_ALLOWED_NETWORKS;
}
@Override
public void check(Equipment equipment) throws GenericSpecificationException {
- if(!isSatisfiedBy(equipment))
+ if (!isSatisfiedBy(equipment)) {
throw new GenericSpecificationException("The max number of networks is "+ NetworkAmountSpec.MAXIMUM_ALLOWED_NETWORKS);
+ }
}
}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/NetworkAvailabilitySpec.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/NetworkAvailabilitySpec.java
index e0486d1..77fddda 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/NetworkAvailabilitySpec.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/NetworkAvailabilitySpec.java
@@ -4,14 +4,14 @@
import dev.davivieira.topologyinventory.domain.entity.Switch;
import dev.davivieira.topologyinventory.domain.exception.GenericSpecificationException;
import dev.davivieira.topologyinventory.domain.specification.shared.AbstractSpecification;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Network;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Network;
-public class NetworkAvailabilitySpec extends AbstractSpecification {
+public final class NetworkAvailabilitySpec extends AbstractSpecification {
- private IP address;
- private String name;
- private int cidr;
+ private final IP address;
+ private final String name;
+ private final int cidr;
public NetworkAvailabilitySpec(Network network){
this.address = network.getNetworkAddress();
@@ -33,11 +33,12 @@ public void check(Equipment equipment) throws GenericSpecificationException {
private boolean isNetworkAvailable(Equipment switchNetworks){
var availability = true;
for (Network network : ((Switch)switchNetworks).getSwitchNetworks()) {
- if(network.getNetworkAddress().equals(address) &&
+ if (network.getNetworkAddress().equals(address) &&
network.getNetworkName().equals(name) &&
- network.getNetworkCidr() == cidr)
+ network.getNetworkCidr() == cidr) {
availability = false;
- break;
+ break;
+ }
}
return availability;
}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/SameCountrySpec.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/SameCountrySpec.java
index f9daab3..166f61b 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/SameCountrySpec.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/SameCountrySpec.java
@@ -5,9 +5,9 @@
import dev.davivieira.topologyinventory.domain.exception.GenericSpecificationException;
import dev.davivieira.topologyinventory.domain.specification.shared.AbstractSpecification;
-public class SameCountrySpec extends AbstractSpecification {
+public final class SameCountrySpec extends AbstractSpecification {
- private Equipment equipment;
+ private final Equipment equipment;
public SameCountrySpec(Equipment equipment){
this.equipment = equipment;
@@ -27,7 +27,8 @@ public boolean isSatisfiedBy(Equipment anyEquipment) {
@Override
public void check(Equipment equipment) throws GenericSpecificationException {
- if(!isSatisfiedBy(equipment))
+ if (!isSatisfiedBy(equipment)) {
throw new GenericSpecificationException("The equipments should be in the same country");
+ }
}
}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/SameIpSpec.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/SameIpSpec.java
index d0eebc3..f0f75f6 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/SameIpSpec.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/SameIpSpec.java
@@ -4,9 +4,9 @@
import dev.davivieira.topologyinventory.domain.exception.GenericSpecificationException;
import dev.davivieira.topologyinventory.domain.specification.shared.AbstractSpecification;
-public class SameIpSpec extends AbstractSpecification{
+public final class SameIpSpec extends AbstractSpecification{
- private Equipment equipment;
+ private final Equipment equipment;
public SameIpSpec(Equipment equipment){
this.equipment = equipment;
@@ -19,7 +19,8 @@ public boolean isSatisfiedBy(Equipment anyEquipment) {
@Override
public void check(Equipment equipment) {
- if(!isSatisfiedBy(equipment))
+ if (!isSatisfiedBy(equipment)) {
throw new GenericSpecificationException("It's not possible to attach routers with the same IP");
+ }
}
}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/shared/AbstractSpecification.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/shared/AbstractSpecification.java
index b3f6197..2b6e935 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/shared/AbstractSpecification.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/shared/AbstractSpecification.java
@@ -1,15 +1,12 @@
package dev.davivieira.topologyinventory.domain.specification.shared;
-import dev.davivieira.topologyinventory.domain.entity.EdgeRouter;
import dev.davivieira.topologyinventory.domain.exception.GenericSpecificationException;
public abstract class AbstractSpecification implements Specification {
- public abstract boolean isSatisfiedBy(T t);
-
public abstract void check(T t) throws GenericSpecificationException;
public Specification and(final Specification specification) {
- return new AndSpecification(this, specification);
+ return new AndSpecification<>(this, specification);
}
}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/shared/AndSpecification.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/shared/AndSpecification.java
index c284ca2..a3fd6bb 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/shared/AndSpecification.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/specification/shared/AndSpecification.java
@@ -2,10 +2,10 @@
import dev.davivieira.topologyinventory.domain.exception.GenericSpecificationException;
-public class AndSpecification extends AbstractSpecification {
+public final class AndSpecification extends AbstractSpecification {
- private Specification spec1;
- private Specification spec2;
+ private final Specification spec1;
+ private final Specification spec2;
public AndSpecification(final Specification spec1, final Specification spec2) {
this.spec1 = spec1;
@@ -18,6 +18,8 @@ public boolean isSatisfiedBy(final T t) {
@Override
public void check(T t) throws GenericSpecificationException {
-
+ if (!isSatisfiedBy(t)) {
+ throw new GenericSpecificationException(t.getClass().getSimpleName() + " is not valid");
+ }
}
}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/IP.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/IP.java
similarity index 52%
rename from Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/IP.java
rename to Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/IP.java
index ea9d3ab..68feec8 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/IP.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/IP.java
@@ -1,22 +1,22 @@
-package dev.davivieira.topologyinventory.domain.vo;
+package dev.davivieira.topologyinventory.domain.valueobject;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
+import java.util.Objects;
+
@Getter
@ToString
@EqualsAndHashCode
public class IP {
- private String ipAddress;
- private Protocol protocol;
+ private final String ipAddress;
+ private final Protocol protocol;
- public IP(String ipAddress){
- if(ipAddress == null)
- throw new IllegalArgumentException("Null IP address");
- this.ipAddress = ipAddress;
- if(ipAddress.length()<=15) {
+ public IP(String ipAddress) {
+ this.ipAddress = Objects.requireNonNull(ipAddress, "Null IP address");
+ if (ipAddress.length() <= 15) {
this.protocol = Protocol.IPV4;
} else {
this.protocol = Protocol.IPV6;
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Id.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Id.java
similarity index 87%
rename from Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Id.java
rename to Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Id.java
index c5cd6df..daccb9c 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Id.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Id.java
@@ -1,4 +1,4 @@
-package dev.davivieira.topologyinventory.domain.vo;
+package dev.davivieira.topologyinventory.domain.valueobject;
import lombok.EqualsAndHashCode;
import lombok.Getter;
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Location.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Location.java
similarity index 88%
rename from Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Location.java
rename to Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Location.java
index 912ba8f..bd7802e 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Location.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Location.java
@@ -1,4 +1,4 @@
-package dev.davivieira.topologyinventory.domain.vo;
+package dev.davivieira.topologyinventory.domain.valueobject;
import lombok.AllArgsConstructor;
import lombok.Builder;
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Model.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Model.java
similarity index 54%
rename from Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Model.java
rename to Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Model.java
index ccf6913..e3f0ca4 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Model.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Model.java
@@ -1,4 +1,4 @@
-package dev.davivieira.topologyinventory.domain.vo;
+package dev.davivieira.topologyinventory.domain.valueobject;
public enum Model {
XYZ0001,
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Network.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Network.java
similarity index 88%
rename from Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Network.java
rename to Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Network.java
index 2caa104..f99ccee 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Network.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Network.java
@@ -1,4 +1,4 @@
-package dev.davivieira.topologyinventory.domain.vo;
+package dev.davivieira.topologyinventory.domain.valueobject;
import lombok.Builder;
import lombok.EqualsAndHashCode;
@@ -26,7 +26,7 @@ public static Predicate getNetworkNamePredicate(String name){
}
public Network(IP networkAddress, String networkName, int networkCidr){
- if(networkCidr <1 || networkCidr>32){
+ if (networkCidr < 1 || networkCidr > 32) {
throw new IllegalArgumentException("Invalid CIDR value");
}
this.networkAddress = networkAddress;
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Protocol.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Protocol.java
new file mode 100644
index 0000000..422df7c
--- /dev/null
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Protocol.java
@@ -0,0 +1,6 @@
+package dev.davivieira.topologyinventory.domain.valueobject;
+
+public enum Protocol {
+ IPV4,
+ IPV6
+}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/RouterType.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/RouterType.java
new file mode 100644
index 0000000..756d160
--- /dev/null
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/RouterType.java
@@ -0,0 +1,6 @@
+package dev.davivieira.topologyinventory.domain.valueobject;
+
+public enum RouterType {
+ EDGE,
+ CORE
+}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/SwitchType.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/SwitchType.java
new file mode 100644
index 0000000..b041c5e
--- /dev/null
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/SwitchType.java
@@ -0,0 +1,6 @@
+package dev.davivieira.topologyinventory.domain.valueobject;
+
+public enum SwitchType {
+ LAYER2,
+ LAYER3
+}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Vendor.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Vendor.java
similarity index 59%
rename from Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Vendor.java
rename to Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Vendor.java
index 2981e55..f9fb715 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Vendor.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/valueobject/Vendor.java
@@ -1,4 +1,4 @@
-package dev.davivieira.topologyinventory.domain.vo;
+package dev.davivieira.topologyinventory.domain.valueobject;
public enum Vendor {
CISCO,
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Protocol.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Protocol.java
deleted file mode 100644
index 15086bb..0000000
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/Protocol.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package dev.davivieira.topologyinventory.domain.vo;
-
-public enum Protocol {
- IPV4,
- IPV6;
-}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/RouterType.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/RouterType.java
deleted file mode 100644
index 84baa32..0000000
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/RouterType.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package dev.davivieira.topologyinventory.domain.vo;
-
-public enum RouterType {
- EDGE,
- CORE;
-}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/SwitchType.java b/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/SwitchType.java
deleted file mode 100644
index 9cc054e..0000000
--- a/Chapter15/domain/inventory-core-domain/src/main/java/dev/davivieira/topologyinventory/domain/vo/SwitchType.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package dev.davivieira.topologyinventory.domain.vo;
-
-public enum SwitchType {
- LAYER2,
- LAYER3;
-}
diff --git a/Chapter15/domain/inventory-core-domain/src/main/java/module-info.java b/Chapter15/domain/inventory-core-domain/src/main/java/module-info.java
index 1b769df..67289e5 100644
--- a/Chapter15/domain/inventory-core-domain/src/main/java/module-info.java
+++ b/Chapter15/domain/inventory-core-domain/src/main/java/module-info.java
@@ -1,8 +1,9 @@
module inventory_core_domain {
exports dev.davivieira.topologyinventory.domain.entity;
+ exports dev.davivieira.topologyinventory.domain.exception;
exports dev.davivieira.topologyinventory.domain.service;
exports dev.davivieira.topologyinventory.domain.specification;
- exports dev.davivieira.topologyinventory.domain.vo;
+ exports dev.davivieira.topologyinventory.domain.valueobject;
exports dev.davivieira.topologyinventory.domain.entity.factory;
requires static lombok;
}
diff --git a/Chapter15/domain/pom.xml b/Chapter15/domain/pom.xml
index 6568d33..38cf8bd 100644
--- a/Chapter15/domain/pom.xml
+++ b/Chapter15/domain/pom.xml
@@ -7,6 +7,7 @@
topology-inventory
1.0-SNAPSHOT
+
domain
diff --git a/Chapter15/domain/status-sub-domain/pom.xml b/Chapter15/domain/status-sub-domain/pom.xml
index a05099c..6d12ba7 100644
--- a/Chapter15/domain/status-sub-domain/pom.xml
+++ b/Chapter15/domain/status-sub-domain/pom.xml
@@ -8,13 +8,13 @@
1.0-SNAPSHOT
../../pom.xml
+
status-sub-domain
dev.davivieira
inventory-core-domain
- 1.0-SNAPSHOT
diff --git a/Chapter15/domain/status-sub-domain/src/main/java/dev/davivieira/topologyinventory/status/RouterInfo.java b/Chapter15/domain/status-sub-domain/src/main/java/dev/davivieira/topologyinventory/status/RouterInfo.java
index 7c9d975..38e4209 100644
--- a/Chapter15/domain/status-sub-domain/src/main/java/dev/davivieira/topologyinventory/status/RouterInfo.java
+++ b/Chapter15/domain/status-sub-domain/src/main/java/dev/davivieira/topologyinventory/status/RouterInfo.java
@@ -1,11 +1,11 @@
package dev.davivieira.topologyinventory.status;
import dev.davivieira.topologyinventory.domain.entity.factory.RouterFactory;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.RouterType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.RouterType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
public class RouterInfo {
diff --git a/Chapter15/framework/pom.xml b/Chapter15/framework/pom.xml
index 7abf9d8..bc9383f 100644
--- a/Chapter15/framework/pom.xml
+++ b/Chapter15/framework/pom.xml
@@ -2,27 +2,27 @@
4.0.0
+
dev.davivieira
topology-inventory
1.0-SNAPSHOT
- dev.davivieira
+
framework
- 1.0-SNAPSHOT
+
-
- dev.davivieira
- domain
-
+
dev.davivieira
application
+
+
com.h2database
h2
- 1.4.200
+ 2.1.214
io.quarkus
@@ -36,10 +36,16 @@
jakarta.xml.bind
jakarta.xml.bind-api
+
+ io.quarkus
+ quarkus-hibernate-validator
+
io.quarkus
quarkus-smallrye-openapi
+
+
io.rest-assured
rest-assured
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NetworkManagementAdapter.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NetworkManagementAdapter.java
index a98e784..45e12ed 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NetworkManagementAdapter.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NetworkManagementAdapter.java
@@ -3,9 +3,9 @@
import dev.davivieira.topologyinventory.application.usecases.NetworkManagementUseCase;
import dev.davivieira.topologyinventory.application.usecases.SwitchManagementUseCase;
import dev.davivieira.topologyinventory.domain.entity.Switch;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Network;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Network;
import dev.davivieira.topologyinventory.framework.adapters.input.rest.request.network.AddNetwork;
import io.smallrye.mutiny.Uni;
import org.eclipse.microprofile.openapi.annotations.Operation;
@@ -14,12 +14,17 @@
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.transaction.Transactional;
+import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
+import javax.validation.constraints.NotBlank;
+@Produces("application/json")
+@Consumes("application/json")
@ApplicationScoped
@Path("/network")
@Tag(name = "Network Operations", description = "Network management operations")
@@ -34,7 +39,7 @@ public class NetworkManagementAdapter {
@POST
@Path("/add/{switchId}")
@Operation(operationId = "addNetworkToSwitch", description = "Add network to a switch")
- public Uni addNetworkToSwitch(AddNetwork addNetwork, @PathParam("switchId") String switchId) {
+ public Uni addNetworkToSwitch(AddNetwork addNetwork, @PathParam("switchId") @NotBlank String switchId) {
Switch networkSwitch = switchManagementUseCase.retrieveSwitch(Id.withId(switchId));
Network network = Network.builder()
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/RouterManagementAdapter.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/RouterManagementAdapter.java
index 689804f..4bb818c 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/RouterManagementAdapter.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/RouterManagementAdapter.java
@@ -3,26 +3,27 @@
import dev.davivieira.topologyinventory.application.usecases.RouterManagementUseCase;
import dev.davivieira.topologyinventory.domain.entity.CoreRouter;
import dev.davivieira.topologyinventory.domain.entity.Router;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.framework.adapters.output.mysql.repository.RouterManagementRepository;
-import org.eclipse.microprofile.openapi.annotations.Operation;
-import org.eclipse.microprofile.openapi.annotations.tags.Tag;
-
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
import dev.davivieira.topologyinventory.framework.adapters.input.rest.request.router.CreateRouter;
import io.smallrye.mutiny.Uni;
+import org.eclipse.microprofile.openapi.annotations.Operation;
+import org.eclipse.microprofile.openapi.annotations.tags.Tag;
import javax.enterprise.context.ApplicationScoped;
-
import javax.inject.Inject;
import javax.transaction.Transactional;
+import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
+@Consumes("application/json")
+@Produces("application/json")
@ApplicationScoped
@Path("/router")
@Tag(name = "Router Operations", description = "Router management operations")
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/SwitchManagementAdapter.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/SwitchManagementAdapter.java
index 32b5bea..c26140d 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/SwitchManagementAdapter.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/SwitchManagementAdapter.java
@@ -5,9 +5,9 @@
import dev.davivieira.topologyinventory.domain.entity.EdgeRouter;
import dev.davivieira.topologyinventory.domain.entity.Router;
import dev.davivieira.topologyinventory.domain.entity.Switch;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.RouterType;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.RouterType;
import dev.davivieira.topologyinventory.framework.adapters.input.rest.request.aswitch.CreateSwitch;
import io.smallrye.mutiny.Uni;
import org.eclipse.microprofile.openapi.annotations.Operation;
@@ -16,13 +16,17 @@
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.transaction.Transactional;
+import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
+@Consumes("application/json")
+@Produces("application/json")
@ApplicationScoped
@Path("/switch")
@Tag(name = "Switch Operations", description = "Operations for switch management")
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/converter/IdParamConverter.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/converter/IdParamConverter.java
index dc39e9a..ac514c2 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/converter/IdParamConverter.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/converter/IdParamConverter.java
@@ -1,6 +1,6 @@
package dev.davivieira.topologyinventory.framework.adapters.input.rest.converter;
-import dev.davivieira.topologyinventory.domain.vo.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
import javax.ws.rs.ext.ParamConverter;
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/converter/IdParamConverterProvider.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/converter/IdParamConverterProvider.java
index 6e95420..9a07e66 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/converter/IdParamConverterProvider.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/converter/IdParamConverterProvider.java
@@ -1,6 +1,6 @@
package dev.davivieira.topologyinventory.framework.adapters.input.rest.converter;
-import dev.davivieira.topologyinventory.domain.vo.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
import javax.inject.Singleton;
import javax.ws.rs.ext.ParamConverter;
@@ -23,4 +23,4 @@ public ParamConverter getConverter(Class rawType,
}
return null;
}
-}
\ No newline at end of file
+}
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/LocationDeserializer.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/LocationDeserializer.java
index 2ac871e..2268dbf 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/LocationDeserializer.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/LocationDeserializer.java
@@ -1,13 +1,12 @@
package dev.davivieira.topologyinventory.framework.adapters.input.rest.deserializer;
import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.fasterxml.jackson.databind.module.SimpleModule;
-import dev.davivieira.topologyinventory.domain.vo.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
import java.io.IOException;
@@ -22,7 +21,7 @@ public LocationDeserializer(Class> vc) {
}
@Override
- public Location deserialize(JsonParser jsonParser, DeserializationContext ctxt) throws IOException, JsonProcessingException {
+ public Location deserialize(JsonParser jsonParser, DeserializationContext ctxt) throws IOException {
JsonNode node = jsonParser.getCodec().readTree(jsonParser);
var address = node.get("address").asText();
var city = node.get("city").asText();
@@ -48,7 +47,6 @@ public static Location getLocation(JsonNode jsonNode) throws IOException {
SimpleModule module = new SimpleModule();
module.addDeserializer(Location.class, new LocationDeserializer());
mapper.registerModule(module);
- Location location = mapper.readValue(jsonNode.toString(), Location.class);
- return location;
+ return mapper.readValue(jsonNode.toString(), Location.class);
}
}
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/NetworkDeserializer.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/NetworkDeserializer.java
index 12cbccc..404dbf2 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/NetworkDeserializer.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/NetworkDeserializer.java
@@ -6,8 +6,8 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.fasterxml.jackson.databind.module.SimpleModule;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Network;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Network;
import java.io.IOException;
@@ -39,7 +39,6 @@ public static Network getNetworkDeserialized(String jsonStr) throws IOException
var module = new SimpleModule();
module.addDeserializer(Network.class, new NetworkDeserializer());
mapper.registerModule(module);
- var network = mapper.readValue(jsonStr, Network.class);
- return network;
+ return mapper.readValue(jsonStr, Network.class);
}
}
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/RouterDeserializer.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/RouterDeserializer.java
index b219542..ca7f65b 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/RouterDeserializer.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/RouterDeserializer.java
@@ -11,11 +11,11 @@
import dev.davivieira.topologyinventory.domain.entity.Router;
import dev.davivieira.topologyinventory.domain.entity.Switch;
import dev.davivieira.topologyinventory.domain.entity.factory.RouterFactory;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.RouterType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.RouterType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import java.io.IOException;
import java.util.HashMap;
@@ -64,7 +64,7 @@ public Router deserialize(JsonParser jsonParser, DeserializationContext ctxt)
private void fetchChildRouters(RouterType routerType, JsonNode routersNode, Router router) throws IOException {
Map routers = new HashMap<>();
- if (routerType==RouterType.CORE && routers != null) {
+ if (routerType == RouterType.CORE) {
Iterator childRouters = routersNode.fieldNames();
while (childRouters.hasNext()) {
String childRouter = childRouters.next();
@@ -78,7 +78,7 @@ private void fetchChildRouters(RouterType routerType, JsonNode routersNode, Rout
private void fetchChildSwitches(RouterType routerType, JsonNode switchesNode, Router router) throws IOException {
Map switches = new HashMap<>();
- if (routerType==RouterType.EDGE && switches != null) {
+ if (routerType == RouterType.EDGE) {
var childSwitches = switchesNode.fieldNames();
while (childSwitches.hasNext()) {
var childSwitch = childSwitches.next();
@@ -95,7 +95,6 @@ public static Router getRouterDeserialized(String jsonStr) throws IOException {
var module = new SimpleModule();
module.addDeserializer(Router.class, new RouterDeserializer());
mapper.registerModule(module);
- var router = mapper.readValue(jsonStr, Router.class);
- return router;
+ return mapper.readValue(jsonStr, Router.class);
}
}
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/SwitchDeserializer.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/SwitchDeserializer.java
index 1eecee1..135c09f 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/SwitchDeserializer.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/deserializer/SwitchDeserializer.java
@@ -7,12 +7,12 @@
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.fasterxml.jackson.databind.module.SimpleModule;
import dev.davivieira.topologyinventory.domain.entity.Switch;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.Network;
-import dev.davivieira.topologyinventory.domain.vo.SwitchType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.Network;
+import dev.davivieira.topologyinventory.domain.valueobject.SwitchType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import java.io.IOException;
import java.util.ArrayList;
@@ -61,9 +61,7 @@ public Switch deserialize(JsonParser jsonParser, DeserializationContext ctxt) th
private void fetchChildNetworks(JsonNode switchNetworksNode, Switch networkSwitch) throws IOException {
List networks = new ArrayList<>();
if (switchNetworksNode != null) {
- var childNetworks = switchNetworksNode.iterator();
- while (childNetworks.hasNext()) {
- var childNetwork = childNetworks.next();
+ for (JsonNode childNetwork : switchNetworksNode) {
var fetchedNetwork = getNetworkDeserialized(childNetwork.toString());
networks.add(fetchedNetwork);
}
@@ -76,7 +74,6 @@ public static Switch getSwitchDeserialized(String jsonStr) throws IOException {
var module = new SimpleModule();
module.addDeserializer(Switch.class, new SwitchDeserializer());
mapper.registerModule(module);
- var networkSwitch = mapper.readValue(jsonStr, Switch.class);
- return networkSwitch;
+ return mapper.readValue(jsonStr, Switch.class);
}
}
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/request/aswitch/CreateSwitch.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/request/aswitch/CreateSwitch.java
index e78ebc2..dd129cd 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/request/aswitch/CreateSwitch.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/request/aswitch/CreateSwitch.java
@@ -2,10 +2,10 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
-import dev.davivieira.topologyinventory.domain.vo.Location;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.SwitchType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.SwitchType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/request/network/AddNetwork.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/request/network/AddNetwork.java
index 52d412b..cd131a0 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/request/network/AddNetwork.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/request/network/AddNetwork.java
@@ -7,6 +7,10 @@
import lombok.Getter;
import lombok.NoArgsConstructor;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
@Getter
@Builder
@AllArgsConstructor
@@ -15,11 +19,14 @@
public class AddNetwork {
@JsonProperty
+ @NotNull
private String networkAddress;
@JsonProperty
private String networkName;
@JsonProperty
+ @Min(1)
+ @Max(35)
private int networkCidr;
}
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/request/router/CreateRouter.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/request/router/CreateRouter.java
index 0cccda7..04f9e00 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/request/router/CreateRouter.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/request/router/CreateRouter.java
@@ -2,10 +2,10 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
-import dev.davivieira.topologyinventory.domain.vo.Location;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.RouterType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.RouterType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/RouterManagementMySQLAdapter.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/RouterManagementMySQLAdapter.java
index fd58c44..d38a6e9 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/RouterManagementMySQLAdapter.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/RouterManagementMySQLAdapter.java
@@ -2,15 +2,15 @@
import dev.davivieira.topologyinventory.application.ports.output.RouterManagementOutputPort;
import dev.davivieira.topologyinventory.domain.entity.Router;
-import dev.davivieira.topologyinventory.domain.vo.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
import dev.davivieira.topologyinventory.framework.adapters.output.mysql.mappers.RouterH2Mapper;
import dev.davivieira.topologyinventory.framework.adapters.output.mysql.repository.RouterManagementRepository;
-import io.quarkus.hibernate.reactive.panache.Panache;
-
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
+import static io.quarkus.hibernate.reactive.panache.Panache.withTransaction;
+
@ApplicationScoped
public class RouterManagementMySQLAdapter implements RouterManagementOutputPort {
@@ -19,23 +19,33 @@ public class RouterManagementMySQLAdapter implements RouterManagementOutputPort
@Override
public Router retrieveRouter(Id id) {
- var routerData = routerManagementRepository.findById(id.getUuid()).subscribe().asCompletionStage().join();
+ var routerData = routerManagementRepository
+ .findById(id.getUuid())
+ .subscribe()
+ .asCompletionStage()
+ .join();
return RouterH2Mapper.routerDataToDomain(routerData);
}
@Override
public Router removeRouter(Id id) {
- var removed = routerManagementRepository.deleteById(id.getUuid()).subscribe().asCompletionStage().join();
- if(!removed){
+ var removed = routerManagementRepository
+ .deleteById(id.getUuid())
+ .subscribe()
+ .asCompletionStage()
+ .join();
+
+ if (Boolean.FALSE.equals(removed)) {
throw new InternalError();
}
+
return null;
}
@Override
public Router persistRouter(Router router) {
var routerData = RouterH2Mapper.routerDomainToData(router);
- Panache.withTransaction(()->routerManagementRepository.persist(routerData));
+ withTransaction(()->routerManagementRepository.persist(routerData));
return router;
}
-}
\ No newline at end of file
+}
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/SwitchManagementMySQLAdapter.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/SwitchManagementMySQLAdapter.java
index 057a13d..fd813eb 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/SwitchManagementMySQLAdapter.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/SwitchManagementMySQLAdapter.java
@@ -2,7 +2,7 @@
import dev.davivieira.topologyinventory.application.ports.output.SwitchManagementOutputPort;
import dev.davivieira.topologyinventory.domain.entity.Switch;
-import dev.davivieira.topologyinventory.domain.vo.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
import dev.davivieira.topologyinventory.framework.adapters.output.mysql.mappers.RouterH2Mapper;
import dev.davivieira.topologyinventory.framework.adapters.output.mysql.repository.SwitchManagementRepository;
@@ -17,7 +17,11 @@ public class SwitchManagementMySQLAdapter implements SwitchManagementOutputPort
@Override
public Switch retrieveSwitch(Id id) {
- var switchData = switchManagementRepository.findById(id.getUuid()).subscribe().asCompletionStage().join();
+ var switchData = switchManagementRepository
+ .findById(id.getUuid())
+ .subscribe()
+ .asCompletionStage()
+ .join();
return RouterH2Mapper.switchDataToDomain(switchData);
}
}
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/IPData.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/IPData.java
index 2d20d01..b2198f4 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/IPData.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/IPData.java
@@ -15,11 +15,12 @@ public class IPData {
@Enumerated(EnumType.STRING)
private ProtocolData protocol;
- private IPData(String address){
- if(address == null)
+ private IPData(String address) {
+ if (address == null) {
throw new IllegalArgumentException("Null IP address");
+ }
this.address = address;
- if(address.length()<=15) {
+ if (address.length() <= 15) {
this.protocol = ProtocolData.IPV4;
} else {
this.protocol = ProtocolData.IPV6;
@@ -27,7 +28,7 @@ private IPData(String address){
}
public IPData() {
-
+ // Used by hibernate only
}
public static IPData fromAddress(String address){
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/ProtocolData.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/ProtocolData.java
index 20f7ddf..bccdfbe 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/ProtocolData.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/ProtocolData.java
@@ -2,5 +2,5 @@
public enum ProtocolData {
IPV4,
- IPV6;
+ IPV6
}
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/RouterTypeData.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/RouterTypeData.java
index 3c29ca6..5e15f9b 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/RouterTypeData.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/RouterTypeData.java
@@ -2,5 +2,5 @@
public enum RouterTypeData {
EDGE,
- CORE;
+ CORE
}
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/SwitchTypeData.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/SwitchTypeData.java
index 4fe3309..cedd91e 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/SwitchTypeData.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/data/SwitchTypeData.java
@@ -2,5 +2,5 @@
public enum SwitchTypeData {
LAYER2,
- LAYER3;
+ LAYER3
}
diff --git a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/mappers/RouterH2Mapper.java b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/mappers/RouterH2Mapper.java
index 26c2885..2cd5adf 100644
--- a/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/mappers/RouterH2Mapper.java
+++ b/Chapter15/framework/src/main/java/dev/davivieira/topologyinventory/framework/adapters/output/mysql/mappers/RouterH2Mapper.java
@@ -5,14 +5,14 @@
import dev.davivieira.topologyinventory.domain.entity.Router;
import dev.davivieira.topologyinventory.domain.entity.Switch;
import dev.davivieira.topologyinventory.domain.entity.factory.RouterFactory;
-import dev.davivieira.topologyinventory.domain.vo.IP;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Location;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.Network;
-import dev.davivieira.topologyinventory.domain.vo.RouterType;
-import dev.davivieira.topologyinventory.domain.vo.SwitchType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.IP;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.Network;
+import dev.davivieira.topologyinventory.domain.valueobject.RouterType;
+import dev.davivieira.topologyinventory.domain.valueobject.SwitchType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import dev.davivieira.topologyinventory.framework.adapters.output.mysql.data.IPData;
import dev.davivieira.topologyinventory.framework.adapters.output.mysql.data.LocationData;
import dev.davivieira.topologyinventory.framework.adapters.output.mysql.data.ModelData;
@@ -31,9 +31,13 @@
import java.util.Set;
import java.util.UUID;
-import static dev.davivieira.topologyinventory.domain.vo.Id.withId;
+import static dev.davivieira.topologyinventory.domain.valueobject.Id.withId;
-public class RouterH2Mapper {
+public final class RouterH2Mapper {
+
+ private RouterH2Mapper() {
+ // Should not be instantiated
+ }
public static Router routerDataToDomain(RouterData routerData){
var router = RouterFactory.getRouter(
@@ -43,9 +47,12 @@ public static Router routerDataToDomain(RouterData routerData){
IP.fromAddress(routerData.getIp().getAddress()),
locationDataToLocation(routerData.getRouterLocation()),
RouterType.valueOf(routerData.getRouterType().name()));
- if(routerData.getRouterParentCoreId()!=null)
- router.setParentRouterId(Id.withId(routerData.getRouterParentCoreId().toString()));
- if(routerData.getRouterType().equals(RouterTypeData.CORE)){
+
+ if (routerData.getRouterParentCoreId() != null) {
+ router.setParentRouterId(Id.withId(routerData.getRouterParentCoreId().toString()));
+ }
+
+ if (routerData.getRouterType().equals(RouterTypeData.CORE)) {
var coreRouter = (CoreRouter) router;
coreRouter.setRouters(getRoutersFromData(routerData.getRouters()));
return coreRouter;
@@ -65,9 +72,11 @@ public static RouterData routerDomainToData(Router router){
routerLocation(locationDomainToLocationData(router.getLocation())).
routerType(RouterTypeData.valueOf(router.getRouterType().toString())).
build();
- if(router.getParentRouterId()!=null)
+
+ if (router.getParentRouterId() != null) {
routerData.setRouterParentCoreId(router.getParentRouterId().getUuid());
- if(router.getRouterType().equals(RouterType.CORE)) {
+ }
+ if (router.getRouterType().equals(RouterType.CORE)) {
var coreRouter = (CoreRouter) router;
routerData.setRouters(getRoutersFromDomain(coreRouter.getRouters()));
} else {
@@ -137,9 +146,9 @@ private static Map getRoutersFromData(Set routerDataList
return routerMap;
}
- private static Set getRoutersFromDomain(Map routers){
+ private static Set getRoutersFromDomain(Map routers){
Set routerDataList = new HashSet<>();
- routers.values().stream().forEach(router -> {
+ routers.values().forEach(router -> {
var routerData = routerDomainToData(router);
routerDataList.add(routerData);
});
@@ -156,12 +165,10 @@ private static Map getSwitchesFromData(List switchDataLi
return switchMap;
}
- private static List getSwitchesFromDomain(Map switches){
+ private static List getSwitchesFromDomain(Map switches){
List switchDataList = new ArrayList<>();
- if(switches!=null) {
- switches.values().stream().forEach(aSwitch -> {
- switchDataList.add(switchDomainToData(aSwitch));
- });
+ if (switches != null) {
+ switches.values().forEach(aSwitch -> switchDataList.add(switchDomainToData(aSwitch)));
}
return switchDataList;
}
@@ -178,9 +185,9 @@ private static List getNetworksFromData(Set networkData){
return networks;
}
- private static Set getNetworksFromDomain(List networks, UUID routerId){
+ private static Set getNetworksFromDomain(List networks, UUID routerId){
Set networkDataSet = new HashSet<>();
- if(networks!=null) {
+ if (networks != null) {
networks.forEach(network -> {
var networkData = new NetworkData(
diff --git a/Chapter15/framework/src/main/java/module-info.java b/Chapter15/framework/src/main/java/module-info.java
index cb4d682..b98ea3b 100644
--- a/Chapter15/framework/src/main/java/module-info.java
+++ b/Chapter15/framework/src/main/java/module-info.java
@@ -15,13 +15,14 @@
requires java.ws.rs;
requires io.smallrye.mutiny;
requires java.xml.bind;
- requires smallrye.common.annotation;
+ requires io.smallrye.common.annotation;
requires com.fasterxml.jackson.annotation;
requires microprofile.openapi.api;
requires quarkus.hibernate.reactive.panache;
requires java.transaction;
requires io.vertx.core;
requires microprofile.context.propagation.api;
+ requires java.validation;
exports dev.davivieira.topologyinventory.framework.adapters.output.mysql.data;
opens dev.davivieira.topologyinventory.framework.adapters.output.mysql.data;
@@ -36,4 +37,4 @@
uses dev.davivieira.topologyinventory.application.usecases.NetworkManagementUseCase;
uses dev.davivieira.topologyinventory.application.ports.output.RouterManagementOutputPort;
uses dev.davivieira.topologyinventory.application.ports.output.SwitchManagementOutputPort;
-}
\ No newline at end of file
+}
diff --git a/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeNetworkManagementAdapter.java b/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeNetworkManagementAdapter.java
deleted file mode 100644
index 19515fb..0000000
--- a/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeNetworkManagementAdapter.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package dev.davivieira.topologyinventory.framework.adapters.input.rest;
-
-import io.quarkus.test.junit.NativeImageTest;
-import io.quarkus.test.junit.QuarkusIntegrationTest;
-
-@NativeImageTest
-public class NativeNetworkManagementAdapter extends NetworkManagementAdapterTest {
-}
diff --git a/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeNetworkManagementAdapterIT.java b/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeNetworkManagementAdapterIT.java
new file mode 100644
index 0000000..f7e32db
--- /dev/null
+++ b/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeNetworkManagementAdapterIT.java
@@ -0,0 +1,7 @@
+package dev.davivieira.topologyinventory.framework.adapters.input.rest;
+
+import io.quarkus.test.junit.QuarkusIntegrationTest;
+
+@QuarkusIntegrationTest
+class NativeNetworkManagementAdapterIT extends NetworkManagementAdapterTest {
+}
diff --git a/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeRouterManagementAdapter.java b/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeRouterManagementAdapter.java
deleted file mode 100644
index 6812edc..0000000
--- a/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeRouterManagementAdapter.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package dev.davivieira.topologyinventory.framework.adapters.input.rest;
-
-import io.quarkus.test.junit.NativeImageTest;
-import io.quarkus.test.junit.QuarkusIntegrationTest;
-
-@NativeImageTest
-public class NativeRouterManagementAdapter extends RouterManagementAdapterTest{
-}
diff --git a/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeRouterManagementAdapterIT.java b/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeRouterManagementAdapterIT.java
new file mode 100644
index 0000000..ad0d532
--- /dev/null
+++ b/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeRouterManagementAdapterIT.java
@@ -0,0 +1,7 @@
+package dev.davivieira.topologyinventory.framework.adapters.input.rest;
+
+import io.quarkus.test.junit.QuarkusIntegrationTest;
+
+@QuarkusIntegrationTest
+class NativeRouterManagementAdapterIT extends RouterManagementAdapterTest{
+}
diff --git a/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeSwitchManagementAdapter.java b/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeSwitchManagementAdapter.java
deleted file mode 100644
index 687e861..0000000
--- a/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeSwitchManagementAdapter.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package dev.davivieira.topologyinventory.framework.adapters.input.rest;
-
-import io.quarkus.test.junit.NativeImageTest;
-import io.quarkus.test.junit.QuarkusIntegrationTest;
-
-@NativeImageTest
-public class NativeSwitchManagementAdapter extends SwitchManagementAdapterTest {
-}
diff --git a/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeSwitchManagementAdapterIT.java b/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeSwitchManagementAdapterIT.java
new file mode 100644
index 0000000..ac915cc
--- /dev/null
+++ b/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NativeSwitchManagementAdapterIT.java
@@ -0,0 +1,7 @@
+package dev.davivieira.topologyinventory.framework.adapters.input.rest;
+
+import io.quarkus.test.junit.QuarkusIntegrationTest;
+
+@QuarkusIntegrationTest
+class NativeSwitchManagementAdapterIT extends SwitchManagementAdapterTest {
+}
diff --git a/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NetworkManagementAdapterTest.java b/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NetworkManagementAdapterTest.java
index bc74777..318bb6a 100644
--- a/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NetworkManagementAdapterTest.java
+++ b/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/NetworkManagementAdapterTest.java
@@ -1,5 +1,6 @@
package dev.davivieira.topologyinventory.framework.adapters.input.rest;
+import dev.davivieira.topologyinventory.domain.valueobject.Network;
import dev.davivieira.topologyinventory.framework.adapters.input.rest.request.network.AddNetwork;
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.MethodOrderer;
@@ -41,7 +42,7 @@ public void addNetworkToSwitch() throws IOException {
var networks = getSwitchDeserialized(switchStr).getSwitchNetworks();
var networkExists = networks
.stream()
- .map(network -> network.getNetworkName())
+ .map(Network::getNetworkName)
.anyMatch(name -> name.equals(networkName));
assertTrue(networkExists);
@@ -67,7 +68,7 @@ public void removeNetworkFromSwitch() throws IOException {
var networks = getSwitchDeserialized(switchStr).getSwitchNetworks();
var networkExists = networks
.stream()
- .map(network -> network.getNetworkName())
+ .map(Network::getNetworkName)
.anyMatch(name -> name.equals(networkName));
assertFalse(networkExists);
diff --git a/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/RouterManagementAdapterTest.java b/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/RouterManagementAdapterTest.java
index b17f5c3..f6c9388 100644
--- a/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/RouterManagementAdapterTest.java
+++ b/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/RouterManagementAdapterTest.java
@@ -1,11 +1,11 @@
package dev.davivieira.topologyinventory.framework.adapters.input.rest;
import dev.davivieira.topologyinventory.domain.entity.CoreRouter;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Location;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.RouterType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Location;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.RouterType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import dev.davivieira.topologyinventory.framework.adapters.input.rest.request.router.CreateRouter;
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.MethodOrderer;
diff --git a/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/SwitchManagementAdapterTest.java b/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/SwitchManagementAdapterTest.java
index 07900ce..04cf3e4 100644
--- a/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/SwitchManagementAdapterTest.java
+++ b/Chapter15/framework/src/test/java/dev/davivieira/topologyinventory/framework/adapters/input/rest/SwitchManagementAdapterTest.java
@@ -1,10 +1,10 @@
package dev.davivieira.topologyinventory.framework.adapters.input.rest;
import dev.davivieira.topologyinventory.domain.entity.EdgeRouter;
-import dev.davivieira.topologyinventory.domain.vo.Id;
-import dev.davivieira.topologyinventory.domain.vo.Model;
-import dev.davivieira.topologyinventory.domain.vo.SwitchType;
-import dev.davivieira.topologyinventory.domain.vo.Vendor;
+import dev.davivieira.topologyinventory.domain.valueobject.Id;
+import dev.davivieira.topologyinventory.domain.valueobject.Model;
+import dev.davivieira.topologyinventory.domain.valueobject.SwitchType;
+import dev.davivieira.topologyinventory.domain.valueobject.Vendor;
import dev.davivieira.topologyinventory.framework.adapters.input.rest.request.aswitch.CreateSwitch;
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.MethodOrderer;
diff --git a/Chapter15/pom.xml b/Chapter15/pom.xml
index c94e068..5d376d4 100644
--- a/Chapter15/pom.xml
+++ b/Chapter15/pom.xml
@@ -6,6 +6,7 @@
topology-inventory
1.0-SNAPSHOT
pom
+
domain
domain/inventory-core-domain
@@ -14,58 +15,73 @@
framework
bootstrap
+
- 3.8.1
- 6.10.4
- 5.7.2
- 1.18.20
- 11
- 11
- 3.10.0
- 2.2.1.Final
+ UTF-8
+ UTF-8
+
+
+ 17
+ 17
+ 3.11.0
+
+
+ 5.9.2
+ 7.11.2
+ 5.2.0
+ 1.17.6
+ 3.0.0
+ 3.0.5
+
+
+ 1.18.26
+
+
+ 2.16.6.Final
uber-jar
- quarkus-universe-bom
- io.quarkus
- 2.2.1.Final
- 2.22.1
- 1.15.3
+ 2.16.6.Final
+
+
- ${quarkus.platform.group-id}
- ${quarkus.platform.artifact-id}
+ io.quarkus
+ quarkus-bom
${quarkus.platform.version}
pom
import
+
+
dev.davivieira
domain
- 1.0-SNAPSHOT
+ ${project.version}
dev.davivieira
inventory-core-domain
- 1.0-SNAPSHOT
+ ${project.version}
dev.davivieira
status-sub-domain
- 1.0-SNAPSHOT
+ ${project.version}
dev.davivieira
application
- 1.0-SNAPSHOT
+ ${project.version}
dev.davivieira
framework
- 1.0-SNAPSHOT
+ ${project.version}
+
org.projectlombok
@@ -87,74 +103,102 @@
test
+
-
-
- io.quarkus
- quarkus-maven-plugin
- ${quarkus-plugin.version}
-
-
-
- generate-code
- generate-code-tests
-
-
-
-
-
- org.jboss.jandex
- jandex-maven-plugin
- 1.0.7
-
-
- make-index
-
- jandex
-
-
- compile
-
-
-
-
-
-
- ${project.build.directory}/generated-classes/foo
-
-
- ${project.build.directory}/generated-classes/bar
-
-
-
-
-
- maven-surefire-plugin
- 3.0.0-M5
- true
-
-
- org.jboss.logmanager.LogManager
-
-
-
-
- maven-compiler-plugin
- 3.8.1
-
- ${maven.compiler.source}
- ${maven.compiler.target}
-
-
- org.projectlombok
- lombok
- 1.18.20
-
-
-
-
-
+
+
+
+ io.quarkus
+ quarkus-maven-plugin
+ ${quarkus-plugin.version}
+
+
+ io.smallrye
+ jandex-maven-plugin
+ ${jandex-plugin.version}
+
+
+ maven-surefire-plugin
+ ${surefire-plugin.version}
+
+
+ maven-compiler-plugin
+ ${maven.compiler-plugin.version}
+
+
+
+
+
+
+
+ io.quarkus
+ quarkus-maven-plugin
+
+
+
+ generate-code
+ generate-code-tests
+
+
+
+
+
+
+
+ io.smallrye
+ jandex-maven-plugin
+
+
+ make-index
+
+ jandex
+
+
+ compile
+
+
+
+
+
+
+ ${project.build.directory}/generated-classes/foo
+
+
+ ${project.build.directory}/generated-classes/bar
+
+
+
+
+
+
+
+ maven-surefire-plugin
+ true
+
+
+ org.jboss.logmanager.LogManager
+
+
+
+
+
+ maven-compiler-plugin
+
+ ${maven.compiler.source}
+ ${maven.compiler.target}
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+
+
+
+
+
+
native
@@ -180,8 +224,10 @@
- ${project.basedir}/bootstrap/target/bootstrap-1.0-SNAPSHOT-runner
+ ${project.basedir}/bootstrap/target/bootstrap-${project.version}-runner
org.jboss.logmanager.LogManager
+
${maven.home}
@@ -192,4 +238,5 @@
+