From 3ff3a0cde4cc66388e00567afeb4139c6b76a1c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Stra=C3=9Fer?= Date: Mon, 19 Apr 2021 20:03:32 +0200 Subject: [PATCH] format all files --- .../.mvn/wrapper/MavenWrapperDownloader.java | 167 +++++++++--------- adapter/addressvalidation/mvnw | 8 +- adapter/addressvalidation/pom.xml | 3 +- .../addressvalidation/AddressValidator.java | 30 ++-- .../.mvn/wrapper/MavenWrapperDownloader.java | 167 +++++++++--------- adapter/persistence/mvnw | 8 +- .../hexagonal/persistence/CustomerDao.java | 3 +- .../persistence/config/MongoConfig.java | 8 +- .../repository/CustomerRepository.java | 3 +- .../persistence/CustomerDaoTest.java | 30 ++-- .../PersistenceTestConfiguration.java | 6 +- .../.mvn/wrapper/MavenWrapperDownloader.java | 167 +++++++++--------- adapter/web/mvnw | 8 +- .../hexagonal/web/AddAddressController.java | 7 +- .../hexagonal/web/CustomerCRUDController.java | 2 + .../web/RegisterCustomerController.java | 16 +- .../peter/hexagonal/web/config/WebConfig.java | 4 +- .../web/dto/request/AddAddressRequest.java | 10 +- .../dto/request/RegisterCustomerRequest.java | 6 +- .../web/dto/response/AddressTypeResponse.java | 12 +- .../web/dto/response/CustomerResponse.java | 1 - .../hexagonal/web/errors/ErrorHandling.java | 52 +++--- .../web/mapper/AddAddressWebMapper.java | 2 +- .../web/mapper/CustomerWebMapper.java | 1 - .../web/mapper/RegisterCustomerWebMapper.java | 4 +- .../web/RegisterCustomerControllerTest.java | 3 +- .../hexagonal/web/WebTestConfiguration.java | 6 +- .../.mvn/wrapper/MavenWrapperDownloader.java | 167 +++++++++--------- application/mvnw | 8 +- .../AddressTypeDoesNotExistsExc.java | 6 +- .../customer/exception/BusinessException.java | 6 +- .../DefaultAdressRequiredToActivateExc.java | 6 +- .../customer/exception/TooYoungExc.java | 6 +- .../customer/mapper/AddAddressMapper.java | 2 +- .../customer/port/in/AddAddressUseCase.java | 3 +- .../port/in/RegisterCustomerUseCase.java | 2 +- .../port/in/commands/AddAddressCommand.java | 14 +- .../in/commands/RegisterCustomerCommand.java | 7 +- .../port/out/AddressValidatorPort.java | 2 +- .../customer/port/out/LoadCustomerPort.java | 2 +- .../customer/port/out/SaveCustomerPort.java | 2 +- .../customer/service/AddressService.java | 38 ++-- .../service/RegisterCustomerService.java | 21 +-- .../customer/domain/CustomerTest.java | 7 +- .../customer/service/AddressServiceTest.java | 2 - .../service/RegisterCustomerServiceTest.java | 70 ++++---- common/pom.xml | 3 +- .../peter/hexagonal/common/Adapter.java | 22 +++ .../{validators => }/ReadStringResources.java | 2 +- .../peter/hexagonal/common/UseCase.java | 22 +++ .../.mvn/wrapper/MavenWrapperDownloader.java | 167 +++++++++--------- config/mvnw | 8 +- config/pom.xml | 2 + .../peter/hexagonal/HexagonalApplication.java | 6 +- .../hexagonal/config/ArchitectureTest.java | 3 + .../config/HexagonalApplicationTests.java | 6 +- pom.xml | 8 + 57 files changed, 704 insertions(+), 650 deletions(-) create mode 100644 common/src/main/java/de/strasser/peter/hexagonal/common/Adapter.java rename common/src/main/java/de/strasser/peter/hexagonal/common/{validators => }/ReadStringResources.java (86%) create mode 100644 common/src/main/java/de/strasser/peter/hexagonal/common/UseCase.java create mode 100644 config/src/test/java/de/strasser/peter/hexagonal/config/ArchitectureTest.java diff --git a/adapter/addressvalidation/.mvn/wrapper/MavenWrapperDownloader.java b/adapter/addressvalidation/.mvn/wrapper/MavenWrapperDownloader.java index a45eb6b..65e6aae 100644 --- a/adapter/addressvalidation/.mvn/wrapper/MavenWrapperDownloader.java +++ b/adapter/addressvalidation/.mvn/wrapper/MavenWrapperDownloader.java @@ -21,98 +21,99 @@ import java.util.Properties; public class MavenWrapperDownloader { - private static final String WRAPPER_VERSION = "0.5.6"; - /** - * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. - */ - private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" - + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + private static final String WRAPPER_VERSION = "0.5.6"; + /** Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. */ + private static final String DEFAULT_DOWNLOAD_URL = + "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + + "/maven-wrapper-" + + WRAPPER_VERSION + + ".jar"; - /** - * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to - * use instead of the default one. - */ - private static final String MAVEN_WRAPPER_PROPERTIES_PATH = - ".mvn/wrapper/maven-wrapper.properties"; + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to use + * instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; - /** - * Path where the maven-wrapper.jar will be saved to. - */ - private static final String MAVEN_WRAPPER_JAR_PATH = - ".mvn/wrapper/maven-wrapper.jar"; + /** Path where the maven-wrapper.jar will be saved to. */ + private static final String MAVEN_WRAPPER_JAR_PATH = ".mvn/wrapper/maven-wrapper.jar"; - /** - * Name of the property which should be used to override the default download url for the wrapper. - */ - private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; - public static void main(String args[]) { - System.out.println("- Downloader started"); - File baseDirectory = new File(args[0]); - System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); - // If the maven-wrapper.properties exists, read it and check if it contains a custom - // wrapperUrl parameter. - File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); - String url = DEFAULT_DOWNLOAD_URL; - if (mavenWrapperPropertyFile.exists()) { - FileInputStream mavenWrapperPropertyFileInputStream = null; - try { - mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); - Properties mavenWrapperProperties = new Properties(); - mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); - url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); - } catch (IOException e) { - System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); - } finally { - try { - if (mavenWrapperPropertyFileInputStream != null) { - mavenWrapperPropertyFileInputStream.close(); - } - } catch (IOException e) { - // Ignore ... - } - } - } - System.out.println("- Downloading from: " + url); - - File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); - if (!outputFile.getParentFile().exists()) { - if (!outputFile.getParentFile().mkdirs()) { - System.out.println( - "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); - } - } - System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if (mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { try { - downloadFileFromURL(url, outputFile); - System.out.println("Done"); - System.exit(0); - } catch (Throwable e) { - System.out.println("- Error downloading"); - e.printStackTrace(); - System.exit(1); + if (mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... } + } } + System.out.println("- Downloading from: " + url); - private static void downloadFileFromURL(String urlString, File destination) throws Exception { - if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { - String username = System.getenv("MVNW_USERNAME"); - char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); - Authenticator.setDefault(new Authenticator() { - @Override - protected PasswordAuthentication getPasswordAuthentication() { - return new PasswordAuthentication(username, password); - } - }); - } - URL website = new URL(urlString); - ReadableByteChannel rbc; - rbc = Channels.newChannel(website.openStream()); - FileOutputStream fos = new FileOutputStream(destination); - fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); - fos.close(); - rbc.close(); + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if (!outputFile.getParentFile().exists()) { + if (!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + + outputFile.getParentFile().getAbsolutePath() + + "'"); + } } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault( + new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } } diff --git a/adapter/addressvalidation/mvnw b/adapter/addressvalidation/mvnw index 3c8a553..8ae6456 100644 --- a/adapter/addressvalidation/mvnw +++ b/adapter/addressvalidation/mvnw @@ -316,7 +316,7 @@ export MAVEN_CMD_LINE_ARGS WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain exec "$JAVACMD" \ - $MAVEN_OPTS \ - -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ - ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" +$MAVEN_OPTS \ +-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ +"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ +${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/adapter/addressvalidation/pom.xml b/adapter/addressvalidation/pom.xml index 86ea71a..41fd7d8 100644 --- a/adapter/addressvalidation/pom.xml +++ b/adapter/addressvalidation/pom.xml @@ -1,5 +1,6 @@ - 4.0.0 diff --git a/adapter/addressvalidation/src/main/java/de/strasser/peter/hexagonal/addressvalidation/AddressValidator.java b/adapter/addressvalidation/src/main/java/de/strasser/peter/hexagonal/addressvalidation/AddressValidator.java index 06f4743..f307887 100644 --- a/adapter/addressvalidation/src/main/java/de/strasser/peter/hexagonal/addressvalidation/AddressValidator.java +++ b/adapter/addressvalidation/src/main/java/de/strasser/peter/hexagonal/addressvalidation/AddressValidator.java @@ -3,25 +3,25 @@ package de.strasser.peter.hexagonal.addressvalidation; import de.strasser.peter.hexagonal.application.customer.domain.Address; import de.strasser.peter.hexagonal.application.customer.port.out.AddressValidatorPort; import de.strasser.peter.hexagonal.application.customer.port.out.commands.ValidateAddressCommand; +import de.strasser.peter.hexagonal.common.Adapter; import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; @Slf4j -@Component +@Adapter class AddressValidator implements AddressValidatorPort { - @Override - public Address validate(ValidateAddressCommand validateAddressCommand) throws InvalidAddressExc { - // This could be some call to a 3rd party to validate this address. - if (validateAddressCommand.getStreet().equalsIgnoreCase("parkring")) { - log.info("Address is made up."); - throw new InvalidAddressExc(validateAddressCommand); - } - - return new Address( - validateAddressCommand.getStreet(), - validateAddressCommand.getHouseNumber(), - validateAddressCommand.getZipCode(), - validateAddressCommand.getCountry()); + @Override + public Address validate(ValidateAddressCommand validateAddressCommand) throws InvalidAddressExc { + // This could be some call to a 3rd party to validate this address. + if (validateAddressCommand.getStreet().equalsIgnoreCase("parkring")) { + log.info("Address is made up."); + throw new InvalidAddressExc(validateAddressCommand); } + + return new Address( + validateAddressCommand.getStreet(), + validateAddressCommand.getHouseNumber(), + validateAddressCommand.getZipCode(), + validateAddressCommand.getCountry()); + } } diff --git a/adapter/persistence/.mvn/wrapper/MavenWrapperDownloader.java b/adapter/persistence/.mvn/wrapper/MavenWrapperDownloader.java index a45eb6b..65e6aae 100644 --- a/adapter/persistence/.mvn/wrapper/MavenWrapperDownloader.java +++ b/adapter/persistence/.mvn/wrapper/MavenWrapperDownloader.java @@ -21,98 +21,99 @@ import java.util.Properties; public class MavenWrapperDownloader { - private static final String WRAPPER_VERSION = "0.5.6"; - /** - * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. - */ - private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" - + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + private static final String WRAPPER_VERSION = "0.5.6"; + /** Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. */ + private static final String DEFAULT_DOWNLOAD_URL = + "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + + "/maven-wrapper-" + + WRAPPER_VERSION + + ".jar"; - /** - * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to - * use instead of the default one. - */ - private static final String MAVEN_WRAPPER_PROPERTIES_PATH = - ".mvn/wrapper/maven-wrapper.properties"; + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to use + * instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; - /** - * Path where the maven-wrapper.jar will be saved to. - */ - private static final String MAVEN_WRAPPER_JAR_PATH = - ".mvn/wrapper/maven-wrapper.jar"; + /** Path where the maven-wrapper.jar will be saved to. */ + private static final String MAVEN_WRAPPER_JAR_PATH = ".mvn/wrapper/maven-wrapper.jar"; - /** - * Name of the property which should be used to override the default download url for the wrapper. - */ - private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; - public static void main(String args[]) { - System.out.println("- Downloader started"); - File baseDirectory = new File(args[0]); - System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); - // If the maven-wrapper.properties exists, read it and check if it contains a custom - // wrapperUrl parameter. - File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); - String url = DEFAULT_DOWNLOAD_URL; - if (mavenWrapperPropertyFile.exists()) { - FileInputStream mavenWrapperPropertyFileInputStream = null; - try { - mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); - Properties mavenWrapperProperties = new Properties(); - mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); - url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); - } catch (IOException e) { - System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); - } finally { - try { - if (mavenWrapperPropertyFileInputStream != null) { - mavenWrapperPropertyFileInputStream.close(); - } - } catch (IOException e) { - // Ignore ... - } - } - } - System.out.println("- Downloading from: " + url); - - File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); - if (!outputFile.getParentFile().exists()) { - if (!outputFile.getParentFile().mkdirs()) { - System.out.println( - "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); - } - } - System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if (mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { try { - downloadFileFromURL(url, outputFile); - System.out.println("Done"); - System.exit(0); - } catch (Throwable e) { - System.out.println("- Error downloading"); - e.printStackTrace(); - System.exit(1); + if (mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... } + } } + System.out.println("- Downloading from: " + url); - private static void downloadFileFromURL(String urlString, File destination) throws Exception { - if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { - String username = System.getenv("MVNW_USERNAME"); - char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); - Authenticator.setDefault(new Authenticator() { - @Override - protected PasswordAuthentication getPasswordAuthentication() { - return new PasswordAuthentication(username, password); - } - }); - } - URL website = new URL(urlString); - ReadableByteChannel rbc; - rbc = Channels.newChannel(website.openStream()); - FileOutputStream fos = new FileOutputStream(destination); - fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); - fos.close(); - rbc.close(); + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if (!outputFile.getParentFile().exists()) { + if (!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + + outputFile.getParentFile().getAbsolutePath() + + "'"); + } } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault( + new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } } diff --git a/adapter/persistence/mvnw b/adapter/persistence/mvnw index 3c8a553..8ae6456 100644 --- a/adapter/persistence/mvnw +++ b/adapter/persistence/mvnw @@ -316,7 +316,7 @@ export MAVEN_CMD_LINE_ARGS WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain exec "$JAVACMD" \ - $MAVEN_OPTS \ - -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ - ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" +$MAVEN_OPTS \ +-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ +"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ +${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/adapter/persistence/src/main/java/de/strasser/peter/hexagonal/persistence/CustomerDao.java b/adapter/persistence/src/main/java/de/strasser/peter/hexagonal/persistence/CustomerDao.java index fe866bb..f49bcb2 100644 --- a/adapter/persistence/src/main/java/de/strasser/peter/hexagonal/persistence/CustomerDao.java +++ b/adapter/persistence/src/main/java/de/strasser/peter/hexagonal/persistence/CustomerDao.java @@ -18,8 +18,7 @@ import java.util.List; @Slf4j @Repository @RequiredArgsConstructor -public class CustomerDao - implements SaveCustomerPort, LoadCustomerPort, QueryAllCustomersCRUD { +public class CustomerDao implements SaveCustomerPort, LoadCustomerPort, QueryAllCustomersCRUD { private final CustomerRepository customerRepository; private final CustomerMapper customerMapper; diff --git a/adapter/persistence/src/main/java/de/strasser/peter/hexagonal/persistence/config/MongoConfig.java b/adapter/persistence/src/main/java/de/strasser/peter/hexagonal/persistence/config/MongoConfig.java index 7cd4d58..cf850a1 100644 --- a/adapter/persistence/src/main/java/de/strasser/peter/hexagonal/persistence/config/MongoConfig.java +++ b/adapter/persistence/src/main/java/de/strasser/peter/hexagonal/persistence/config/MongoConfig.java @@ -8,8 +8,8 @@ import org.springframework.context.annotation.Configuration; @Configuration public class MongoConfig { - @Bean - public MongoClient mongoClient() { - return MongoClients.create("mongodb://admin:changeme@localhost:27017"); - } + @Bean + public MongoClient mongoClient() { + return MongoClients.create("mongodb://admin:changeme@localhost:27017"); + } } diff --git a/adapter/persistence/src/main/java/de/strasser/peter/hexagonal/persistence/repository/CustomerRepository.java b/adapter/persistence/src/main/java/de/strasser/peter/hexagonal/persistence/repository/CustomerRepository.java index 7cca195..19d1267 100644 --- a/adapter/persistence/src/main/java/de/strasser/peter/hexagonal/persistence/repository/CustomerRepository.java +++ b/adapter/persistence/src/main/java/de/strasser/peter/hexagonal/persistence/repository/CustomerRepository.java @@ -7,5 +7,4 @@ import org.springframework.stereotype.Repository; import java.math.BigInteger; @Repository -public interface CustomerRepository extends MongoRepository { -} +public interface CustomerRepository extends MongoRepository {} diff --git a/adapter/persistence/src/test/java/de/strasser/peter/hexagonal/persistence/CustomerDaoTest.java b/adapter/persistence/src/test/java/de/strasser/peter/hexagonal/persistence/CustomerDaoTest.java index f929489..0408829 100644 --- a/adapter/persistence/src/test/java/de/strasser/peter/hexagonal/persistence/CustomerDaoTest.java +++ b/adapter/persistence/src/test/java/de/strasser/peter/hexagonal/persistence/CustomerDaoTest.java @@ -1,7 +1,6 @@ package de.strasser.peter.hexagonal.persistence; import de.strasser.peter.hexagonal.application.customer.domain.Customer; -import de.strasser.peter.hexagonal.persistence.mapper.CustomerMapper; import de.strasser.peter.hexagonal.persistence.mapper.CustomerMapperImpl; import de.strasser.peter.hexagonal.persistence.repository.CustomerRepository; import org.junit.jupiter.api.AfterEach; @@ -18,24 +17,21 @@ import static org.junit.jupiter.api.Assertions.assertEquals; @DataMongoTest @Import({CustomerDao.class, CustomerMapperImpl.class}) class CustomerDaoTest { - @Autowired - private CustomerDao customerDao; + @Autowired private CustomerDao customerDao; - @Autowired - private CustomerRepository customerRepository; + @Autowired private CustomerRepository customerRepository; - @AfterEach - void cleanUp() { - this.customerRepository.deleteAll(); - } + @AfterEach + void cleanUp() { + this.customerRepository.deleteAll(); + } - @Test - @Timeout(5) - void should_ContainOneCustomer_When_CallingInsertMethod() { - var customer = Customer.newCustomer("hans", "passwsord", LocalDate.of(1980, 1, 1)); - this.customerDao.upsert(customer); - - assertEquals(this.customerRepository.findAll().size(), 1); - } + @Test + @Timeout(5) + void should_ContainOneCustomer_When_CallingInsertMethod() { + var customer = Customer.newCustomer("hans", "passwsord", LocalDate.of(1980, 1, 1)); + this.customerDao.upsert(customer); + assertEquals(this.customerRepository.findAll().size(), 1); + } } diff --git a/adapter/persistence/src/test/java/de/strasser/peter/hexagonal/persistence/PersistenceTestConfiguration.java b/adapter/persistence/src/test/java/de/strasser/peter/hexagonal/persistence/PersistenceTestConfiguration.java index 5358de0..92b4d53 100644 --- a/adapter/persistence/src/test/java/de/strasser/peter/hexagonal/persistence/PersistenceTestConfiguration.java +++ b/adapter/persistence/src/test/java/de/strasser/peter/hexagonal/persistence/PersistenceTestConfiguration.java @@ -1,12 +1,8 @@ package de.strasser.peter.hexagonal.persistence; - import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.SpringBootApplication; @Slf4j @SpringBootApplication -public class PersistenceTestConfiguration { - - -} +public class PersistenceTestConfiguration {} diff --git a/adapter/web/.mvn/wrapper/MavenWrapperDownloader.java b/adapter/web/.mvn/wrapper/MavenWrapperDownloader.java index a45eb6b..65e6aae 100644 --- a/adapter/web/.mvn/wrapper/MavenWrapperDownloader.java +++ b/adapter/web/.mvn/wrapper/MavenWrapperDownloader.java @@ -21,98 +21,99 @@ import java.util.Properties; public class MavenWrapperDownloader { - private static final String WRAPPER_VERSION = "0.5.6"; - /** - * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. - */ - private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" - + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + private static final String WRAPPER_VERSION = "0.5.6"; + /** Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. */ + private static final String DEFAULT_DOWNLOAD_URL = + "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + + "/maven-wrapper-" + + WRAPPER_VERSION + + ".jar"; - /** - * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to - * use instead of the default one. - */ - private static final String MAVEN_WRAPPER_PROPERTIES_PATH = - ".mvn/wrapper/maven-wrapper.properties"; + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to use + * instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; - /** - * Path where the maven-wrapper.jar will be saved to. - */ - private static final String MAVEN_WRAPPER_JAR_PATH = - ".mvn/wrapper/maven-wrapper.jar"; + /** Path where the maven-wrapper.jar will be saved to. */ + private static final String MAVEN_WRAPPER_JAR_PATH = ".mvn/wrapper/maven-wrapper.jar"; - /** - * Name of the property which should be used to override the default download url for the wrapper. - */ - private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; - public static void main(String args[]) { - System.out.println("- Downloader started"); - File baseDirectory = new File(args[0]); - System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); - // If the maven-wrapper.properties exists, read it and check if it contains a custom - // wrapperUrl parameter. - File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); - String url = DEFAULT_DOWNLOAD_URL; - if (mavenWrapperPropertyFile.exists()) { - FileInputStream mavenWrapperPropertyFileInputStream = null; - try { - mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); - Properties mavenWrapperProperties = new Properties(); - mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); - url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); - } catch (IOException e) { - System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); - } finally { - try { - if (mavenWrapperPropertyFileInputStream != null) { - mavenWrapperPropertyFileInputStream.close(); - } - } catch (IOException e) { - // Ignore ... - } - } - } - System.out.println("- Downloading from: " + url); - - File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); - if (!outputFile.getParentFile().exists()) { - if (!outputFile.getParentFile().mkdirs()) { - System.out.println( - "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); - } - } - System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if (mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { try { - downloadFileFromURL(url, outputFile); - System.out.println("Done"); - System.exit(0); - } catch (Throwable e) { - System.out.println("- Error downloading"); - e.printStackTrace(); - System.exit(1); + if (mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... } + } } + System.out.println("- Downloading from: " + url); - private static void downloadFileFromURL(String urlString, File destination) throws Exception { - if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { - String username = System.getenv("MVNW_USERNAME"); - char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); - Authenticator.setDefault(new Authenticator() { - @Override - protected PasswordAuthentication getPasswordAuthentication() { - return new PasswordAuthentication(username, password); - } - }); - } - URL website = new URL(urlString); - ReadableByteChannel rbc; - rbc = Channels.newChannel(website.openStream()); - FileOutputStream fos = new FileOutputStream(destination); - fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); - fos.close(); - rbc.close(); + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if (!outputFile.getParentFile().exists()) { + if (!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + + outputFile.getParentFile().getAbsolutePath() + + "'"); + } } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault( + new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } } diff --git a/adapter/web/mvnw b/adapter/web/mvnw index 3c8a553..8ae6456 100644 --- a/adapter/web/mvnw +++ b/adapter/web/mvnw @@ -316,7 +316,7 @@ export MAVEN_CMD_LINE_ARGS WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain exec "$JAVACMD" \ - $MAVEN_OPTS \ - -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ - ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" +$MAVEN_OPTS \ +-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ +"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ +${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/AddAddressController.java b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/AddAddressController.java index 891d1cf..49859cf 100644 --- a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/AddAddressController.java +++ b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/AddAddressController.java @@ -2,14 +2,19 @@ package de.strasser.peter.hexagonal.web; import de.strasser.peter.hexagonal.application.customer.port.in.AddAddressUseCase; import de.strasser.peter.hexagonal.application.customer.port.in.commands.AddAddressCommand; +import de.strasser.peter.hexagonal.common.Adapter; import de.strasser.peter.hexagonal.web.dto.request.AddAddressRequest; import de.strasser.peter.hexagonal.web.mapper.AddAddressWebMapper; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; import java.math.BigInteger; import java.util.List; +@Adapter @RestController @RequiredArgsConstructor public class AddAddressController { diff --git a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/CustomerCRUDController.java b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/CustomerCRUDController.java index c55ca0a..584de73 100644 --- a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/CustomerCRUDController.java +++ b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/CustomerCRUDController.java @@ -1,6 +1,7 @@ package de.strasser.peter.hexagonal.web; import de.strasser.peter.hexagonal.application.customer.port.in.QueryAllCustomersCRUD; +import de.strasser.peter.hexagonal.common.Adapter; import de.strasser.peter.hexagonal.web.dto.response.CustomerResponse; import de.strasser.peter.hexagonal.web.mapper.CustomerWebMapper; import lombok.RequiredArgsConstructor; @@ -9,6 +10,7 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; +@Adapter @RestController @RequiredArgsConstructor public class CustomerCRUDController { diff --git a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/RegisterCustomerController.java b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/RegisterCustomerController.java index 6f73890..b522aad 100644 --- a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/RegisterCustomerController.java +++ b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/RegisterCustomerController.java @@ -1,21 +1,23 @@ package de.strasser.peter.hexagonal.web; import de.strasser.peter.hexagonal.application.customer.port.in.RegisterCustomerUseCase; -import de.strasser.peter.hexagonal.web.mapper.RegisterCustomerWebMapper; +import de.strasser.peter.hexagonal.common.Adapter; import de.strasser.peter.hexagonal.web.dto.request.RegisterCustomerRequest; +import de.strasser.peter.hexagonal.web.mapper.RegisterCustomerWebMapper; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +@Adapter @RestController @AllArgsConstructor public class RegisterCustomerController { - private final RegisterCustomerUseCase registerCustomerUseCase; - private final RegisterCustomerWebMapper registerCustomerMapper; + private final RegisterCustomerUseCase registerCustomerUseCase; + private final RegisterCustomerWebMapper registerCustomerMapper; - @PostMapping("/v1/register") - public void registerCustomer(@RequestBody RegisterCustomerRequest registerCustomerRequest) { - registerCustomerUseCase.register(registerCustomerMapper.toCmd(registerCustomerRequest)); - } + @PostMapping("/v1/register") + public void registerCustomer(@RequestBody RegisterCustomerRequest registerCustomerRequest) { + registerCustomerUseCase.register(registerCustomerMapper.toCmd(registerCustomerRequest)); + } } diff --git a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/config/WebConfig.java b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/config/WebConfig.java index 0dd9b19..b42e4ea 100644 --- a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/config/WebConfig.java +++ b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/config/WebConfig.java @@ -3,6 +3,4 @@ package de.strasser.peter.hexagonal.web.config; import org.springframework.context.annotation.Configuration; @Configuration -public class WebConfig { - -} +public class WebConfig {} diff --git a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/request/AddAddressRequest.java b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/request/AddAddressRequest.java index c9db45a..d416689 100644 --- a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/request/AddAddressRequest.java +++ b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/request/AddAddressRequest.java @@ -8,9 +8,9 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor(force = true) public class AddAddressRequest { - String type; - String street; - Integer houseNumber; - Integer zipCode; - String country; + String type; + String street; + Integer houseNumber; + Integer zipCode; + String country; } diff --git a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/request/RegisterCustomerRequest.java b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/request/RegisterCustomerRequest.java index ee76867..fa60053 100644 --- a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/request/RegisterCustomerRequest.java +++ b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/request/RegisterCustomerRequest.java @@ -10,7 +10,7 @@ import java.time.LocalDate; @AllArgsConstructor @NoArgsConstructor(force = true) public class RegisterCustomerRequest { - String name; - LocalDate birthDay; - String password; + String name; + LocalDate birthDay; + String password; } diff --git a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/response/AddressTypeResponse.java b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/response/AddressTypeResponse.java index f7c954a..58b5487 100644 --- a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/response/AddressTypeResponse.java +++ b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/response/AddressTypeResponse.java @@ -3,10 +3,10 @@ package de.strasser.peter.hexagonal.web.dto.response; import com.fasterxml.jackson.annotation.JsonProperty; public enum AddressTypeResponse { - @JsonProperty("default") - DEFAULT, - @JsonProperty("shipping") - SHIPPING, - @JsonProperty("billing") - BILLING; + @JsonProperty("default") + DEFAULT, + @JsonProperty("shipping") + SHIPPING, + @JsonProperty("billing") + BILLING; } diff --git a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/response/CustomerResponse.java b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/response/CustomerResponse.java index f437521..87de760 100644 --- a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/response/CustomerResponse.java +++ b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/dto/response/CustomerResponse.java @@ -1,6 +1,5 @@ package de.strasser.peter.hexagonal.web.dto.response; -import de.strasser.peter.hexagonal.application.customer.domain.Address; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/errors/ErrorHandling.java b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/errors/ErrorHandling.java index cae9ab9..c33a2f3 100644 --- a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/errors/ErrorHandling.java +++ b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/errors/ErrorHandling.java @@ -14,32 +14,36 @@ import java.time.LocalDateTime; @ControllerAdvice public class ErrorHandling { - @ExceptionHandler(ConstraintViolationException.class) - public ResponseEntity constrainViolationException(HttpServletRequest req, ConstraintViolationException exc) { - return ErrorResponse.createErrorResp(req, HttpStatus.BAD_REQUEST, exc); - } + @ExceptionHandler(ConstraintViolationException.class) + public ResponseEntity constrainViolationException( + HttpServletRequest req, ConstraintViolationException exc) { + return ErrorResponse.createErrorResp(req, HttpStatus.BAD_REQUEST, exc); + } - @ExceptionHandler(BusinessException.class) - public ResponseEntity constrainViolationException(HttpServletRequest req, BusinessException exc) { - return ErrorResponse.createErrorResp(req, HttpStatus.BAD_REQUEST, exc); - } + @ExceptionHandler(BusinessException.class) + public ResponseEntity constrainViolationException( + HttpServletRequest req, BusinessException exc) { + return ErrorResponse.createErrorResp(req, HttpStatus.BAD_REQUEST, exc); + } - @Value - public static class ErrorResponse { - String timestamp; - Integer status; - String error; - String message; - String path; + @Value + public static class ErrorResponse { + String timestamp; + Integer status; + String error; + String message; + String path; - public static ResponseEntity createErrorResp(HttpServletRequest req, HttpStatus code, Exception e) { - final ErrorResponse errResponse = new ErrorResponse( - LocalDateTime.now().toString(), - code.value(), - e.getClass().getSimpleName(), - e.getMessage(), - req.getRequestURI()); - return ResponseEntity.status(code).body(errResponse); - } + public static ResponseEntity createErrorResp( + HttpServletRequest req, HttpStatus code, Exception e) { + final ErrorResponse errResponse = + new ErrorResponse( + LocalDateTime.now().toString(), + code.value(), + e.getClass().getSimpleName(), + e.getMessage(), + req.getRequestURI()); + return ResponseEntity.status(code).body(errResponse); } + } } diff --git a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/mapper/AddAddressWebMapper.java b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/mapper/AddAddressWebMapper.java index 55e8492..36b6788 100644 --- a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/mapper/AddAddressWebMapper.java +++ b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/mapper/AddAddressWebMapper.java @@ -6,5 +6,5 @@ import org.mapstruct.Mapper; @Mapper public interface AddAddressWebMapper { - AddAddressCommand toCmd(AddAddressRequest addAddressRequest); + AddAddressCommand toCmd(AddAddressRequest addAddressRequest); } diff --git a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/mapper/CustomerWebMapper.java b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/mapper/CustomerWebMapper.java index 1568ad8..ff63998 100644 --- a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/mapper/CustomerWebMapper.java +++ b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/mapper/CustomerWebMapper.java @@ -11,5 +11,4 @@ public interface CustomerWebMapper { CustomerResponse toResponse(Customer customer); List toResponse(List customer); - } diff --git a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/mapper/RegisterCustomerWebMapper.java b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/mapper/RegisterCustomerWebMapper.java index 05f0106..3b935ab 100644 --- a/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/mapper/RegisterCustomerWebMapper.java +++ b/adapter/web/src/main/java/de/strasser/peter/hexagonal/web/mapper/RegisterCustomerWebMapper.java @@ -7,6 +7,6 @@ import org.mapstruct.Mapping; @Mapper public interface RegisterCustomerWebMapper { - @Mapping(source = "password", target = "clearPassword") - RegisterCustomerCommand toCmd(RegisterCustomerRequest registerCustomerRequest); + @Mapping(source = "password", target = "clearPassword") + RegisterCustomerCommand toCmd(RegisterCustomerRequest registerCustomerRequest); } diff --git a/adapter/web/src/test/java/de/strasser/peter/hexagonal/web/RegisterCustomerControllerTest.java b/adapter/web/src/test/java/de/strasser/peter/hexagonal/web/RegisterCustomerControllerTest.java index 8dc4f93..94b3beb 100644 --- a/adapter/web/src/test/java/de/strasser/peter/hexagonal/web/RegisterCustomerControllerTest.java +++ b/adapter/web/src/test/java/de/strasser/peter/hexagonal/web/RegisterCustomerControllerTest.java @@ -43,7 +43,8 @@ class RegisterCustomerControllerTest { @Test public void should_DenyRequest_When_SendingInvalidDateFormat() throws Exception { - final String body = ReadStringResources.readStringFromResource("invalid_date_register_customer.json"); + final String body = + ReadStringResources.readStringFromResource("invalid_date_register_customer.json"); mockMvc .perform(post("/v1/register").contentType(MediaType.APPLICATION_JSON).content(body)) diff --git a/adapter/web/src/test/java/de/strasser/peter/hexagonal/web/WebTestConfiguration.java b/adapter/web/src/test/java/de/strasser/peter/hexagonal/web/WebTestConfiguration.java index 33aca31..745b20e 100644 --- a/adapter/web/src/test/java/de/strasser/peter/hexagonal/web/WebTestConfiguration.java +++ b/adapter/web/src/test/java/de/strasser/peter/hexagonal/web/WebTestConfiguration.java @@ -1,12 +1,8 @@ package de.strasser.peter.hexagonal.web; - import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.SpringBootApplication; @Slf4j @SpringBootApplication -public class WebTestConfiguration { - - -} +public class WebTestConfiguration {} diff --git a/application/.mvn/wrapper/MavenWrapperDownloader.java b/application/.mvn/wrapper/MavenWrapperDownloader.java index a45eb6b..65e6aae 100644 --- a/application/.mvn/wrapper/MavenWrapperDownloader.java +++ b/application/.mvn/wrapper/MavenWrapperDownloader.java @@ -21,98 +21,99 @@ import java.util.Properties; public class MavenWrapperDownloader { - private static final String WRAPPER_VERSION = "0.5.6"; - /** - * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. - */ - private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" - + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + private static final String WRAPPER_VERSION = "0.5.6"; + /** Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. */ + private static final String DEFAULT_DOWNLOAD_URL = + "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + + "/maven-wrapper-" + + WRAPPER_VERSION + + ".jar"; - /** - * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to - * use instead of the default one. - */ - private static final String MAVEN_WRAPPER_PROPERTIES_PATH = - ".mvn/wrapper/maven-wrapper.properties"; + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to use + * instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; - /** - * Path where the maven-wrapper.jar will be saved to. - */ - private static final String MAVEN_WRAPPER_JAR_PATH = - ".mvn/wrapper/maven-wrapper.jar"; + /** Path where the maven-wrapper.jar will be saved to. */ + private static final String MAVEN_WRAPPER_JAR_PATH = ".mvn/wrapper/maven-wrapper.jar"; - /** - * Name of the property which should be used to override the default download url for the wrapper. - */ - private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; - public static void main(String args[]) { - System.out.println("- Downloader started"); - File baseDirectory = new File(args[0]); - System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); - // If the maven-wrapper.properties exists, read it and check if it contains a custom - // wrapperUrl parameter. - File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); - String url = DEFAULT_DOWNLOAD_URL; - if (mavenWrapperPropertyFile.exists()) { - FileInputStream mavenWrapperPropertyFileInputStream = null; - try { - mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); - Properties mavenWrapperProperties = new Properties(); - mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); - url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); - } catch (IOException e) { - System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); - } finally { - try { - if (mavenWrapperPropertyFileInputStream != null) { - mavenWrapperPropertyFileInputStream.close(); - } - } catch (IOException e) { - // Ignore ... - } - } - } - System.out.println("- Downloading from: " + url); - - File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); - if (!outputFile.getParentFile().exists()) { - if (!outputFile.getParentFile().mkdirs()) { - System.out.println( - "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); - } - } - System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if (mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { try { - downloadFileFromURL(url, outputFile); - System.out.println("Done"); - System.exit(0); - } catch (Throwable e) { - System.out.println("- Error downloading"); - e.printStackTrace(); - System.exit(1); + if (mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... } + } } + System.out.println("- Downloading from: " + url); - private static void downloadFileFromURL(String urlString, File destination) throws Exception { - if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { - String username = System.getenv("MVNW_USERNAME"); - char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); - Authenticator.setDefault(new Authenticator() { - @Override - protected PasswordAuthentication getPasswordAuthentication() { - return new PasswordAuthentication(username, password); - } - }); - } - URL website = new URL(urlString); - ReadableByteChannel rbc; - rbc = Channels.newChannel(website.openStream()); - FileOutputStream fos = new FileOutputStream(destination); - fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); - fos.close(); - rbc.close(); + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if (!outputFile.getParentFile().exists()) { + if (!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + + outputFile.getParentFile().getAbsolutePath() + + "'"); + } } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault( + new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } } diff --git a/application/mvnw b/application/mvnw index 3c8a553..8ae6456 100644 --- a/application/mvnw +++ b/application/mvnw @@ -316,7 +316,7 @@ export MAVEN_CMD_LINE_ARGS WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain exec "$JAVACMD" \ - $MAVEN_OPTS \ - -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ - ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" +$MAVEN_OPTS \ +-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ +"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ +${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/AddressTypeDoesNotExistsExc.java b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/AddressTypeDoesNotExistsExc.java index 619bf75..89edf99 100644 --- a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/AddressTypeDoesNotExistsExc.java +++ b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/AddressTypeDoesNotExistsExc.java @@ -1,7 +1,7 @@ package de.strasser.peter.hexagonal.application.customer.exception; public class AddressTypeDoesNotExistsExc extends BusinessException { - public AddressTypeDoesNotExistsExc(String type) { - super(String.format("Adress of type '%s' does not exist!", type)); - } + public AddressTypeDoesNotExistsExc(String type) { + super(String.format("Adress of type '%s' does not exist!", type)); + } } diff --git a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/BusinessException.java b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/BusinessException.java index 4ef2bd1..ff68b7d 100644 --- a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/BusinessException.java +++ b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/BusinessException.java @@ -1,7 +1,7 @@ package de.strasser.peter.hexagonal.application.customer.exception; public abstract class BusinessException extends IllegalStateException { - public BusinessException(String error) { - super(error); - } + public BusinessException(String error) { + super(error); + } } diff --git a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/DefaultAdressRequiredToActivateExc.java b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/DefaultAdressRequiredToActivateExc.java index 3261c61..61ce35c 100644 --- a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/DefaultAdressRequiredToActivateExc.java +++ b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/DefaultAdressRequiredToActivateExc.java @@ -2,7 +2,7 @@ package de.strasser.peter.hexagonal.application.customer.exception; public class DefaultAdressRequiredToActivateExc extends BusinessException { - public DefaultAdressRequiredToActivateExc() { - super("Customer needs to have at least a default adress to be able to be activated!"); - } + public DefaultAdressRequiredToActivateExc() { + super("Customer needs to have at least a default adress to be able to be activated!"); + } } diff --git a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/TooYoungExc.java b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/TooYoungExc.java index bca3d58..13fb051 100644 --- a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/TooYoungExc.java +++ b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/exception/TooYoungExc.java @@ -3,7 +3,7 @@ package de.strasser.peter.hexagonal.application.customer.exception; import java.text.MessageFormat; public class TooYoungExc extends BusinessException { - public TooYoungExc(int age) { - super(MessageFormat.format("Customer is too young. Expected: > 18 yrs, Actual: {0}", age)); - } + public TooYoungExc(int age) { + super(MessageFormat.format("Customer is too young. Expected: > 18 yrs, Actual: {0}", age)); + } } diff --git a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/mapper/AddAddressMapper.java b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/mapper/AddAddressMapper.java index 5fea88b..f45d7b3 100644 --- a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/mapper/AddAddressMapper.java +++ b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/mapper/AddAddressMapper.java @@ -6,5 +6,5 @@ import org.mapstruct.Mapper; @Mapper public interface AddAddressMapper { - ValidateAddressCommand toOutCmd(AddAddressCommand addAddressCommand); + ValidateAddressCommand toOutCmd(AddAddressCommand addAddressCommand); } diff --git a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/AddAddressUseCase.java b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/AddAddressUseCase.java index 04fc7f3..ae24f93 100644 --- a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/AddAddressUseCase.java +++ b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/AddAddressUseCase.java @@ -9,5 +9,6 @@ import java.math.BigInteger; import java.util.List; public interface AddAddressUseCase { - void addAddresses(@Min(0) BigInteger customerId, @Valid @NotEmpty List addresses); + void addAddresses( + @Min(0) BigInteger customerId, @Valid @NotEmpty List addresses); } diff --git a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/RegisterCustomerUseCase.java b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/RegisterCustomerUseCase.java index c2cb514..ea7df94 100644 --- a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/RegisterCustomerUseCase.java +++ b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/RegisterCustomerUseCase.java @@ -5,5 +5,5 @@ import de.strasser.peter.hexagonal.application.customer.port.in.commands.Registe import javax.validation.Valid; public interface RegisterCustomerUseCase { - void register(@Valid RegisterCustomerCommand registerCustomerCommand); + void register(@Valid RegisterCustomerCommand registerCustomerCommand); } diff --git a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/commands/AddAddressCommand.java b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/commands/AddAddressCommand.java index 9681111..38dffe4 100644 --- a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/commands/AddAddressCommand.java +++ b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/commands/AddAddressCommand.java @@ -11,10 +11,12 @@ import javax.validation.constraints.NotEmpty; @AllArgsConstructor @NoArgsConstructor(force = true) public class AddAddressCommand { - @NotEmpty String type; - @NotEmpty String street; - Integer houseNumber; - @Min(0) - Integer zipCode; - @NotEmpty String country; + @NotEmpty String type; + @NotEmpty String street; + Integer houseNumber; + + @Min(0) + Integer zipCode; + + @NotEmpty String country; } diff --git a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/commands/RegisterCustomerCommand.java b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/commands/RegisterCustomerCommand.java index 3f0fbde..26e2254 100644 --- a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/commands/RegisterCustomerCommand.java +++ b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/in/commands/RegisterCustomerCommand.java @@ -1,6 +1,5 @@ package de.strasser.peter.hexagonal.application.customer.port.in.commands; - import de.strasser.peter.hexagonal.application.customer.validator.SecurePassword; import lombok.AllArgsConstructor; import lombok.Data; @@ -14,7 +13,7 @@ import java.time.LocalDate; @AllArgsConstructor @NoArgsConstructor(force = true) public class RegisterCustomerCommand { - @NotEmpty String name; - @Past LocalDate birthDay; - @SecurePassword String clearPassword; + @NotEmpty String name; + @Past LocalDate birthDay; + @SecurePassword String clearPassword; } diff --git a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/out/AddressValidatorPort.java b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/out/AddressValidatorPort.java index b154034..4b25f7f 100644 --- a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/out/AddressValidatorPort.java +++ b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/out/AddressValidatorPort.java @@ -4,5 +4,5 @@ import de.strasser.peter.hexagonal.application.customer.domain.Address; import de.strasser.peter.hexagonal.application.customer.port.out.commands.ValidateAddressCommand; public interface AddressValidatorPort { - Address validate(ValidateAddressCommand validateAddressCommand); + Address validate(ValidateAddressCommand validateAddressCommand); } diff --git a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/out/LoadCustomerPort.java b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/out/LoadCustomerPort.java index 5520566..ab24b30 100644 --- a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/out/LoadCustomerPort.java +++ b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/out/LoadCustomerPort.java @@ -5,5 +5,5 @@ import de.strasser.peter.hexagonal.application.customer.domain.Customer; import java.math.BigInteger; public interface LoadCustomerPort { - Customer findById(BigInteger id); + Customer findById(BigInteger id); } diff --git a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/out/SaveCustomerPort.java b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/out/SaveCustomerPort.java index 5d18922..873e470 100644 --- a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/out/SaveCustomerPort.java +++ b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/port/out/SaveCustomerPort.java @@ -3,5 +3,5 @@ package de.strasser.peter.hexagonal.application.customer.port.out; import de.strasser.peter.hexagonal.application.customer.domain.Customer; public interface SaveCustomerPort { - void upsert(Customer customer); + void upsert(Customer customer); } diff --git a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/service/AddressService.java b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/service/AddressService.java index 7e4fc7f..c89c81f 100644 --- a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/service/AddressService.java +++ b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/service/AddressService.java @@ -22,28 +22,30 @@ import java.util.Map; @Service @RequiredArgsConstructor class AddressService implements AddAddressUseCase { - private final SaveCustomerPort saveCustomerAdapter; - private final AddressValidatorPort addressValidatorAdapter; - private final LoadCustomerPort loadCustomerAdapter; - private final AddAddressMapper addAddressMapper; + private final SaveCustomerPort saveCustomerAdapter; + private final AddressValidatorPort addressValidatorAdapter; + private final LoadCustomerPort loadCustomerAdapter; + private final AddAddressMapper addAddressMapper; - @Override - public void addAddresses(@Min(0) BigInteger customerId, @Valid @NotEmpty List addAddressCmds) { - final Customer customer = loadCustomerAdapter.findById(customerId); + @Override + public void addAddresses( + @Min(0) BigInteger customerId, @Valid @NotEmpty List addAddressCmds) { + final Customer customer = loadCustomerAdapter.findById(customerId); - final Map addresses = new HashMap<>(); - addAddressCmds.forEach(addAddressCommand -> validateAndAddToMap(addresses, addAddressCommand)); + final Map addresses = new HashMap<>(); + addAddressCmds.forEach(addAddressCommand -> validateAndAddToMap(addresses, addAddressCommand)); - customer.addAddresses(addresses); + customer.addAddresses(addresses); - saveCustomerAdapter.upsert(customer); - } + saveCustomerAdapter.upsert(customer); + } - private void validateAndAddToMap(Map addresses, AddAddressCommand addAddressCommand) { - final var addressType = Address.AddressType.fromString(addAddressCommand.getType()); - final var validateAddressCmd = addAddressMapper.toOutCmd(addAddressCommand); - final var validatedAddress = addressValidatorAdapter.validate(validateAddressCmd); + private void validateAndAddToMap( + Map addresses, AddAddressCommand addAddressCommand) { + final var addressType = Address.AddressType.fromString(addAddressCommand.getType()); + final var validateAddressCmd = addAddressMapper.toOutCmd(addAddressCommand); + final var validatedAddress = addressValidatorAdapter.validate(validateAddressCmd); - addresses.put(addressType, validatedAddress); - } + addresses.put(addressType, validatedAddress); + } } diff --git a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/service/RegisterCustomerService.java b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/service/RegisterCustomerService.java index 87e22c6..13ecc8c 100644 --- a/application/src/main/java/de/strasser/peter/hexagonal/application/customer/service/RegisterCustomerService.java +++ b/application/src/main/java/de/strasser/peter/hexagonal/application/customer/service/RegisterCustomerService.java @@ -16,17 +16,18 @@ import javax.validation.Valid; @Validated @RequiredArgsConstructor class RegisterCustomerService implements RegisterCustomerUseCase { - private final SaveCustomerPort saveUser; + private final SaveCustomerPort saveUser; - @Override - public void register(@Valid RegisterCustomerCommand registerCmd) { - var encryptedPw = this.superSecureHashingAlgorithm(registerCmd.getClearPassword()); - var newCustomer = Customer.newCustomer(registerCmd.getName(), encryptedPw, registerCmd.getBirthDay()); + @Override + public void register(@Valid RegisterCustomerCommand registerCmd) { + var encryptedPw = this.superSecureHashingAlgorithm(registerCmd.getClearPassword()); + var newCustomer = + Customer.newCustomer(registerCmd.getName(), encryptedPw, registerCmd.getBirthDay()); - saveUser.upsert(newCustomer); - } + saveUser.upsert(newCustomer); + } - private String superSecureHashingAlgorithm(String s) { - return new StringBuilder(s).reverse().toString(); - } + private String superSecureHashingAlgorithm(String s) { + return new StringBuilder(s).reverse().toString(); + } } diff --git a/application/src/test/java/de/strasser/peter/hexagonal/application/customer/domain/CustomerTest.java b/application/src/test/java/de/strasser/peter/hexagonal/application/customer/domain/CustomerTest.java index 5895292..c0ebd0d 100644 --- a/application/src/test/java/de/strasser/peter/hexagonal/application/customer/domain/CustomerTest.java +++ b/application/src/test/java/de/strasser/peter/hexagonal/application/customer/domain/CustomerTest.java @@ -2,9 +2,7 @@ package de.strasser.peter.hexagonal.application.customer.domain; import de.strasser.peter.hexagonal.application.customer.exception.TooOldToDeactivateExc; import de.strasser.peter.hexagonal.application.customer.exception.TooYoungExc; -import de.strasser.peter.hexagonal.application.customer.mapper.AddAddressMapper; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; import java.time.LocalDate; import java.util.Collections; @@ -13,7 +11,6 @@ import static org.junit.jupiter.api.Assertions.*; class CustomerTest { - @Test public void should_CreateNewCustomer() { final var customer = Customer.newCustomer("name", "pw", LocalDate.of(1980, 1, 1)); @@ -57,10 +54,8 @@ class CustomerTest { } @Test - public void should_ThrowTooOldErr_When_DeactivatingOldCustomer(){ + public void should_ThrowTooOldErr_When_DeactivatingOldCustomer() { final Customer customer = Customer.newCustomer("name", "pw", LocalDate.of(1950, 1, 1)); assertThrows(TooOldToDeactivateExc.class, customer::deactivate); } - - } diff --git a/application/src/test/java/de/strasser/peter/hexagonal/application/customer/service/AddressServiceTest.java b/application/src/test/java/de/strasser/peter/hexagonal/application/customer/service/AddressServiceTest.java index 2f41fba..7054059 100644 --- a/application/src/test/java/de/strasser/peter/hexagonal/application/customer/service/AddressServiceTest.java +++ b/application/src/test/java/de/strasser/peter/hexagonal/application/customer/service/AddressServiceTest.java @@ -2,7 +2,6 @@ package de.strasser.peter.hexagonal.application.customer.service; import de.strasser.peter.hexagonal.application.customer.domain.Address; import de.strasser.peter.hexagonal.application.customer.domain.Customer; -import de.strasser.peter.hexagonal.application.customer.mapper.AddAddressMapper; import de.strasser.peter.hexagonal.application.customer.port.in.commands.AddAddressCommand; import de.strasser.peter.hexagonal.application.customer.port.out.AddressValidatorPort; import de.strasser.peter.hexagonal.application.customer.port.out.LoadCustomerPort; @@ -12,7 +11,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.boot.test.mock.mockito.SpyBean; import java.math.BigInteger; import java.time.LocalDate; diff --git a/application/src/test/java/de/strasser/peter/hexagonal/application/customer/service/RegisterCustomerServiceTest.java b/application/src/test/java/de/strasser/peter/hexagonal/application/customer/service/RegisterCustomerServiceTest.java index 4ee26a8..073ef02 100644 --- a/application/src/test/java/de/strasser/peter/hexagonal/application/customer/service/RegisterCustomerServiceTest.java +++ b/application/src/test/java/de/strasser/peter/hexagonal/application/customer/service/RegisterCustomerServiceTest.java @@ -1,6 +1,5 @@ package de.strasser.peter.hexagonal.application.customer.service; -import de.strasser.peter.hexagonal.application.customer.mapper.AddAddressMapper; import de.strasser.peter.hexagonal.application.customer.port.in.commands.RegisterCustomerCommand; import de.strasser.peter.hexagonal.application.customer.port.out.AddressValidatorPort; import de.strasser.peter.hexagonal.application.customer.port.out.LoadCustomerPort; @@ -21,48 +20,47 @@ import static org.mockito.BDDMockito.willDoNothing; @SpringBootTest class RegisterCustomerServiceTest { - @Autowired - private RegisterCustomerService sut; + @Autowired private RegisterCustomerService sut; - @MockBean - private SaveCustomerPort saveCustomerAdapterMock; - @MockBean - private AddressValidatorPort addressValidatorAdapterMock; - @MockBean - private LoadCustomerPort loadCustomerAdapterMock; + @MockBean private SaveCustomerPort saveCustomerAdapterMock; + @MockBean private AddressValidatorPort addressValidatorAdapterMock; + @MockBean private LoadCustomerPort loadCustomerAdapterMock; + @BeforeEach + public void setUp() { + willDoNothing().given(saveCustomerAdapterMock).upsert(any()); + } - @BeforeEach - public void setUp() { - willDoNothing().given(saveCustomerAdapterMock).upsert(any()); - } + @Test + public void should_ThrowInvalidBirthDate_When_PassingDateInFuture() { + RegisterCustomerCommand registerCustomerCommand = + new RegisterCustomerCommand("Hans", LocalDate.now().plusDays(1), "secretPassword"); - @Test - public void should_ThrowInvalidBirthDate_When_PassingDateInFuture() { - RegisterCustomerCommand registerCustomerCommand = - new RegisterCustomerCommand("Hans", LocalDate.now().plusDays(1), "secretPassword"); - - assertThrows(ConstraintViolationException.class, () -> { - sut.register(registerCustomerCommand); + assertThrows( + ConstraintViolationException.class, + () -> { + sut.register(registerCustomerCommand); }); - } + } - @Test - public void should_ThrowInvalidPassword_When_PassingInsecurePassword() { - LocalDate birthday = LocalDate.of(1980, 1, 1); - RegisterCustomerCommand registerCustomerCommand = - new RegisterCustomerCommand("Hans", birthday, "secretPassword"); + @Test + public void should_ThrowInvalidPassword_When_PassingInsecurePassword() { + LocalDate birthday = LocalDate.of(1980, 1, 1); + RegisterCustomerCommand registerCustomerCommand = + new RegisterCustomerCommand("Hans", birthday, "secretPassword"); - assertThrows(ConstraintViolationException.class, () -> { - sut.register(registerCustomerCommand); + assertThrows( + ConstraintViolationException.class, + () -> { + sut.register(registerCustomerCommand); }); - } + } - @Test - public void should_SaveUser() { - LocalDate birthday = LocalDate.of(1980, 1, 1); - RegisterCustomerCommand registerCustomerCommand = - new RegisterCustomerCommand("Hans", birthday, "Ha012!321+dw"); - sut.register(registerCustomerCommand); - } + @Test + public void should_SaveUser() { + LocalDate birthday = LocalDate.of(1980, 1, 1); + RegisterCustomerCommand registerCustomerCommand = + new RegisterCustomerCommand("Hans", birthday, "Ha012!321+dw"); + sut.register(registerCustomerCommand); + } } diff --git a/common/pom.xml b/common/pom.xml index 1550e5b..b7cc709 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -1,5 +1,6 @@ - 4.0.0 diff --git a/common/src/main/java/de/strasser/peter/hexagonal/common/Adapter.java b/common/src/main/java/de/strasser/peter/hexagonal/common/Adapter.java new file mode 100644 index 0000000..465f85b --- /dev/null +++ b/common/src/main/java/de/strasser/peter/hexagonal/common/Adapter.java @@ -0,0 +1,22 @@ +package de.strasser.peter.hexagonal.common; + +import org.springframework.core.annotation.AliasFor; +import org.springframework.stereotype.Component; + +import java.lang.annotation.*; + +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Component +public @interface Adapter { + + /** + * The value may indicate a suggestion for a logical component name, to be turned into a Spring + * bean in case of an autodetected component. + * + * @return the suggested component name, if any (or empty String otherwise) + */ + @AliasFor(annotation = Component.class) + String value() default ""; +} diff --git a/common/src/main/java/de/strasser/peter/hexagonal/common/validators/ReadStringResources.java b/common/src/main/java/de/strasser/peter/hexagonal/common/ReadStringResources.java similarity index 86% rename from common/src/main/java/de/strasser/peter/hexagonal/common/validators/ReadStringResources.java rename to common/src/main/java/de/strasser/peter/hexagonal/common/ReadStringResources.java index cfff0c3..0150765 100644 --- a/common/src/main/java/de/strasser/peter/hexagonal/common/validators/ReadStringResources.java +++ b/common/src/main/java/de/strasser/peter/hexagonal/common/ReadStringResources.java @@ -1,4 +1,4 @@ -package de.strasser.peter.hexagonal.common.validators; +package de.strasser.peter.hexagonal.common; import org.springframework.util.ResourceUtils; diff --git a/common/src/main/java/de/strasser/peter/hexagonal/common/UseCase.java b/common/src/main/java/de/strasser/peter/hexagonal/common/UseCase.java new file mode 100644 index 0000000..2ff4be4 --- /dev/null +++ b/common/src/main/java/de/strasser/peter/hexagonal/common/UseCase.java @@ -0,0 +1,22 @@ +package de.strasser.peter.hexagonal.common; + +import org.springframework.core.annotation.AliasFor; +import org.springframework.stereotype.Component; + +import java.lang.annotation.*; + +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Component +public @interface UseCase { + + /** + * The value may indicate a suggestion for a logical component name, to be turned into a Spring + * bean in case of an autodetected component. + * + * @return the suggested component name, if any (or empty String otherwise) + */ + @AliasFor(annotation = Component.class) + String value() default ""; +} diff --git a/config/.mvn/wrapper/MavenWrapperDownloader.java b/config/.mvn/wrapper/MavenWrapperDownloader.java index a45eb6b..65e6aae 100644 --- a/config/.mvn/wrapper/MavenWrapperDownloader.java +++ b/config/.mvn/wrapper/MavenWrapperDownloader.java @@ -21,98 +21,99 @@ import java.util.Properties; public class MavenWrapperDownloader { - private static final String WRAPPER_VERSION = "0.5.6"; - /** - * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. - */ - private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" - + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + private static final String WRAPPER_VERSION = "0.5.6"; + /** Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. */ + private static final String DEFAULT_DOWNLOAD_URL = + "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + + "/maven-wrapper-" + + WRAPPER_VERSION + + ".jar"; - /** - * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to - * use instead of the default one. - */ - private static final String MAVEN_WRAPPER_PROPERTIES_PATH = - ".mvn/wrapper/maven-wrapper.properties"; + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to use + * instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; - /** - * Path where the maven-wrapper.jar will be saved to. - */ - private static final String MAVEN_WRAPPER_JAR_PATH = - ".mvn/wrapper/maven-wrapper.jar"; + /** Path where the maven-wrapper.jar will be saved to. */ + private static final String MAVEN_WRAPPER_JAR_PATH = ".mvn/wrapper/maven-wrapper.jar"; - /** - * Name of the property which should be used to override the default download url for the wrapper. - */ - private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; - public static void main(String args[]) { - System.out.println("- Downloader started"); - File baseDirectory = new File(args[0]); - System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); - // If the maven-wrapper.properties exists, read it and check if it contains a custom - // wrapperUrl parameter. - File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); - String url = DEFAULT_DOWNLOAD_URL; - if (mavenWrapperPropertyFile.exists()) { - FileInputStream mavenWrapperPropertyFileInputStream = null; - try { - mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); - Properties mavenWrapperProperties = new Properties(); - mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); - url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); - } catch (IOException e) { - System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); - } finally { - try { - if (mavenWrapperPropertyFileInputStream != null) { - mavenWrapperPropertyFileInputStream.close(); - } - } catch (IOException e) { - // Ignore ... - } - } - } - System.out.println("- Downloading from: " + url); - - File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); - if (!outputFile.getParentFile().exists()) { - if (!outputFile.getParentFile().mkdirs()) { - System.out.println( - "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); - } - } - System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if (mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { try { - downloadFileFromURL(url, outputFile); - System.out.println("Done"); - System.exit(0); - } catch (Throwable e) { - System.out.println("- Error downloading"); - e.printStackTrace(); - System.exit(1); + if (mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... } + } } + System.out.println("- Downloading from: " + url); - private static void downloadFileFromURL(String urlString, File destination) throws Exception { - if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { - String username = System.getenv("MVNW_USERNAME"); - char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); - Authenticator.setDefault(new Authenticator() { - @Override - protected PasswordAuthentication getPasswordAuthentication() { - return new PasswordAuthentication(username, password); - } - }); - } - URL website = new URL(urlString); - ReadableByteChannel rbc; - rbc = Channels.newChannel(website.openStream()); - FileOutputStream fos = new FileOutputStream(destination); - fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); - fos.close(); - rbc.close(); + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if (!outputFile.getParentFile().exists()) { + if (!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + + outputFile.getParentFile().getAbsolutePath() + + "'"); + } } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault( + new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } } diff --git a/config/mvnw b/config/mvnw index 3c8a553..8ae6456 100644 --- a/config/mvnw +++ b/config/mvnw @@ -316,7 +316,7 @@ export MAVEN_CMD_LINE_ARGS WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain exec "$JAVACMD" \ - $MAVEN_OPTS \ - -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ - ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" +$MAVEN_OPTS \ +-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ +"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ +${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/config/pom.xml b/config/pom.xml index e6b711e..5f69187 100644 --- a/config/pom.xml +++ b/config/pom.xml @@ -48,6 +48,8 @@ de.strasser.peter.hexagonal persistence + + diff --git a/config/src/main/java/de/strasser/peter/hexagonal/HexagonalApplication.java b/config/src/main/java/de/strasser/peter/hexagonal/HexagonalApplication.java index 5193d51..b866115 100644 --- a/config/src/main/java/de/strasser/peter/hexagonal/HexagonalApplication.java +++ b/config/src/main/java/de/strasser/peter/hexagonal/HexagonalApplication.java @@ -5,7 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class HexagonalApplication { - public static void main(String[] args) { - SpringApplication.run(HexagonalApplication.class, args); - } + public static void main(String[] args) { + SpringApplication.run(HexagonalApplication.class, args); + } } diff --git a/config/src/test/java/de/strasser/peter/hexagonal/config/ArchitectureTest.java b/config/src/test/java/de/strasser/peter/hexagonal/config/ArchitectureTest.java new file mode 100644 index 0000000..755b4ec --- /dev/null +++ b/config/src/test/java/de/strasser/peter/hexagonal/config/ArchitectureTest.java @@ -0,0 +1,3 @@ +package de.strasser.peter.hexagonal.config; + +public class ArchitectureTest {} diff --git a/config/src/test/java/de/strasser/peter/hexagonal/config/HexagonalApplicationTests.java b/config/src/test/java/de/strasser/peter/hexagonal/config/HexagonalApplicationTests.java index 6dd608c..fcdf943 100644 --- a/config/src/test/java/de/strasser/peter/hexagonal/config/HexagonalApplicationTests.java +++ b/config/src/test/java/de/strasser/peter/hexagonal/config/HexagonalApplicationTests.java @@ -6,8 +6,6 @@ import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class HexagonalApplicationTests { - @Test - void contextLoads() { - } - + @Test + void contextLoads() {} } diff --git a/pom.xml b/pom.xml index 7c580f4..daef6ea 100644 --- a/pom.xml +++ b/pom.xml @@ -25,6 +25,7 @@ 0.0.1-SNAPSHOT 0.0.1-SNAPSHOT 0.0.1-SNAPSHOT + 0.18.0 @@ -77,6 +78,13 @@ persistence ${persistence.version} + + + com.tngtech.archunit + archunit + ${archunit.version} + test +