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 @@ +