From 84c4b034a9f282a0d8739ef7bd4cd83813a7c454 Mon Sep 17 00:00:00 2001 From: Gaurav Deshpande Date: Tue, 8 Oct 2019 10:12:54 +0530 Subject: [PATCH 01/68] Fix: Github reports security vulnerabilities #933 (#960) * Fix: Github reports security vulnerabilities #933 Upgrade camel and spring-data * -Fix github security vulnerabilities in spring-data and camel * -Code changes for review comments --- .../routes/AggregatorRouteTest.java | 4 +-- .../splitter/routes/SplitterRouteTest.java | 4 +-- .../eip/wiretap/routes/WireTapRouteTest.java | 4 +-- layers/pom.xml | 6 ++++- .../layers/CakeBakingServiceImpl.java | 27 +++++++++++-------- .../src/main/resources/applicationContext.xml | 2 +- pom.xml | 21 ++++++++------- repository/pom.xml | 6 ++++- .../java/com/iluwatar/repository/App.java | 9 ++++--- .../com/iluwatar/repository/AppConfig.java | 13 +++++---- .../src/main/resources/applicationContext.xml | 2 +- .../AnnotationBasedRepositoryTest.java | 12 ++++----- .../iluwatar/repository/AppConfigTest.java | 5 ++-- .../iluwatar/repository/RepositoryTest.java | 11 ++++---- 14 files changed, 72 insertions(+), 54 deletions(-) diff --git a/eip-aggregator/src/test/java/com/iluwatar/eip/aggregator/routes/AggregatorRouteTest.java b/eip-aggregator/src/test/java/com/iluwatar/eip/aggregator/routes/AggregatorRouteTest.java index 2c7d207d6f53..2b831e01958b 100644 --- a/eip-aggregator/src/test/java/com/iluwatar/eip/aggregator/routes/AggregatorRouteTest.java +++ b/eip-aggregator/src/test/java/com/iluwatar/eip/aggregator/routes/AggregatorRouteTest.java @@ -28,7 +28,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.ComponentScan; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ActiveProfiles; @@ -44,7 +44,7 @@ *

*/ @ExtendWith(SpringExtension.class) -@SpringApplicationConfiguration(classes = AggregatorRouteTest.class) +@SpringBootTest(classes = AggregatorRouteTest.class) @ActiveProfiles("test") @EnableAutoConfiguration @ComponentScan diff --git a/eip-splitter/src/test/java/com/iluwatar/eip/splitter/routes/SplitterRouteTest.java b/eip-splitter/src/test/java/com/iluwatar/eip/splitter/routes/SplitterRouteTest.java index 9257a4410186..334b77da03c8 100644 --- a/eip-splitter/src/test/java/com/iluwatar/eip/splitter/routes/SplitterRouteTest.java +++ b/eip-splitter/src/test/java/com/iluwatar/eip/splitter/routes/SplitterRouteTest.java @@ -28,7 +28,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.ComponentScan; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ActiveProfiles; @@ -42,7 +42,7 @@ *

*/ @ExtendWith(SpringExtension.class) -@SpringApplicationConfiguration(classes = SplitterRouteTest.class) +@SpringBootTest(classes = SplitterRouteTest.class) @ActiveProfiles("test") @EnableAutoConfiguration @ComponentScan diff --git a/eip-wire-tap/src/test/java/com/iluwatar/eip/wiretap/routes/WireTapRouteTest.java b/eip-wire-tap/src/test/java/com/iluwatar/eip/wiretap/routes/WireTapRouteTest.java index 449f86208258..bb433f350238 100644 --- a/eip-wire-tap/src/test/java/com/iluwatar/eip/wiretap/routes/WireTapRouteTest.java +++ b/eip-wire-tap/src/test/java/com/iluwatar/eip/wiretap/routes/WireTapRouteTest.java @@ -29,7 +29,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.ComponentScan; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ActiveProfiles; @@ -45,7 +45,7 @@ *

*/ @ExtendWith(SpringExtension.class) -@SpringApplicationConfiguration(classes = WireTapRouteTest.class) +@SpringBootTest(classes = WireTapRouteTest.class) @ActiveProfiles("test") @EnableAutoConfiguration @ComponentScan diff --git a/layers/pom.xml b/layers/pom.xml index 8237c8f4f6e0..a6d3d17199f6 100644 --- a/layers/pom.xml +++ b/layers/pom.xml @@ -41,7 +41,11 @@ org.hibernate - hibernate-entitymanager + hibernate-core + + + javax.xml.bind + jaxb-api commons-dbcp diff --git a/layers/src/main/java/com/iluwatar/layers/CakeBakingServiceImpl.java b/layers/src/main/java/com/iluwatar/layers/CakeBakingServiceImpl.java index e8deee73a767..556a74c7afbf 100644 --- a/layers/src/main/java/com/iluwatar/layers/CakeBakingServiceImpl.java +++ b/layers/src/main/java/com/iluwatar/layers/CakeBakingServiceImpl.java @@ -72,18 +72,23 @@ public void bakeNewCake(CakeInfo cakeInfo) throws CakeBakingException { } } CakeToppingDao toppingBean = context.getBean(CakeToppingDao.class); - CakeTopping topping = toppingBean.findOne(matchingToppings.iterator().next().getId()); + Optional topping = toppingBean.findById(matchingToppings.iterator().next().getId()); CakeDao cakeBean = context.getBean(CakeDao.class); - Cake cake = new Cake(); - cake.setTopping(topping); - cake.setLayers(foundLayers); - cakeBean.save(cake); - topping.setCake(cake); - toppingBean.save(topping); - CakeLayerDao layerBean = context.getBean(CakeLayerDao.class); - for (CakeLayer layer : foundLayers) { - layer.setCake(cake); - layerBean.save(layer); + if (topping.isPresent()) { + Cake cake = new Cake(); + cake.setTopping(topping.get()); + cake.setLayers(foundLayers); + cakeBean.save(cake); + topping.get().setCake(cake); + toppingBean.save(topping.get()); + CakeLayerDao layerBean = context.getBean(CakeLayerDao.class); + for (CakeLayer layer : foundLayers) { + layer.setCake(cake); + layerBean.save(layer); + } + } else { + throw new CakeBakingException(String.format("Topping %s is not available", + cakeInfo.cakeToppingInfo.name)); } } diff --git a/layers/src/main/resources/applicationContext.xml b/layers/src/main/resources/applicationContext.xml index eca3670b0fbf..c149094c1fa3 100644 --- a/layers/src/main/resources/applicationContext.xml +++ b/layers/src/main/resources/applicationContext.xml @@ -50,7 +50,7 @@ - + diff --git a/pom.xml b/pom.xml index 539da396b2d8..33219175ec9d 100644 --- a/pom.xml +++ b/pom.xml @@ -28,10 +28,10 @@ 2014 UTF-8 - 5.0.1.Final - 4.2.4.RELEASE - 1.3.3.RELEASE - 1.9.2.RELEASE + 5.2.18.Final + 5.0.13.RELEASE + 2.0.9.RELEASE + 2.0.14.RELEASE 1.4.190 4.12 5.0.2 @@ -40,7 +40,7 @@ 3.8.1 0.8.4 1.4 - 2.16.1 + 2.24.0 19.0 1.10.19 4.5.10 @@ -55,6 +55,7 @@ 2.0.1 2.8.5 3.12.0 + 1.2.17 2.3.0 1.3.1 @@ -191,11 +192,6 @@ hibernate-core ${hibernate.version} - - org.hibernate - hibernate-entitymanager - ${hibernate.version} - org.springframework.boot spring-boot-dependencies @@ -300,6 +296,11 @@ mongo-java-driver ${mongo-java-driver.version} + + log4j + log4j + ${log4j.version} + javax.xml.bind jaxb-api diff --git a/repository/pom.xml b/repository/pom.xml index 2ccdc9da7ba5..f0340f1260ef 100644 --- a/repository/pom.xml +++ b/repository/pom.xml @@ -44,7 +44,7 @@ org.hibernate - hibernate-entitymanager + hibernate-core commons-dbcp @@ -71,5 +71,9 @@ javax.annotation javax.annotation-api + + org.springframework.boot + spring-boot-starter-test + diff --git a/repository/src/main/java/com/iluwatar/repository/App.java b/repository/src/main/java/com/iluwatar/repository/App.java index d96b4351ea38..c4a885380064 100644 --- a/repository/src/main/java/com/iluwatar/repository/App.java +++ b/repository/src/main/java/com/iluwatar/repository/App.java @@ -23,6 +23,7 @@ package com.iluwatar.repository; import java.util.List; +import java.util.Optional; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -84,17 +85,17 @@ public static void main(String[] args) { nasta.setSurname("Spotakova"); repository.save(nasta); - LOGGER.info("Find by id 2: {}", repository.findOne(2L)); + LOGGER.info("Find by id 2: {}", repository.findById(2L).get()); // Remove record from Person - repository.delete(2L); + repository.deleteById(2L); // count records LOGGER.info("Count Person records: {}", repository.count()); // find by name - Person p = repository.findOne(new PersonSpecifications.NameEqualSpec("John")); - LOGGER.info("Find by John is {}", p); + Optional p = repository.findOne(new PersonSpecifications.NameEqualSpec("John")); + LOGGER.info("Find by John is {}", p.get()); // find by age persons = repository.findAll(new PersonSpecifications.AgeBetweenSpec(20, 40)); diff --git a/repository/src/main/java/com/iluwatar/repository/AppConfig.java b/repository/src/main/java/com/iluwatar/repository/AppConfig.java index c5ccb7d00002..584c09037be7 100644 --- a/repository/src/main/java/com/iluwatar/repository/AppConfig.java +++ b/repository/src/main/java/com/iluwatar/repository/AppConfig.java @@ -24,6 +24,7 @@ import java.sql.SQLException; import java.util.List; +import java.util.Optional; import java.util.Properties; import javax.sql.DataSource; @@ -32,6 +33,7 @@ import org.hibernate.jpa.HibernatePersistenceProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.boot.SpringBootConfiguration; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @@ -44,6 +46,7 @@ * */ @EnableJpaRepositories +@SpringBootConfiguration public class AppConfig { private static final Logger LOGGER = LoggerFactory.getLogger(AppConfig.class); @@ -60,7 +63,7 @@ public DataSource dataSource() { basicDataSource.setUrl("jdbc:h2:~/databases/person"); basicDataSource.setUsername("sa"); basicDataSource.setPassword("sa"); - return (DataSource) basicDataSource; + return basicDataSource; } /** @@ -134,17 +137,17 @@ public static void main(String[] args) { nasta.setSurname("Spotakova"); repository.save(nasta); - LOGGER.info("Find by id 2: {}", repository.findOne(2L)); + LOGGER.info("Find by id 2: {}", repository.findById(2L).get()); // Remove record from Person - repository.delete(2L); + repository.deleteById(2L); // count records LOGGER.info("Count Person records: {}", repository.count()); // find by name - Person p = repository.findOne(new PersonSpecifications.NameEqualSpec("John")); - LOGGER.info("Find by John is {}", p); + Optional p = repository.findOne(new PersonSpecifications.NameEqualSpec("John")); + LOGGER.info("Find by John is {}", p.get()); // find by age persons = repository.findAll(new PersonSpecifications.AgeBetweenSpec(20, 40)); diff --git a/repository/src/main/resources/applicationContext.xml b/repository/src/main/resources/applicationContext.xml index 26d6cb3f4dc3..b27bb4c85f73 100644 --- a/repository/src/main/resources/applicationContext.xml +++ b/repository/src/main/resources/applicationContext.xml @@ -49,7 +49,7 @@ - + diff --git a/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java b/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java index 4cfb6e022f51..8d7e1d94b797 100644 --- a/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java +++ b/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java @@ -28,6 +28,7 @@ import java.util.Arrays; import java.util.List; +import java.util.Optional; import javax.annotation.Resource; @@ -35,9 +36,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.test.context.ContextConfiguration; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit.jupiter.SpringExtension; -import org.springframework.test.context.support.AnnotationConfigContextLoader; import com.google.common.collect.Lists; @@ -47,7 +47,7 @@ * */ @ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = { AppConfig.class }, loader = AnnotationConfigContextLoader.class) +@SpringBootTest(classes = { AppConfig.class }) public class AnnotationBasedRepositoryTest { @Resource @@ -66,7 +66,7 @@ public class AnnotationBasedRepositoryTest { @BeforeEach public void setup() { - repository.save(persons); + repository.saveAll(persons); } @Test @@ -119,8 +119,8 @@ public void testFindAllByAgeBetweenSpec() { @Test public void testFindOneByNameEqualSpec() { - Person actual = repository.findOne(new PersonSpecifications.NameEqualSpec("Terry")); - assertEquals(terry, actual); + Optional actual = repository.findOne(new PersonSpecifications.NameEqualSpec("Terry")); + assertEquals(terry, actual.get()); } @AfterEach diff --git a/repository/src/test/java/com/iluwatar/repository/AppConfigTest.java b/repository/src/test/java/com/iluwatar/repository/AppConfigTest.java index 3fb1b427b232..1839a2523e6c 100644 --- a/repository/src/test/java/com/iluwatar/repository/AppConfigTest.java +++ b/repository/src/test/java/com/iluwatar/repository/AppConfigTest.java @@ -25,9 +25,8 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit.jupiter.SpringExtension; -import org.springframework.test.context.support.AnnotationConfigContextLoader; import org.springframework.transaction.annotation.Transactional; import javax.sql.DataSource; @@ -42,7 +41,7 @@ * */ @ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = { AppConfig.class }, loader = AnnotationConfigContextLoader.class) +@SpringBootTest(classes = { AppConfig.class }) public class AppConfigTest { @Autowired diff --git a/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java b/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java index 5b4b8e80c055..dc976cbe72d3 100644 --- a/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java +++ b/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java @@ -28,6 +28,7 @@ import java.util.Arrays; import java.util.List; +import java.util.Optional; import javax.annotation.Resource; @@ -35,7 +36,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.test.context.ContextConfiguration; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit.jupiter.SpringExtension; import com.google.common.collect.Lists; @@ -45,7 +46,7 @@ * by {@link org.springframework.data.jpa.domain.Specification} are also test. */ @ExtendWith(SpringExtension.class) -@ContextConfiguration(locations = { "classpath:applicationContext.xml" }) +@SpringBootTest(properties = { "locations=classpath:applicationContext.xml" }) public class RepositoryTest { @Resource @@ -64,7 +65,7 @@ public class RepositoryTest { @BeforeEach public void setup() { - repository.save(persons); + repository.saveAll(persons); } @Test @@ -115,8 +116,8 @@ public void testFindAllByAgeBetweenSpec() { @Test public void testFindOneByNameEqualSpec() { - Person actual = repository.findOne(new PersonSpecifications.NameEqualSpec("Terry")); - assertEquals(terry, actual); + Optional actual = repository.findOne(new PersonSpecifications.NameEqualSpec("Terry")); + assertEquals(terry, actual.get()); } @AfterEach From f903d7e9a9379c79742ecc61a3901bdbe2a0a318 Mon Sep 17 00:00:00 2001 From: Joshua Jimenez Date: Tue, 8 Oct 2019 14:19:28 +0800 Subject: [PATCH 02/68] #496 Pipeline pattern (#967) * #496 Add pipeline module to parent pom :sparkles: * #496: Add main application class and test for pipeline * #496: Checkstyle format and add log messages on pipeline stages :art: * #496: Fill readme sections of pipeline :sparkles: * #496: Javadocs and checkstyle formatting :art: * #496: Follow PMD checks and add more explanation as block comment on App.java * #496: Apply requested PR changes by iluwatar :art: --- pipeline/README.md | 37 +++++++++++ pipeline/pom.xml | 47 +++++++++++++ .../main/java/com.iluwatar.pipeline/App.java | 66 +++++++++++++++++++ .../ConvertToCharArrayHandler.java | 45 +++++++++++++ .../java/com.iluwatar.pipeline/Handler.java | 32 +++++++++ .../java/com.iluwatar.pipeline/Pipeline.java | 46 +++++++++++++ .../RemoveAlphabetsHandler.java | 54 +++++++++++++++ .../RemoveDigitsHandler.java | 54 +++++++++++++++ .../java/com.iluwatar.pipeline/AppTest.java | 37 +++++++++++ .../com.iluwatar.pipeline/PipelineTest.java | 45 +++++++++++++ pom.xml | 1 + 11 files changed, 464 insertions(+) create mode 100644 pipeline/README.md create mode 100644 pipeline/pom.xml create mode 100644 pipeline/src/main/java/com.iluwatar.pipeline/App.java create mode 100644 pipeline/src/main/java/com.iluwatar.pipeline/ConvertToCharArrayHandler.java create mode 100644 pipeline/src/main/java/com.iluwatar.pipeline/Handler.java create mode 100644 pipeline/src/main/java/com.iluwatar.pipeline/Pipeline.java create mode 100644 pipeline/src/main/java/com.iluwatar.pipeline/RemoveAlphabetsHandler.java create mode 100644 pipeline/src/main/java/com.iluwatar.pipeline/RemoveDigitsHandler.java create mode 100644 pipeline/src/test/java/com.iluwatar.pipeline/AppTest.java create mode 100644 pipeline/src/test/java/com.iluwatar.pipeline/PipelineTest.java diff --git a/pipeline/README.md b/pipeline/README.md new file mode 100644 index 000000000000..e990affd62c7 --- /dev/null +++ b/pipeline/README.md @@ -0,0 +1,37 @@ +--- +layout: pattern +title: Pipeline +folder: pipeline +permalink: /patterns/pipeline/ +categories: Behavioral +tags: + - Java + - Functional + - Difficulty-Intermediate +--- + +## Intent +Allows processing of data in a series of stages by giving in an initial input and passing the processed output to be used by the next stages. + +## Applicability +Use the Pipeline pattern when you want to + +* execute individual stages that yields a final value +* add readability to complex sequence of operations by providing a fluent builder as an interface +* improve testability of code since stages will most likely be doing a single thing, complying to the [Single Responsibility Principle (SRP)](https://java-design-patterns.com/principles/#single-responsibility-principle) + +## Typical Use Case + +* implement stages and execute them in an ordered manner + +## Real world examples + +* [java.util.Stream](https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html) +* [Maven Build Lifecycle](http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html) +* [Functional Java](https://github.com/functionaljava/functionaljava) + +## Credits + +* [The Pipeline Pattern — for fun and profit](https://medium.com/@aaronweatherall/the-pipeline-pattern-for-fun-and-profit-9b5f43a98130) +* [The Pipeline design pattern (in Java)](https://medium.com/@deepakbapat/the-pipeline-design-pattern-in-java-831d9ce2fe21) +* [Pipelines | Microsoft Docs](https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff963548(v=pandp.10)) \ No newline at end of file diff --git a/pipeline/pom.xml b/pipeline/pom.xml new file mode 100644 index 000000000000..7ad60d5620e4 --- /dev/null +++ b/pipeline/pom.xml @@ -0,0 +1,47 @@ + + + + 4.0.0 + + com.iluwatar + java-design-patterns + 1.22.0-SNAPSHOT + + pipeline + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.mockito + mockito-core + test + + + diff --git a/pipeline/src/main/java/com.iluwatar.pipeline/App.java b/pipeline/src/main/java/com.iluwatar.pipeline/App.java new file mode 100644 index 000000000000..7efa2ecca003 --- /dev/null +++ b/pipeline/src/main/java/com.iluwatar.pipeline/App.java @@ -0,0 +1,66 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.pipeline; + +/** + * The Pipeline pattern uses ordered stages to process a sequence of input values. + * Each implemented task is represented by a stage of the pipeline. You can think of + * pipelines as similar to assembly lines in a factory, where each item in the assembly + * line is constructed in stages. The partially assembled item is passed from one assembly + * stage to another. The outputs of the assembly line occur in the same order as that of the + * inputs. + * + * Classes used in this example are suffixed with "Handlers", and synonymously refers to the + * "stage". + */ +public class App { + /** + * Specify the initial input type for the first stage handler and the expected output type + * of the last stage handler as type parameters for Pipeline. Use the fluent builder by + * calling addHandler to add more stage handlers on the pipeline. + */ + public static void main(String[] args) { + /* + Suppose we wanted to pass through a String to a series of filtering stages and convert it + as a char array on the last stage. + + - Stage handler 1 (pipe): Removing the alphabets, accepts a String input and returns the + processed String output. This will be used by the next handler as its input. + + - Stage handler 2 (pipe): Removing the digits, accepts a String input and returns the + processed String output. This shall also be used by the last handler we have. + + - Stage handler 3 (pipe): Converting the String input to a char array handler. We would + be returning a different type in here since that is what's specified by the requirement. + This means that at any stages along the pipeline, the handler can return any type of data + as long as it fulfills the requirements for the next handler's input. + + Suppose we wanted to add another handler after ConvertToCharArrayHandler. That handler + then is expected to receive an input of char[] array since that is the type being returned + by the previous handler, ConvertToCharArrayHandler. + */ + new Pipeline<>(new RemoveAlphabetsHandler()) + .addHandler(new RemoveDigitsHandler()) + .addHandler(new ConvertToCharArrayHandler()); + } +} diff --git a/pipeline/src/main/java/com.iluwatar.pipeline/ConvertToCharArrayHandler.java b/pipeline/src/main/java/com.iluwatar.pipeline/ConvertToCharArrayHandler.java new file mode 100644 index 000000000000..b69241914980 --- /dev/null +++ b/pipeline/src/main/java/com.iluwatar.pipeline/ConvertToCharArrayHandler.java @@ -0,0 +1,45 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.pipeline; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Arrays; + +/** + * Stage handler that converts an input String to its char[] array counterpart. + */ +class ConvertToCharArrayHandler implements Handler { + + private final Logger logger = LoggerFactory.getLogger(ConvertToCharArrayHandler.class); + + @Override + public char[] process(String input) { + char[] characters = input.toCharArray(); + logger.info(String.format("Current handler: %s, input is %s of type %s, output is %s, of type %s", + ConvertToCharArrayHandler.class, input, String.class, Arrays.toString(characters), Character[].class)); + + return characters; + } +} diff --git a/pipeline/src/main/java/com.iluwatar.pipeline/Handler.java b/pipeline/src/main/java/com.iluwatar.pipeline/Handler.java new file mode 100644 index 000000000000..7d2bc0db7f59 --- /dev/null +++ b/pipeline/src/main/java/com.iluwatar.pipeline/Handler.java @@ -0,0 +1,32 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.pipeline; + +/** + * Forms a contract to all stage handlers to accept a certain type of input and return a processed output. + * @param the input type of the handler + * @param the processed output type of the handler + */ +interface Handler { + O process(I input); +} \ No newline at end of file diff --git a/pipeline/src/main/java/com.iluwatar.pipeline/Pipeline.java b/pipeline/src/main/java/com.iluwatar.pipeline/Pipeline.java new file mode 100644 index 000000000000..8e231bbc4d09 --- /dev/null +++ b/pipeline/src/main/java/com.iluwatar.pipeline/Pipeline.java @@ -0,0 +1,46 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.pipeline; + +/** + * Main Pipeline class that initially sets the current handler. Processed output + * of the initial handler is then passed as the input to the next stage handlers. + * @param the type of the input for the first stage handler + * @param the final stage handler's output type + */ +class Pipeline { + + private final Handler currentHandler; + + Pipeline(Handler currentHandler) { + this.currentHandler = currentHandler; + } + + Pipeline addHandler(Handler newHandler) { + return new Pipeline<>(input -> newHandler.process(currentHandler.process(input))); + } + + O execute(I input) { + return currentHandler.process(input); + } +} \ No newline at end of file diff --git a/pipeline/src/main/java/com.iluwatar.pipeline/RemoveAlphabetsHandler.java b/pipeline/src/main/java/com.iluwatar.pipeline/RemoveAlphabetsHandler.java new file mode 100644 index 000000000000..2085052742fa --- /dev/null +++ b/pipeline/src/main/java/com.iluwatar.pipeline/RemoveAlphabetsHandler.java @@ -0,0 +1,54 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.pipeline; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Stage handler that returns a new instance of String without the alphabet characters of the input string. + */ +class RemoveAlphabetsHandler implements Handler { + + private final Logger logger = LoggerFactory.getLogger(RemoveAlphabetsHandler.class); + + @Override + public String process(String input) { + StringBuilder inputWithoutAlphabets = new StringBuilder(); + + for (int index = 0; index < input.length(); index++) { + char currentCharacter = input.charAt(index); + if (Character.isAlphabetic(currentCharacter)) { + continue; + } + + inputWithoutAlphabets.append(currentCharacter); + } + + String inputWithoutAlphabetsStr = inputWithoutAlphabets.toString(); + logger.info(String.format("Current handler: %s, input is %s of type %s, output is %s, of type %s", + RemoveAlphabetsHandler.class, input, String.class, inputWithoutAlphabetsStr, String.class)); + + return inputWithoutAlphabetsStr; + } +} \ No newline at end of file diff --git a/pipeline/src/main/java/com.iluwatar.pipeline/RemoveDigitsHandler.java b/pipeline/src/main/java/com.iluwatar.pipeline/RemoveDigitsHandler.java new file mode 100644 index 000000000000..e0c0aa6a87b2 --- /dev/null +++ b/pipeline/src/main/java/com.iluwatar.pipeline/RemoveDigitsHandler.java @@ -0,0 +1,54 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.pipeline; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Stage handler that returns a new instance of String without the digit characters of the input string. + */ +class RemoveDigitsHandler implements Handler { + + private final Logger logger = LoggerFactory.getLogger(RemoveDigitsHandler.class); + + @Override + public String process(String input) { + StringBuilder inputWithoutDigits = new StringBuilder(); + + for (int index = 0; index < input.length(); index++) { + char currentCharacter = input.charAt(index); + if (Character.isDigit(currentCharacter)) { + continue; + } + + inputWithoutDigits.append(currentCharacter); + } + + String inputWithoutDigitsStr = inputWithoutDigits.toString(); + logger.info(String.format("Current handler: %s, input is %s of type %s, output is %s, of type %s", + RemoveDigitsHandler.class, input, String.class, inputWithoutDigitsStr, String.class)); + + return inputWithoutDigitsStr; + } +} \ No newline at end of file diff --git a/pipeline/src/test/java/com.iluwatar.pipeline/AppTest.java b/pipeline/src/test/java/com.iluwatar.pipeline/AppTest.java new file mode 100644 index 000000000000..79524575c13c --- /dev/null +++ b/pipeline/src/test/java/com.iluwatar.pipeline/AppTest.java @@ -0,0 +1,37 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.pipeline; + +import org.junit.jupiter.api.Test; + +/** + * Application Test + */ +public class AppTest { + + @Test + public void test() { + String[] args = {}; + App.main(args); + } +} diff --git a/pipeline/src/test/java/com.iluwatar.pipeline/PipelineTest.java b/pipeline/src/test/java/com.iluwatar.pipeline/PipelineTest.java new file mode 100644 index 000000000000..1a2676e25d05 --- /dev/null +++ b/pipeline/src/test/java/com.iluwatar.pipeline/PipelineTest.java @@ -0,0 +1,45 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.pipeline; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; + +/** + * Test for {@link Pipeline} + */ +public class PipelineTest { + + @Test + public void testAddHandlersToPipeline() { + Pipeline filters = new Pipeline<>(new RemoveAlphabetsHandler()) + .addHandler(new RemoveDigitsHandler()) + .addHandler(new ConvertToCharArrayHandler()); + + assertArrayEquals( + new char[] {'#', '!', '(', '&', '%', '#', '!'}, + filters.execute("#H!E(L&L0O%THE3R#34E!") + ); + } +} diff --git a/pom.xml b/pom.xml index 33219175ec9d..39cfee91c241 100644 --- a/pom.xml +++ b/pom.xml @@ -97,6 +97,7 @@ property intercepting-filter producer-consumer + pipeline poison-pill reader-writer-lock lazy-loading From 41b8d8047965f247c9a3dcf7aeb19046599c8583 Mon Sep 17 00:00:00 2001 From: erikgajdos1997 <56270468+erikgajdos1997@users.noreply.github.com> Date: Tue, 8 Oct 2019 17:08:56 +0200 Subject: [PATCH 03/68] Close #969 (#972) --- repository/src/main/resources/logback.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/repository/src/main/resources/logback.xml b/repository/src/main/resources/logback.xml index 56b6a59bb6cf..81b998ad9021 100644 --- a/repository/src/main/resources/logback.xml +++ b/repository/src/main/resources/logback.xml @@ -42,11 +42,11 @@ - + - + From 90ea4506caa653711f69fabb99ee7ac26c4ecce7 Mon Sep 17 00:00:00 2001 From: Azureyjt Date: Tue, 8 Oct 2019 23:29:59 +0800 Subject: [PATCH 04/68] Leader Election Pattern (#923) * Fix issue #761: ThreadSafeDoubleCheckLocking.java: Instantiating by Reflection call will be successful if you do that firstly * Create leader election module * Create Interface of Instance and MessageManager * Create implementations with token ring algorithm * Change package structure. Create basic message system. * Implement heartbeat and heartbeat invoking message system * Implement election message handler * Add leader message handler * Add main entry point * Add comments * Update README.md * Fix checkstyle issue * Add Unit Tests * Add Unit Tests * Add bully leader selection * Change System.out to log print. Add MIT license in each file. * Add More java doc comments * Add unit test * Add unit tests --- leader-election/README.md | 31 ++++ leader-election/pom.xml | 43 +++++ .../leaderelection/AbstractInstance.java | 148 +++++++++++++++++ .../AbstractMessageManager.java | 73 +++++++++ .../com/iluwatar/leaderelection/Instance.java | 49 ++++++ .../com/iluwatar/leaderelection/Message.java | 76 +++++++++ .../leaderelection/MessageManager.java | 60 +++++++ .../iluwatar/leaderelection/MessageType.java | 62 +++++++ .../leaderelection/bully/BullyApp.java | 77 +++++++++ .../leaderelection/bully/BullyInstance.java | 121 ++++++++++++++ .../bully/BullyMessageManager.java | 117 ++++++++++++++ .../iluwatar/leaderelection/ring/RingApp.java | 77 +++++++++ .../leaderelection/ring/RingInstance.java | 133 +++++++++++++++ .../ring/RingMessageManager.java | 96 +++++++++++ .../iluwatar/leaderelection/MessageTest.java | 48 ++++++ .../leaderelection/bully/BullyAppTest.java | 39 +++++ .../bully/BullyMessageManagerTest.java | 151 ++++++++++++++++++ .../bully/BullyinstanceTest.java | 78 +++++++++ .../leaderelection/ring/RingAppTest.java | 39 +++++ .../leaderelection/ring/RingInstanceTest.java | 76 +++++++++ .../ring/RingMessageManagerTest.java | 123 ++++++++++++++ pom.xml | 2 + 22 files changed, 1719 insertions(+) create mode 100644 leader-election/README.md create mode 100644 leader-election/pom.xml create mode 100644 leader-election/src/main/java/com/iluwatar/leaderelection/AbstractInstance.java create mode 100644 leader-election/src/main/java/com/iluwatar/leaderelection/AbstractMessageManager.java create mode 100644 leader-election/src/main/java/com/iluwatar/leaderelection/Instance.java create mode 100644 leader-election/src/main/java/com/iluwatar/leaderelection/Message.java create mode 100644 leader-election/src/main/java/com/iluwatar/leaderelection/MessageManager.java create mode 100644 leader-election/src/main/java/com/iluwatar/leaderelection/MessageType.java create mode 100644 leader-election/src/main/java/com/iluwatar/leaderelection/bully/BullyApp.java create mode 100644 leader-election/src/main/java/com/iluwatar/leaderelection/bully/BullyInstance.java create mode 100644 leader-election/src/main/java/com/iluwatar/leaderelection/bully/BullyMessageManager.java create mode 100644 leader-election/src/main/java/com/iluwatar/leaderelection/ring/RingApp.java create mode 100644 leader-election/src/main/java/com/iluwatar/leaderelection/ring/RingInstance.java create mode 100644 leader-election/src/main/java/com/iluwatar/leaderelection/ring/RingMessageManager.java create mode 100644 leader-election/src/test/java/com/iluwatar/leaderelection/MessageTest.java create mode 100644 leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyAppTest.java create mode 100644 leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyMessageManagerTest.java create mode 100644 leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyinstanceTest.java create mode 100644 leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingAppTest.java create mode 100644 leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingInstanceTest.java create mode 100644 leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingMessageManagerTest.java diff --git a/leader-election/README.md b/leader-election/README.md new file mode 100644 index 000000000000..36c2670dffa0 --- /dev/null +++ b/leader-election/README.md @@ -0,0 +1,31 @@ +--- +layout: pattern +title: Leader Election +folder: leader-election +permalink: /patterns/leader-election/ +categories: Other +tags: + - Java + - Difficulty-Beginner +--- + +## Intent +Leader Election pattern is commonly used in cloud system design. It can help to ensure that task instances selec the leader instance correctly and do not conflict with each other, cause contention for shared resources, or inadvertently interfere with the work that other task instances are performing. + +## Applicability +Use this pattern when + +* the tasks in a distributed application, such as a cloud-hosted solution, require careful coordination and there is no natural leader. + +Do not use this pattern when + +* there is a natural leader or dedicated process that can always act as the leader. For example, it may be possible to implement a singleton process that coordinates the task instances. If this process fails or becomes unhealthy, the system can shut it down and restart it. +* the coordination between tasks can be easily achieved by using a more lightweight mechanism. For example, if several task instances simply require coordinated access to a shared resource, a preferable solution might be to use optimistic or pessimistic locking to control access to that resource. + +## Real world examples + +* [Raft Leader Election](https://github.com/ronenhamias/raft-leader-election) + +## Credits + +* [ Cloud Design Patterns: Prescriptive Architecture Guidance for Cloud Applications](https://docs.microsoft.com/en-us/previous-versions/msp-n-p/dn568104(v=pandp.10)) diff --git a/leader-election/pom.xml b/leader-election/pom.xml new file mode 100644 index 000000000000..7c1312d01a1d --- /dev/null +++ b/leader-election/pom.xml @@ -0,0 +1,43 @@ + + + + 4.0.0 + + java-design-patterns + com.iluwatar + 1.22.0-SNAPSHOT + + leader-election + + + org.junit.jupiter + junit-jupiter-engine + test + + + \ No newline at end of file diff --git a/leader-election/src/main/java/com/iluwatar/leaderelection/AbstractInstance.java b/leader-election/src/main/java/com/iluwatar/leaderelection/AbstractInstance.java new file mode 100644 index 000000000000..5f153870a300 --- /dev/null +++ b/leader-election/src/main/java/com/iluwatar/leaderelection/AbstractInstance.java @@ -0,0 +1,148 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Queue; +import java.util.concurrent.ConcurrentLinkedQueue; + +/** + * Abstract class of all the instance implementation classes. + */ +public abstract class AbstractInstance implements Instance, Runnable { + + private static final Logger LOGGER = LoggerFactory.getLogger(AbstractInstance.class); + + protected static final int HEARTBEAT_INTERVAL = 5000; + + protected MessageManager messageManager; + protected Queue messageQueue; + protected final int localId; + protected int leaderId; + protected boolean alive; + + /** + * Constructor of BullyInstance. + */ + public AbstractInstance(MessageManager messageManager, int localId, int leaderId) { + this.messageManager = messageManager; + this.messageQueue = new ConcurrentLinkedQueue<>(); + this.localId = localId; + this.leaderId = leaderId; + this.alive = true; + } + + /** + * The instance will execute the message in its message queue periodically once it is alive. + */ + @Override + public void run() { + while (true) { + if (!this.messageQueue.isEmpty()) { + this.processMessage(this.messageQueue.remove()); + } + } + } + + /** + * Once messages are sent to the certain instance, it will firstly be added to the queue and wait to be executed. + * @param message Message sent by other instances + */ + @Override + public void onMessage(Message message) { + messageQueue.offer(message); + } + + /** + * Check if the instance is alive or not. + * @return {@code true} if the instance is alive. + */ + @Override + public boolean isAlive() { + return alive; + } + + /** + * Set the health status of the certain instance. + * @param alive {@code true} for alive. + */ + @Override + public void setAlive(boolean alive) { + this.alive = alive; + } + + /** + * Process the message according to its type. + * @param message Message polled from queue. + */ + private void processMessage(Message message) { + switch (message.getType()) { + case ELECTION: + LOGGER.info("Instance " + localId + " - Election Message handling..."); + handleElectionMessage(message); + break; + case LEADER: + LOGGER.info("Instance " + localId + " - Leader Message handling..."); + handleLeaderMessage(message); + break; + case HEARTBEAT: + LOGGER.info("Instance " + localId + " - Heartbeat Message handling..."); + handleHeartbeatMessage(message); + break; + case ELECTION_INVOKE: + LOGGER.info("Instance " + localId + " - Election Invoke Message handling..."); + handleElectionInvokeMessage(); + break; + case LEADER_INVOKE: + LOGGER.info("Instance " + localId + " - Leader Invoke Message handling..."); + handleLeaderInvokeMessage(); + break; + case HEARTBEAT_INVOKE: + LOGGER.info("Instance " + localId + " - Heartbeat Invoke Message handling..."); + handleHeartbeatInvokeMessage(); + break; + default: + break; + } + } + + /** + * Abstract methods to handle different types of message. These methods need to be implemented in concrete instance + * class to implement corresponding leader-selection pattern. + */ + protected abstract void handleElectionMessage(Message message); + + protected abstract void handleElectionInvokeMessage(); + + protected abstract void handleLeaderMessage(Message message); + + protected abstract void handleLeaderInvokeMessage(); + + protected abstract void handleHeartbeatMessage(Message message); + + protected abstract void handleHeartbeatInvokeMessage(); + +} diff --git a/leader-election/src/main/java/com/iluwatar/leaderelection/AbstractMessageManager.java b/leader-election/src/main/java/com/iluwatar/leaderelection/AbstractMessageManager.java new file mode 100644 index 000000000000..4384da25f79d --- /dev/null +++ b/leader-election/src/main/java/com/iluwatar/leaderelection/AbstractMessageManager.java @@ -0,0 +1,73 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * Abstract class of all the message manager classes. + */ +public abstract class AbstractMessageManager implements MessageManager { + + /** + * Contain all the instances in the system. Key is its ID, and value is the instance itself. + */ + protected Map instanceMap; + + /** + * Construtor of AbstractMessageManager + */ + public AbstractMessageManager(Map instanceMap) { + this.instanceMap = instanceMap; + } + + /** + * Find the next instance with smallest ID. + * @return The next instance. + */ + protected Instance findNextInstance(int currentId) { + Instance result = null; + List candidateList = instanceMap.keySet() + .stream() + .filter((i) -> i > currentId && instanceMap.get(i).isAlive()) + .sorted() + .collect(Collectors.toList()); + if (candidateList.isEmpty()) { + int index = instanceMap.keySet() + .stream() + .filter((i) -> instanceMap.get(i).isAlive()) + .sorted() + .collect(Collectors.toList()) + .get(0); + result = instanceMap.get(index); + } else { + int index = candidateList.get(0); + result = instanceMap.get(index); + } + return result; + } + +} diff --git a/leader-election/src/main/java/com/iluwatar/leaderelection/Instance.java b/leader-election/src/main/java/com/iluwatar/leaderelection/Instance.java new file mode 100644 index 000000000000..abaa62791185 --- /dev/null +++ b/leader-election/src/main/java/com/iluwatar/leaderelection/Instance.java @@ -0,0 +1,49 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection; + +/** + * Instance interface + */ +public interface Instance { + + /** + * Check if the instance is alive or not. + * @return {@code true} if the instance is alive. + */ + boolean isAlive(); + + /** + * Set the health status of the certain instance. + * @param alive {@code true} for alive. + */ + void setAlive(boolean alive); + + /** + * Consume messages from other instances. + * @param message Message sent by other instances + */ + void onMessage(Message message); + +} diff --git a/leader-election/src/main/java/com/iluwatar/leaderelection/Message.java b/leader-election/src/main/java/com/iluwatar/leaderelection/Message.java new file mode 100644 index 000000000000..7ac79e4bcd46 --- /dev/null +++ b/leader-election/src/main/java/com/iluwatar/leaderelection/Message.java @@ -0,0 +1,76 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection; + +import java.util.Objects; + +/** + * Message used to transport data between instances. + */ +public class Message { + + private MessageType type; + + private String content; + + public Message() {} + + public Message(MessageType type, String content) { + this.type = type; + this.content = content; + } + + public MessageType getType() { + return type; + } + + public void setType(MessageType type) { + this.type = type; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Message message = (Message) o; + return type == message.type && Objects.equals(content, message.content); + } + + @Override + public int hashCode() { + return Objects.hash(type, content); + } +} diff --git a/leader-election/src/main/java/com/iluwatar/leaderelection/MessageManager.java b/leader-election/src/main/java/com/iluwatar/leaderelection/MessageManager.java new file mode 100644 index 000000000000..56e78a00856a --- /dev/null +++ b/leader-election/src/main/java/com/iluwatar/leaderelection/MessageManager.java @@ -0,0 +1,60 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection; + +/** + * MessageManager interface + */ +public interface MessageManager { + + /** + * Send heartbeat message to leader instance to check whether the leader instance is alive. + * @param leaderId Instance ID of leader instance. + * @return {@code true} if leader instance is alive, or {@code false} if not. + */ + boolean sendHeartbeatMessage(int leaderId); + + /** + * Send election message to other instances. + * @param currentId Instance ID of which sends this message. + * @param content Election message content. + * @return {@code true} if the message is accepted by the target instances. + */ + boolean sendElectionMessage(int currentId, String content); + + /** + * Send new leader notification message to other instances. + * @param currentId Instance ID of which sends this message. + * @param leaderId Leader message content. + * @return {@code true} if the message is accepted by the target instances. + */ + boolean sendLeaderMessage(int currentId, int leaderId); + + /** + * Send heartbeat invoke message. This will invoke heartbeat task in the target instance. + * @param currentId Instance ID of which sends this message. + */ + void sendHeartbeatInvokeMessage(int currentId); + +} diff --git a/leader-election/src/main/java/com/iluwatar/leaderelection/MessageType.java b/leader-election/src/main/java/com/iluwatar/leaderelection/MessageType.java new file mode 100644 index 000000000000..17f658ec4244 --- /dev/null +++ b/leader-election/src/main/java/com/iluwatar/leaderelection/MessageType.java @@ -0,0 +1,62 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection; + +/** + * Message Type enum + */ +public enum MessageType { + + /** + * Start the election. The content of the message stores ID(s) of the candidate instance(s). + */ + ELECTION, + + /** + * Nodify the new leader. The content of the message should be the leader ID. + */ + LEADER, + + /** + * Check health of current leader instance. + */ + HEARTBEAT, + + /** + * Inform target instance to start election. + */ + ELECTION_INVOKE, + + /** + * Inform target instance to notify all the other instance that it is the new leader. + */ + LEADER_INVOKE, + + /** + * Inform target instance to start heartbeat. + */ + HEARTBEAT_INVOKE + +} + diff --git a/leader-election/src/main/java/com/iluwatar/leaderelection/bully/BullyApp.java b/leader-election/src/main/java/com/iluwatar/leaderelection/bully/BullyApp.java new file mode 100644 index 000000000000..7355b34456a9 --- /dev/null +++ b/leader-election/src/main/java/com/iluwatar/leaderelection/bully/BullyApp.java @@ -0,0 +1,77 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection.bully; + +import com.iluwatar.leaderelection.Instance; +import com.iluwatar.leaderelection.Message; +import com.iluwatar.leaderelection.MessageManager; +import com.iluwatar.leaderelection.MessageType; + +import java.util.HashMap; +import java.util.Map; + +/** + * Example of how to use bully leader election. Initially 5 instances is created in the clould + * system, and the instance with ID 1 is set as leader. After the system is started stop the + * leader instance, and the new leader will be elected. + */ +public class BullyApp { + + /** + * Program entry point + */ + public static void main(String[] args) { + + Map instanceMap = new HashMap<>(); + MessageManager messageManager = new BullyMessageManager(instanceMap); + + BullyInstance instance1 = new BullyInstance(messageManager, 1, 1); + BullyInstance instance2 = new BullyInstance(messageManager, 2, 1); + BullyInstance instance3 = new BullyInstance(messageManager, 3, 1); + BullyInstance instance4 = new BullyInstance(messageManager, 4, 1); + BullyInstance instance5 = new BullyInstance(messageManager, 5, 1); + + instanceMap.put(1, instance1); + instanceMap.put(2, instance2); + instanceMap.put(3, instance3); + instanceMap.put(4, instance4); + instanceMap.put(5, instance5); + + instance4.onMessage(new Message(MessageType.HEARTBEAT_INVOKE, "")); + + Thread thread1 = new Thread(instance1); + Thread thread2 = new Thread(instance2); + Thread thread3 = new Thread(instance3); + Thread thread4 = new Thread(instance4); + Thread thread5 = new Thread(instance5); + + thread1.start(); + thread2.start(); + thread3.start(); + thread4.start(); + thread5.start(); + + instance1.setAlive(false); + } +} diff --git a/leader-election/src/main/java/com/iluwatar/leaderelection/bully/BullyInstance.java b/leader-election/src/main/java/com/iluwatar/leaderelection/bully/BullyInstance.java new file mode 100644 index 000000000000..70a9c60f341a --- /dev/null +++ b/leader-election/src/main/java/com/iluwatar/leaderelection/bully/BullyInstance.java @@ -0,0 +1,121 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection.bully; + +import com.iluwatar.leaderelection.AbstractInstance; +import com.iluwatar.leaderelection.Message; +import com.iluwatar.leaderelection.MessageManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Impelemetation with bully algorithm. Each instance should have a sequential id and is able to + * communicate with other instances in the system. Initially the instance with smallest (or largest) + * ID is selected to be the leader. All the other instances send heartbeat message to leader periodically + * to check its health. If one certain instance finds the server done, it will send an election message + * to all the instances of which the ID is larger. If the target instance is alive, it will return an + * alive message (in this sample return true) and then send election message with its ID. If not, + * the original instance will send leader message to all the other instances. + */ +public class BullyInstance extends AbstractInstance { + + private static final Logger LOGGER = LoggerFactory.getLogger(BullyInstance.class); + + /** + * Constructor of BullyInstance. + */ + public BullyInstance(MessageManager messageManager, int localId, int leaderId) { + super(messageManager, localId, leaderId); + } + + /** + * Process the heartbeat invoke message. After receiving the message, the instance will send a heartbeat + * to leader to check its health. If alive, it will inform the next instance to do the heartbeat. If not, + * it will start the election process. + */ + @Override + protected void handleHeartbeatInvokeMessage() { + try { + boolean isLeaderAlive = messageManager.sendHeartbeatMessage(leaderId); + if (isLeaderAlive) { + LOGGER.info("Instance " + localId + "- Leader is alive."); + Thread.sleep(HEARTBEAT_INTERVAL); + messageManager.sendHeartbeatInvokeMessage(localId); + } else { + LOGGER.info("Instance " + localId + "- Leader is not alive. Start election."); + boolean electionResult = messageManager.sendElectionMessage(localId, String.valueOf(localId)); + if (electionResult) { + LOGGER.info("Instance " + localId + "- Succeed in election. Start leader notification."); + messageManager.sendLeaderMessage(localId, localId); + } + } + } catch (InterruptedException e) { + LOGGER.info("Instance " + localId + "- Interrupted."); + } + } + + /** + * Process election invoke message. Send election message to all the instances with smaller ID. If any + * one of them is alive, do nothing. If no instance alive, send leader message to all the alive instance + * and restart heartbeat. + */ + @Override + protected void handleElectionInvokeMessage() { + if (!isLeader()) { + LOGGER.info("Instance " + localId + "- Start election."); + boolean electionResult = messageManager.sendElectionMessage(localId, String.valueOf(localId)); + if (electionResult) { + LOGGER.info("Instance " + localId + "- Succeed in election. Start leader notification."); + leaderId = localId; + messageManager.sendLeaderMessage(localId, localId); + messageManager.sendHeartbeatInvokeMessage(localId); + } + } + } + + /** + * Process leader message. Update local leader information. + */ + @Override + protected void handleLeaderMessage(Message message) { + leaderId = Integer.valueOf(message.getContent()); + LOGGER.info("Instance " + localId + " - Leader update done."); + } + + private boolean isLeader() { + return localId == leaderId; + } + + /** + * Not used in Bully instance. + */ + @Override + protected void handleLeaderInvokeMessage() {} + + @Override + protected void handleHeartbeatMessage(Message message) {} + + @Override + protected void handleElectionMessage(Message message) {} +} diff --git a/leader-election/src/main/java/com/iluwatar/leaderelection/bully/BullyMessageManager.java b/leader-election/src/main/java/com/iluwatar/leaderelection/bully/BullyMessageManager.java new file mode 100644 index 000000000000..3fcadefba2de --- /dev/null +++ b/leader-election/src/main/java/com/iluwatar/leaderelection/bully/BullyMessageManager.java @@ -0,0 +1,117 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection.bully; + +import com.iluwatar.leaderelection.AbstractMessageManager; +import com.iluwatar.leaderelection.Instance; +import com.iluwatar.leaderelection.Message; +import com.iluwatar.leaderelection.MessageType; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * Implementation of BullyMessageManager + */ +public class BullyMessageManager extends AbstractMessageManager { + + /** + * Constructor of BullyMessageManager. + */ + public BullyMessageManager(Map instanceMap) { + super(instanceMap); + } + + /** + * Send heartbeat message to current leader instance to check the health. + * @param leaderId leaderID + * @return {@code true} if the leader is alive. + */ + @Override + public boolean sendHeartbeatMessage(int leaderId) { + Instance leaderInstance = instanceMap.get(leaderId); + boolean alive = leaderInstance.isAlive(); + return alive; + } + + /** + * Send election message to all the instances with smaller ID. + * @param currentId Instance ID of which sends this message. + * @param content Election message content. + * @return {@code true} if no alive instance has smaller ID, so that the election is accepted. + */ + @Override + public boolean sendElectionMessage(int currentId, String content) { + List candidateList = findElectionCandidateInstanceList(currentId); + if (candidateList.isEmpty()) { + return true; + } else { + Message electionMessage = new Message(MessageType.ELECTION_INVOKE, ""); + candidateList.stream() + .forEach((i) -> instanceMap.get(i).onMessage(electionMessage)); + return false; + } + } + + /** + * Send leader message to all the instances to notify the new leader. + * @param currentId Instance ID of which sends this message. + * @param leaderId Leader message content. + * @return {@code true} if the message is accepted. + */ + @Override + public boolean sendLeaderMessage(int currentId, int leaderId) { + Message leaderMessage = new Message(MessageType.LEADER, String.valueOf(leaderId)); + instanceMap.keySet() + .stream() + .filter((i) -> i != currentId) + .forEach((i) -> instanceMap.get(i).onMessage(leaderMessage)); + return false; + } + + /** + * Send heartbeat invoke message to the next instance. + * @param currentId Instance ID of which sends this message. + */ + @Override + public void sendHeartbeatInvokeMessage(int currentId) { + Instance nextInstance = this.findNextInstance(currentId); + Message heartbeatInvokeMessage = new Message(MessageType.HEARTBEAT_INVOKE, ""); + nextInstance.onMessage(heartbeatInvokeMessage); + } + + /** + * Find all the alive instances with smaller ID than current instance. + * @param currentId ID of current instance. + * @return ID list of all the candidate instance. + */ + private List findElectionCandidateInstanceList(int currentId) { + return instanceMap.keySet() + .stream() + .filter((i) -> i < currentId && instanceMap.get(i).isAlive()) + .collect(Collectors.toList()); + } + +} diff --git a/leader-election/src/main/java/com/iluwatar/leaderelection/ring/RingApp.java b/leader-election/src/main/java/com/iluwatar/leaderelection/ring/RingApp.java new file mode 100644 index 000000000000..ade5bb70dc29 --- /dev/null +++ b/leader-election/src/main/java/com/iluwatar/leaderelection/ring/RingApp.java @@ -0,0 +1,77 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection.ring; + +import com.iluwatar.leaderelection.Instance; +import com.iluwatar.leaderelection.Message; +import com.iluwatar.leaderelection.MessageManager; +import com.iluwatar.leaderelection.MessageType; + +import java.util.HashMap; +import java.util.Map; + +/** + * Example of how to use ring leader election. Initially 5 instances is created in the clould + * system, and the instance with ID 1 is set as leader. After the system is started stop the + * leader instance, and the new leader will be elected. + */ +public class RingApp { + + /** + * Program entry point + */ + public static void main(String[] args) { + + Map instanceMap = new HashMap<>(); + MessageManager messageManager = new RingMessageManager(instanceMap); + + RingInstance instance1 = new RingInstance(messageManager, 1, 1); + RingInstance instance2 = new RingInstance(messageManager, 2, 1); + RingInstance instance3 = new RingInstance(messageManager, 3, 1); + RingInstance instance4 = new RingInstance(messageManager, 4, 1); + RingInstance instance5 = new RingInstance(messageManager, 5, 1); + + instanceMap.put(1, instance1); + instanceMap.put(2, instance2); + instanceMap.put(3, instance3); + instanceMap.put(4, instance4); + instanceMap.put(5, instance5); + + instance2.onMessage(new Message(MessageType.HEARTBEAT_INVOKE, "")); + + Thread thread1 = new Thread(instance1); + Thread thread2 = new Thread(instance2); + Thread thread3 = new Thread(instance3); + Thread thread4 = new Thread(instance4); + Thread thread5 = new Thread(instance5); + + thread1.start(); + thread2.start(); + thread3.start(); + thread4.start(); + thread5.start(); + + instance1.setAlive(false); + } +} diff --git a/leader-election/src/main/java/com/iluwatar/leaderelection/ring/RingInstance.java b/leader-election/src/main/java/com/iluwatar/leaderelection/ring/RingInstance.java new file mode 100644 index 000000000000..e3472e4b4669 --- /dev/null +++ b/leader-election/src/main/java/com/iluwatar/leaderelection/ring/RingInstance.java @@ -0,0 +1,133 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection.ring; + +import com.iluwatar.leaderelection.AbstractInstance; +import com.iluwatar.leaderelection.Message; +import com.iluwatar.leaderelection.MessageManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Implementation with token ring algorithm. The instances in the system are organized as a ring. + * Each instance should have a sequential id and the instance with smallest (or largest) id should + * be the initial leader. All the other instances send heartbeat message to leader periodically + * to check its health. If one certain instance finds the server done, it will send an election + * message to the next alive instance in the ring, which contains its own ID. Then the next instance + * add its ID into the message and pass it to the next. After all the alive instances' ID are add + * to the message, the message is send back to the first instance and it will choose the instance + * with smallest ID to be the new leader, and then send a leader message to other instances to + * inform the result. + */ +public class RingInstance extends AbstractInstance { + + private static final Logger LOGGER = LoggerFactory.getLogger(RingInstance.class); + + /** + * Constructor of RingInstance. + */ + public RingInstance(MessageManager messageManager, int localId, int leaderId) { + super(messageManager, localId, leaderId); + } + + /** + * Process the heartbeat invoke message. After receiving the message, the instance will send a heartbeat + * to leader to check its health. If alive, it will inform the next instance to do the heartbeat. If not, + * it will start the election process. + */ + @Override + protected void handleHeartbeatInvokeMessage() { + try { + boolean isLeaderAlive = messageManager.sendHeartbeatMessage(this.leaderId); + if (isLeaderAlive) { + LOGGER.info("Instance " + localId + "- Leader is alive. Start next heartbeat in 5 second."); + Thread.sleep(HEARTBEAT_INTERVAL); + messageManager.sendHeartbeatInvokeMessage(this.localId); + } else { + LOGGER.info("Instance " + localId + "- Leader is not alive. Start election."); + messageManager.sendElectionMessage(this.localId, String.valueOf(this.localId)); + } + } catch (InterruptedException e) { + LOGGER.info("Instance " + localId + "- Interrupted."); + } + } + + /** + * Process election message. If the local ID is contained in the ID list, the instance will select the + * alive instance with smallest ID to be the new leader, and send the leader inform message. If not, + * it will add its local ID to the list and send the message to the next instance in the ring. + */ + @Override + protected void handleElectionMessage(Message message) { + String content = message.getContent(); + LOGGER.info("Instance " + localId + " - Election Message: " + content); + List candidateList = + Arrays.stream(content.trim().split(",")) + .map(Integer::valueOf) + .sorted() + .collect(Collectors.toList()); + if (candidateList.contains(localId)) { + int newLeaderId = candidateList.get(0); + LOGGER.info("Instance " + localId + " - New leader should be " + newLeaderId + "."); + messageManager.sendLeaderMessage(localId, newLeaderId); + } else { + content += "," + localId; + messageManager.sendElectionMessage(localId, content); + } + } + + /** + * Process leader Message. The instance will set the leader ID to be the new one and send the message to + * the next instance until all the alive instance in the ring is informed. + */ + @Override + protected void handleLeaderMessage(Message message) { + int newLeaderId = Integer.valueOf(message.getContent()); + if (this.leaderId != newLeaderId) { + LOGGER.info("Instance " + localId + " - Update leaderID"); + this.leaderId = newLeaderId; + messageManager.sendLeaderMessage(localId, newLeaderId); + } else { + LOGGER.info("Instance " + localId + " - Leader update done. Start heartbeat."); + messageManager.sendHeartbeatInvokeMessage(localId); + } + } + + /** + * Not used in Ring instance. + */ + @Override + protected void handleLeaderInvokeMessage() {} + + @Override + protected void handleHeartbeatMessage(Message message) {} + + @Override + protected void handleElectionInvokeMessage() {} + +} diff --git a/leader-election/src/main/java/com/iluwatar/leaderelection/ring/RingMessageManager.java b/leader-election/src/main/java/com/iluwatar/leaderelection/ring/RingMessageManager.java new file mode 100644 index 000000000000..257a9f764d97 --- /dev/null +++ b/leader-election/src/main/java/com/iluwatar/leaderelection/ring/RingMessageManager.java @@ -0,0 +1,96 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection.ring; + +import com.iluwatar.leaderelection.AbstractMessageManager; +import com.iluwatar.leaderelection.Instance; +import com.iluwatar.leaderelection.Message; +import com.iluwatar.leaderelection.MessageType; + +import java.util.Map; + +/** + * Implementation of RingMessageManager + */ +public class RingMessageManager extends AbstractMessageManager { + + /** + * Constructor of RingMessageManager. + */ + public RingMessageManager(Map instanceMap) { + super(instanceMap); + } + + /** + * Send heartbeat message to current leader instance to check the health. + * @param leaderId leaderID + * @return {@code true} if the leader is alive. + */ + @Override + public boolean sendHeartbeatMessage(int leaderId) { + Instance leaderInstance = instanceMap.get(leaderId); + boolean alive = leaderInstance.isAlive(); + return alive; + } + + /** + * Send election message to the next instance. + * @param currentId currentID + * @param content list contains all the IDs of instances which have received this election message. + * @return {@code true} if the election message is accepted by the target instance. + */ + @Override + public boolean sendElectionMessage(int currentId, String content) { + Instance nextInstance = this.findNextInstance(currentId); + Message electionMessage = new Message(MessageType.ELECTION, content); + nextInstance.onMessage(electionMessage); + return true; + } + + /** + * Send leader message to the next instance. + * @param currentId Instance ID of which sends this message. + * @param leaderId Leader message content. + * @return {@code true} if the leader message is accepted by the target instance. + */ + @Override + public boolean sendLeaderMessage(int currentId, int leaderId) { + Instance nextInstance = this.findNextInstance(currentId); + Message leaderMessage = new Message(MessageType.LEADER, String.valueOf(leaderId)); + nextInstance.onMessage(leaderMessage); + return true; + } + + /** + * Send heartbeat invoke message to the next instance. + * @param currentId Instance ID of which sends this message. + */ + @Override + public void sendHeartbeatInvokeMessage(int currentId) { + Instance nextInstance = this.findNextInstance(currentId); + Message heartbeatInvokeMessage = new Message(MessageType.HEARTBEAT_INVOKE, ""); + nextInstance.onMessage(heartbeatInvokeMessage); + } + +} diff --git a/leader-election/src/test/java/com/iluwatar/leaderelection/MessageTest.java b/leader-election/src/test/java/com/iluwatar/leaderelection/MessageTest.java new file mode 100644 index 000000000000..3cd5b93d9fdd --- /dev/null +++ b/leader-election/src/test/java/com/iluwatar/leaderelection/MessageTest.java @@ -0,0 +1,48 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * Message test case. + */ +public class MessageTest { + + @Test + public void testGetType() { + Message message = new Message(MessageType.HEARTBEAT, ""); + assertEquals(MessageType.HEARTBEAT, message.getType()); + } + + @Test + public void testGetContent() { + String content = "test"; + Message message = new Message(MessageType.HEARTBEAT, content); + assertEquals(content, message.getContent()); + } + +} diff --git a/leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyAppTest.java b/leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyAppTest.java new file mode 100644 index 000000000000..b4b527d5a813 --- /dev/null +++ b/leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyAppTest.java @@ -0,0 +1,39 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection.bully; + +import org.junit.jupiter.api.Test; + +/** + * BullyApp unit test. + */ +public class BullyAppTest { + + @Test + public void test() { + String[] args = {}; + BullyApp.main(args); + } + +} diff --git a/leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyMessageManagerTest.java b/leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyMessageManagerTest.java new file mode 100644 index 000000000000..3a8e35b54abe --- /dev/null +++ b/leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyMessageManagerTest.java @@ -0,0 +1,151 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection.bully; + +import com.iluwatar.leaderelection.*; +import com.iluwatar.leaderelection.ring.RingInstance; +import com.iluwatar.leaderelection.ring.RingMessageManager; +import org.junit.jupiter.api.Test; + +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; +import java.util.Queue; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * BullyMessageManager unit test. + */ +public class BullyMessageManagerTest { + + @Test + public void testSendHeartbeatMessage() { + Instance instance1 = new BullyInstance(null, 1, 1); + Map instanceMap = new HashMap<>(); + instanceMap.put(1, instance1); + MessageManager messageManager = new BullyMessageManager(instanceMap); + assertTrue(messageManager.sendHeartbeatMessage(1)); + } + + @Test + public void testSendElectionMessageNotAccepted() { + try { + Instance instance1 = new BullyInstance(null, 1, 1); + Instance instance2 = new BullyInstance(null, 1, 2); + Instance instance3 = new BullyInstance(null, 1, 3); + Instance instance4 = new BullyInstance(null, 1, 4); + Map instanceMap = new HashMap<>(); + instanceMap.put(1, instance1); + instanceMap.put(2, instance2); + instanceMap.put(3, instance3); + instanceMap.put(4, instance4); + instance1.setAlive(false); + MessageManager messageManager = new BullyMessageManager(instanceMap); + boolean result = messageManager.sendElectionMessage(3, "3"); + Class instanceClass = AbstractInstance.class; + Field messageQueueField = instanceClass.getDeclaredField("messageQueue"); + messageQueueField.setAccessible(true); + Message message2 = ((Queue) messageQueueField.get(instance2)).poll(); + int instance4QueueSize = ((Queue) messageQueueField.get(instance4)).size(); + Message expectedMessage = new Message(MessageType.ELECTION_INVOKE, ""); + assertEquals(message2, expectedMessage); + assertEquals(instance4QueueSize, 0); + assertEquals(result, false); + } catch (IllegalAccessException | NoSuchFieldException e) { + fail("Error to access private field."); + } + } + + @Test + public void testElectionMessageAccepted() { + Instance instance1 = new BullyInstance(null, 1, 1); + Instance instance2 = new BullyInstance(null, 1, 2); + Instance instance3 = new BullyInstance(null, 1, 3); + Instance instance4 = new BullyInstance(null, 1, 4); + Map instanceMap = new HashMap<>(); + instanceMap.put(1, instance1); + instanceMap.put(2, instance2); + instanceMap.put(3, instance3); + instanceMap.put(4, instance4); + instance1.setAlive(false); + MessageManager messageManager = new BullyMessageManager(instanceMap); + boolean result = messageManager.sendElectionMessage(2, "2"); + assertEquals(result, true); + } + + @Test + public void testSendLeaderMessage() { + try { + Instance instance1 = new BullyInstance(null, 1, 1); + Instance instance2 = new BullyInstance(null, 1, 2); + Instance instance3 = new BullyInstance(null, 1, 3); + Instance instance4 = new BullyInstance(null, 1, 4); + Map instanceMap = new HashMap<>(); + instanceMap.put(1, instance1); + instanceMap.put(2, instance2); + instanceMap.put(3, instance3); + instanceMap.put(4, instance4); + instance1.setAlive(false); + MessageManager messageManager = new BullyMessageManager(instanceMap); + messageManager.sendLeaderMessage(2, 2); + Class instanceClass = AbstractInstance.class; + Field messageQueueField = instanceClass.getDeclaredField("messageQueue"); + messageQueueField.setAccessible(true); + Message message3 = ((Queue) messageQueueField.get(instance3)).poll(); + Message message4 = ((Queue) messageQueueField.get(instance4)).poll(); + Message expectedMessage = new Message(MessageType.LEADER, "2"); + assertEquals(message3, expectedMessage); + assertEquals(message4, expectedMessage); + } catch (IllegalAccessException | NoSuchFieldException e) { + fail("Error to access private field."); + } + } + + @Test + public void testSendHeartbeatInvokeMessage() { + try { + Instance instance1 = new BullyInstance(null, 1, 1); + Instance instance2 = new BullyInstance(null, 1, 2); + Instance instance3 = new BullyInstance(null, 1, 3); + Map instanceMap = new HashMap<>(); + instanceMap.put(1, instance1); + instanceMap.put(2, instance2); + instanceMap.put(3, instance3); + MessageManager messageManager = new BullyMessageManager(instanceMap); + messageManager.sendHeartbeatInvokeMessage(2); + Message message = new Message(MessageType.HEARTBEAT_INVOKE, ""); + Class instanceClass = AbstractInstance.class; + Field messageQueueField = instanceClass.getDeclaredField("messageQueue"); + messageQueueField.setAccessible(true); + Message messageSent = ((Queue) messageQueueField.get(instance3)).poll(); + assertEquals(messageSent.getType(), message.getType()); + assertEquals(messageSent.getContent(), message.getContent()); + } catch (NoSuchFieldException | IllegalAccessException e) { + fail("Error to access private field."); + } + } + + +} diff --git a/leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyinstanceTest.java b/leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyinstanceTest.java new file mode 100644 index 000000000000..7581a8af1247 --- /dev/null +++ b/leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyinstanceTest.java @@ -0,0 +1,78 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection.bully; + +import com.iluwatar.leaderelection.AbstractInstance; +import com.iluwatar.leaderelection.Message; +import com.iluwatar.leaderelection.MessageType; +import org.junit.jupiter.api.Test; + +import java.lang.reflect.Field; +import java.util.Queue; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * BullyInstance unit test. + */ +public class BullyinstanceTest { + + @Test + public void testOnMessage() { + try { + final BullyInstance bullyInstance = new BullyInstance(null, 1, 1); + Message bullyMessage = new Message(MessageType.HEARTBEAT, ""); + bullyInstance.onMessage(bullyMessage); + Class instanceClass = AbstractInstance.class; + Field messageQueueField = instanceClass.getDeclaredField("messageQueue"); + messageQueueField.setAccessible(true); + assertEquals(bullyMessage, ((Queue) messageQueueField.get(bullyInstance)).poll()); + } catch (IllegalAccessException | NoSuchFieldException e) { + fail("fail to access messasge queue."); + } + + } + + @Test + public void testIsAlive() { + try { + final BullyInstance bullyInstance = new BullyInstance(null, 1, 1); + Class instanceClass = AbstractInstance.class; + Field aliveField = instanceClass.getDeclaredField("alive"); + aliveField.setAccessible(true); + aliveField.set(bullyInstance, false); + assertFalse(bullyInstance.isAlive()); + } catch (NoSuchFieldException | IllegalAccessException e) { + fail("Fail to access field alive."); + } + } + + @Test + public void testSetAlive() { + final BullyInstance bullyInstance = new BullyInstance(null, 1, 1); + bullyInstance.setAlive(false); + assertFalse(bullyInstance.isAlive()); + } + +} diff --git a/leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingAppTest.java b/leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingAppTest.java new file mode 100644 index 000000000000..c6f50bc799fd --- /dev/null +++ b/leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingAppTest.java @@ -0,0 +1,39 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection.ring; + +import org.junit.jupiter.api.Test; + +/** + * RingApp unit test. + */ +public class RingAppTest { + + @Test + public void test() { + String[] args = {}; + RingApp.main(args); + } + +} diff --git a/leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingInstanceTest.java b/leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingInstanceTest.java new file mode 100644 index 000000000000..65c3916cc535 --- /dev/null +++ b/leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingInstanceTest.java @@ -0,0 +1,76 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection.ring; + +import com.iluwatar.leaderelection.AbstractInstance; +import com.iluwatar.leaderelection.Message; +import com.iluwatar.leaderelection.MessageType; +import org.junit.jupiter.api.Test; + +import java.lang.reflect.Field; +import java.util.Queue; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * RingInstance unit test. + */ +public class RingInstanceTest { + + @Test + public void testOnMessage() { + try { + final RingInstance ringInstance = new RingInstance(null, 1, 1); + Message ringMessage = new Message(MessageType.HEARTBEAT, ""); + ringInstance.onMessage(ringMessage); + Class ringInstanceClass = AbstractInstance.class; + Field messageQueueField = ringInstanceClass.getDeclaredField("messageQueue"); + messageQueueField.setAccessible(true); + assertEquals(ringMessage, ((Queue) messageQueueField.get(ringInstance)).poll()); + } catch (IllegalAccessException | NoSuchFieldException e) { + fail("fail to access messasge queue."); + } + } + + @Test + public void testIsAlive() { + try { + final RingInstance ringInstance = new RingInstance(null, 1, 1); + Class ringInstanceClass = AbstractInstance.class; + Field aliveField = ringInstanceClass.getDeclaredField("alive"); + aliveField.setAccessible(true); + aliveField.set(ringInstance, false); + assertFalse(ringInstance.isAlive()); + } catch (NoSuchFieldException | IllegalAccessException e) { + fail("Fail to access field alive."); + } + } + + @Test + public void testSetAlive() { + final RingInstance ringInstance = new RingInstance(null, 1, 1); + ringInstance.setAlive(false); + assertFalse(ringInstance.isAlive()); + } +} diff --git a/leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingMessageManagerTest.java b/leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingMessageManagerTest.java new file mode 100644 index 000000000000..64d5af69f5bb --- /dev/null +++ b/leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingMessageManagerTest.java @@ -0,0 +1,123 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.leaderelection.ring; + +import com.iluwatar.leaderelection.*; +import org.junit.jupiter.api.Test; + +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; +import java.util.Queue; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * RingMessageManager unit test. + */ +public class RingMessageManagerTest { + + @Test + public void testSendHeartbeatMessage() { + Instance instance1 = new RingInstance(null, 1, 1); + Map instanceMap = new HashMap<>(); + instanceMap.put(1, instance1); + MessageManager messageManager = new RingMessageManager(instanceMap); + assertTrue(messageManager.sendHeartbeatMessage(1)); + } + + @Test + public void testSendElectionMessage() { + try { + Instance instance1 = new RingInstance(null, 1, 1); + Instance instance2 = new RingInstance(null, 1, 2); + Instance instance3 = new RingInstance(null, 1, 3); + Map instanceMap = new HashMap<>(); + instanceMap.put(1, instance1); + instanceMap.put(2, instance2); + instanceMap.put(3, instance3); + MessageManager messageManager = new RingMessageManager(instanceMap); + String messageContent = "2"; + messageManager.sendElectionMessage(2, messageContent); + Message ringMessage = new Message(MessageType.ELECTION, messageContent); + Class instanceClass = AbstractInstance.class; + Field messageQueueField = instanceClass.getDeclaredField("messageQueue"); + messageQueueField.setAccessible(true); + Message ringMessageSent = ((Queue) messageQueueField.get(instance3)).poll(); + assertEquals(ringMessageSent.getType(), ringMessage.getType()); + assertEquals(ringMessageSent.getContent(), ringMessage.getContent()); + } catch (NoSuchFieldException | IllegalAccessException e) { + fail("Error to access private field."); + } + } + + @Test + public void testSendLeaderMessage() { + try { + Instance instance1 = new RingInstance(null, 1, 1); + Instance instance2 = new RingInstance(null, 1, 2); + Instance instance3 = new RingInstance(null, 1, 3); + Map instanceMap = new HashMap<>(); + instanceMap.put(1, instance1); + instanceMap.put(2, instance2); + instanceMap.put(3, instance3); + MessageManager messageManager = new RingMessageManager(instanceMap); + String messageContent = "3"; + messageManager.sendLeaderMessage(2, 3); + Message ringMessage = new Message(MessageType.LEADER, messageContent); + Class instanceClass = AbstractInstance.class; + Field messageQueueField = instanceClass.getDeclaredField("messageQueue"); + messageQueueField.setAccessible(true); + Message ringMessageSent = ((Queue) messageQueueField.get(instance3)).poll(); + assertEquals(ringMessageSent, ringMessage); + } catch (NoSuchFieldException | IllegalAccessException e) { + fail("Error to access private field."); + } + } + + @Test + public void testSendHeartbeatInvokeMessage() { + try { + Instance instance1 = new RingInstance(null, 1, 1); + Instance instance2 = new RingInstance(null, 1, 2); + Instance instance3 = new RingInstance(null, 1, 3); + Map instanceMap = new HashMap<>(); + instanceMap.put(1, instance1); + instanceMap.put(2, instance2); + instanceMap.put(3, instance3); + MessageManager messageManager = new RingMessageManager(instanceMap); + messageManager.sendHeartbeatInvokeMessage(2); + Message ringMessage = new Message(MessageType.HEARTBEAT_INVOKE, ""); + Class instanceClass = AbstractInstance.class; + Field messageQueueField = instanceClass.getDeclaredField("messageQueue"); + messageQueueField.setAccessible(true); + Message ringMessageSent = ((Queue) messageQueueField.get(instance3)).poll(); + assertEquals(ringMessageSent.getType(), ringMessage.getType()); + assertEquals(ringMessageSent.getContent(), ringMessage.getContent()); + } catch (NoSuchFieldException | IllegalAccessException e) { + fail("Error to access private field."); + } + } + +} diff --git a/pom.xml b/pom.xml index 39cfee91c241..d812d27c4c54 100644 --- a/pom.xml +++ b/pom.xml @@ -176,7 +176,9 @@ commander typeobjectpattern bytecode + leader-election data-locality + From 795b6be17d270e93ccfc871fa4976f052c33a181 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Fri, 11 Oct 2019 19:28:50 +0300 Subject: [PATCH 05/68] Configure Travis to build on JDK8 and JDK11 --- .travis.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index 58edddeb416e..2a82f6051f2c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,8 @@ language: java -dist: trusty # Xenial build environment won't allow installation of Java 8 +dist: xenial jdk: -- oraclejdk8 +- openjdk8 +- openjdk11 env: global: @@ -21,12 +22,6 @@ after_success: - mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent package sonar:sonar -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=$SONAR_TOKEN - bash update-ghpages.sh -# use latest java version available instead of travis default -addons: - apt: - packages: - - oracle-java8-installer - notifications: email: - iluwatar@gmail.com From 71f26c3e59f45d0e62b7137a75705a522d43cdec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Fri, 11 Oct 2019 19:37:28 +0300 Subject: [PATCH 06/68] Fix Travis xvfb --- .travis.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2a82f6051f2c..84b031fadcc1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,10 +9,9 @@ env: - GH_REF: github.com/iluwatar/java-design-patterns.git - secure: LxTDuNS/rBWIvKkaEqr79ImZAe48mCdoYCF41coxNXgNoippo4GIBArknqtv+XvdkiuRZ1yGyj6pn8GU33c/yn+krddTUkVCwTbVatbalW5jhQjDbHYym/JcxaK9ZS/3JTeGcWrBgiPqHEEDhCf26vPZsXoMSeVCEORVKTp1BSg= - secure: "eoWlW9GyTJY04P8K3pxayXwU9/hmptQg/LfirispQkV9YvmziCfSzXnatnBhNfud98sCzY8BScXnb+OWLTnjLKpId4rtEqb0aJ40Jc32cUKzgzFAUn7cNcDAbUIfyPAGVqyQqfj/11wYSADwWMMOPlW97ExUtoyiH2WenXuRHso=" - -before_install: -- export DISPLAY=:99.0 -- sh -e /etc/init.d/xvfb start + +services: +- xvfb # default install command is just "mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V" install: From e36bbbb22bad5e24c15ea2d185309033580f2ba8 Mon Sep 17 00:00:00 2001 From: lbroman Date: Fri, 11 Oct 2019 20:55:48 +0200 Subject: [PATCH 07/68] Maven profiles to support jdk 11 builds. #948 (#975) * Maven profiles to support jdk 11 builds. #948 Added maven profiles activated by jdk 11, wich will not break java 8 support. Bumped lombok and datanucleus enhancer as the old versions dont work with 11. * Fixed PMD issue when building naked-objects * Fixed the eip modules with xml dependencies. Previous dependency relaxing commit causes xml libs to go missing from some modules that actually needed them --- cqrs/pom.xml | 21 ++++++++++++++++ eip-aggregator/pom.xml | 20 +++++++++++++++ eip-splitter/pom.xml | 21 ++++++++++++++++ eip-wire-tap/pom.xml | 19 +++++++++++++++ naked-objects/dom/exclude-pmd.properties | 24 ++++++++++++++++++ naked-objects/dom/pom.xml | 2 +- naked-objects/integtests/pom.xml | 14 +++++++++++ pom.xml | 31 +++++++++++++++++++++++- service-layer/pom.xml | 18 ++++++++++++++ trampoline/pom.xml | 2 +- 10 files changed, 169 insertions(+), 3 deletions(-) create mode 100644 naked-objects/dom/exclude-pmd.properties diff --git a/cqrs/pom.xml b/cqrs/pom.xml index beb195473ced..fc89a93b7c79 100644 --- a/cqrs/pom.xml +++ b/cqrs/pom.xml @@ -39,4 +39,25 @@ hibernate-core + + + jdk11-deps + + [11,) + + + + com.sun.xml.bind + jaxb-impl + test + 2.1.17 + + + javax.xml.bind + jaxb-api + test + + + + diff --git a/eip-aggregator/pom.xml b/eip-aggregator/pom.xml index f56ae78deb73..39270f02097e 100644 --- a/eip-aggregator/pom.xml +++ b/eip-aggregator/pom.xml @@ -70,4 +70,24 @@ + + + + jdk11-deps + + [11,) + + + + com.sun.xml.bind + jaxb-impl + + + javax.xml.bind + jaxb-api + + + + + diff --git a/eip-splitter/pom.xml b/eip-splitter/pom.xml index 2bc3eec8402b..7319f651939c 100644 --- a/eip-splitter/pom.xml +++ b/eip-splitter/pom.xml @@ -70,4 +70,25 @@ + + + + jdk11-deps + + [11,) + + + + com.sun.xml.bind + jaxb-impl + + + javax.xml.bind + jaxb-api + + + + + + diff --git a/eip-wire-tap/pom.xml b/eip-wire-tap/pom.xml index efca8d3c4cfb..a9d30924204a 100644 --- a/eip-wire-tap/pom.xml +++ b/eip-wire-tap/pom.xml @@ -70,4 +70,23 @@ + + + + jdk11-deps + + [11,) + + + + com.sun.xml.bind + jaxb-impl + + + javax.xml.bind + jaxb-api + + + + diff --git a/naked-objects/dom/exclude-pmd.properties b/naked-objects/dom/exclude-pmd.properties new file mode 100644 index 000000000000..bda3929accc6 --- /dev/null +++ b/naked-objects/dom/exclude-pmd.properties @@ -0,0 +1,24 @@ +# +# The MIT License +# Copyright (c) 2014-2016 Ilkka Seppälä +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# + +domainapp.dom.modules.simple.QSimpleObject=UnusedFormalParameter \ No newline at end of file diff --git a/naked-objects/dom/pom.xml b/naked-objects/dom/pom.xml index 69365bd4b00a..039afc373727 100644 --- a/naked-objects/dom/pom.xml +++ b/naked-objects/dom/pom.xml @@ -78,7 +78,7 @@ true - 4.0.1 + 5.2.1 diff --git a/naked-objects/integtests/pom.xml b/naked-objects/integtests/pom.xml index c4dd52dcf652..f12f4ae1e368 100644 --- a/naked-objects/integtests/pom.xml +++ b/naked-objects/integtests/pom.xml @@ -122,6 +122,20 @@ --> + + + jdk11-deps + + [11,) + + + + javax.annotation + javax.annotation-api + + + + diff --git a/pom.xml b/pom.xml index d812d27c4c54..efeee185c788 100644 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,8 @@ 2.8.5 3.12.0 1.2.17 - 2.3.0 + 2.3.1 + 2.3.2 1.3.1 @@ -314,6 +315,11 @@ javax.annotation-api ${annotation-api.version} + + com.sun.xml.bind + jaxb-impl + ${jaxb-impl.version} + @@ -494,4 +500,27 @@ + + + jdk11-dep-management + + [11,) + + + + + org.javassist + javassist + 3.25.0-GA + + + javax.annotation + javax.annotation-api + 1.3.2 + + + + + + diff --git a/service-layer/pom.xml b/service-layer/pom.xml index 403a896a4613..4edd950740a8 100644 --- a/service-layer/pom.xml +++ b/service-layer/pom.xml @@ -52,4 +52,22 @@ test + + + jdk11-deps + + [11,) + + + + com.sun.xml.bind + jaxb-impl + + + javax.xml.bind + jaxb-api + + + + diff --git a/trampoline/pom.xml b/trampoline/pom.xml index 1e019ef31297..86726a1186bc 100644 --- a/trampoline/pom.xml +++ b/trampoline/pom.xml @@ -51,7 +51,7 @@ org.projectlombok lombok - 1.16.18 + 1.18.10 From 6faec9901a2380800aa50af538c8669539997176 Mon Sep 17 00:00:00 2001 From: lbroman Date: Sat, 12 Oct 2019 07:39:58 +0200 Subject: [PATCH 08/68] Bump java language to 11 (#980) * Moved java XML and annotations dependencies to project level instead of as profiles * Set compiler language level to 11 * Removed jdk8 from travis build * Kept java level 8 in naked-objects/dom for datanucleus enhancer, for now. --- .travis.yml | 1 - cqrs/pom.xml | 34 ++++++++++++-------------------- eip-aggregator/pom.xml | 28 +++++++++----------------- eip-splitter/pom.xml | 30 ++++++++++------------------ eip-wire-tap/pom.xml | 28 ++++++++++---------------- naked-objects/dom/pom.xml | 11 +++++++++++ naked-objects/integtests/pom.xml | 20 +++++-------------- pom.xml | 34 ++++++++------------------------ service-layer/pom.xml | 27 +++++++++---------------- 9 files changed, 75 insertions(+), 138 deletions(-) diff --git a/.travis.yml b/.travis.yml index 84b031fadcc1..45323dcfd457 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ language: java dist: xenial jdk: -- openjdk8 - openjdk11 env: diff --git a/cqrs/pom.xml b/cqrs/pom.xml index fc89a93b7c79..9c9458505aba 100644 --- a/cqrs/pom.xml +++ b/cqrs/pom.xml @@ -38,26 +38,18 @@ org.hibernate hibernate-core + + com.sun.xml.bind + jaxb-impl + test + 2.1.17 + + + javax.xml.bind + jaxb-api + test + + - - - jdk11-deps - - [11,) - - - - com.sun.xml.bind - jaxb-impl - test - 2.1.17 - - - javax.xml.bind - jaxb-api - test - - - - + diff --git a/eip-aggregator/pom.xml b/eip-aggregator/pom.xml index 39270f02097e..6a5e32845cfc 100644 --- a/eip-aggregator/pom.xml +++ b/eip-aggregator/pom.xml @@ -47,6 +47,15 @@ ${camel.version} + + com.sun.xml.bind + jaxb-impl + + + javax.xml.bind + jaxb-api + + com.github.sbrannen @@ -71,23 +80,4 @@ - - - jdk11-deps - - [11,) - - - - com.sun.xml.bind - jaxb-impl - - - javax.xml.bind - jaxb-api - - - - - diff --git a/eip-splitter/pom.xml b/eip-splitter/pom.xml index 7319f651939c..9769d08034a7 100644 --- a/eip-splitter/pom.xml +++ b/eip-splitter/pom.xml @@ -47,6 +47,16 @@ ${camel.version} + + com.sun.xml.bind + jaxb-impl + + + javax.xml.bind + jaxb-api + + + com.github.sbrannen @@ -71,24 +81,4 @@ - - - jdk11-deps - - [11,) - - - - com.sun.xml.bind - jaxb-impl - - - javax.xml.bind - jaxb-api - - - - - - diff --git a/eip-wire-tap/pom.xml b/eip-wire-tap/pom.xml index a9d30924204a..c96063418c46 100644 --- a/eip-wire-tap/pom.xml +++ b/eip-wire-tap/pom.xml @@ -47,6 +47,16 @@ ${camel.version} + + com.sun.xml.bind + jaxb-impl + + + javax.xml.bind + jaxb-api + + + com.github.sbrannen @@ -71,22 +81,4 @@ - - - jdk11-deps - - [11,) - - - - com.sun.xml.bind - jaxb-impl - - - javax.xml.bind - jaxb-api - - - - diff --git a/naked-objects/dom/pom.xml b/naked-objects/dom/pom.xml index 039afc373727..e816c76bbd78 100644 --- a/naked-objects/dom/pom.xml +++ b/naked-objects/dom/pom.xml @@ -36,6 +36,17 @@ + + + org.apache.maven.plugins + maven-compiler-plugin + ${compiler.version} + + 8 + 8 + + + diff --git a/naked-objects/integtests/pom.xml b/naked-objects/integtests/pom.xml index f12f4ae1e368..7365a71a9acb 100644 --- a/naked-objects/integtests/pom.xml +++ b/naked-objects/integtests/pom.xml @@ -90,6 +90,11 @@ hsqldb + + javax.annotation + javax.annotation-api + + - - - jdk11-deps - - [11,) - - - - javax.annotation - javax.annotation-api - - - - - diff --git a/pom.xml b/pom.xml index efeee185c788..b3756e1c06fb 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,7 @@ 1.2.17 2.3.1 2.3.2 - 1.3.1 + 1.3.2 abstract-factory @@ -320,6 +320,11 @@ jaxb-impl ${jaxb-impl.version} + + org.javassist + javassist + 3.25.0-GA + @@ -380,8 +385,8 @@ maven-compiler-plugin ${compiler.version} - 1.8 - 1.8 + 11 + 11 @@ -500,27 +505,4 @@ - - - jdk11-dep-management - - [11,) - - - - - org.javassist - javassist - 3.25.0-GA - - - javax.annotation - javax.annotation-api - 1.3.2 - - - - - - diff --git a/service-layer/pom.xml b/service-layer/pom.xml index 4edd950740a8..057a701341a7 100644 --- a/service-layer/pom.xml +++ b/service-layer/pom.xml @@ -41,6 +41,14 @@ com.h2database h2 + + com.sun.xml.bind + jaxb-impl + + + javax.xml.bind + jaxb-api + org.junit.jupiter junit-jupiter-engine @@ -52,22 +60,5 @@ test - - - jdk11-deps - - [11,) - - - - com.sun.xml.bind - jaxb-impl - - - javax.xml.bind - jaxb-api - - - - + From fcc1c0a27cbf92f07d4a2d9164598c883da74416 Mon Sep 17 00:00:00 2001 From: shumyk Date: Sat, 12 Oct 2019 12:58:48 +0300 Subject: [PATCH 09/68] [mvn] - Remove maven-pmd-plugin from the project (#977) (#979) --- exclude-pmd.properties | 27 --------------------------- pom.xml | 26 -------------------------- 2 files changed, 53 deletions(-) delete mode 100644 exclude-pmd.properties diff --git a/exclude-pmd.properties b/exclude-pmd.properties deleted file mode 100644 index 5a4bb138834e..000000000000 --- a/exclude-pmd.properties +++ /dev/null @@ -1,27 +0,0 @@ -# -# The MIT License -# Copyright (c) 2014-2016 Ilkka Seppälä -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# - -com.iluwatar.servicelayer.common.BaseEntity=UnusedPrivateField -com.iluwatar.doublechecked.locking.App=EmptyStatementNotInLoop,EmptyWhileStmt -com.iluwatar.doublechecked.locking.InventoryTest=EmptyStatementNotInLoop,EmptyWhileStmt -domainapp.dom.modules.simple.QSimpleObject=UnusedFormalParameter \ No newline at end of file diff --git a/pom.xml b/pom.xml index b3756e1c06fb..9b4672fb3b6e 100644 --- a/pom.xml +++ b/pom.xml @@ -54,7 +54,6 @@ 1.0.0 2.0.1 2.8.5 - 3.12.0 1.2.17 2.3.1 2.3.2 @@ -445,26 +444,6 @@ - - org.apache.maven.plugins - maven-pmd-plugin - ${pmd.version} - - true - 5 - true - - - - - check - - - exclude-pmd.properties - - - - com.mycila @@ -492,11 +471,6 @@ - - org.apache.maven.plugins - maven-pmd-plugin - ${pmd.version} - org.apache.maven.plugins maven-jxr-plugin From 9ebbc421dd96b84c50808ca8ac4a520042e73b8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Sat, 12 Oct 2019 20:05:54 +0300 Subject: [PATCH 10/68] Update license headers --- .sonarcloud.properties | 2 +- abstract-document/pom.xml | 2 +- .../abstractdocument/AbstractDocument.java | 8 ++-- .../com/iluwatar/abstractdocument/App.java | 8 ++-- .../iluwatar/abstractdocument/Document.java | 8 ++-- .../iluwatar/abstractdocument/domain/Car.java | 8 ++-- .../abstractdocument/domain/HasModel.java | 8 ++-- .../abstractdocument/domain/HasParts.java | 8 ++-- .../abstractdocument/domain/HasPrice.java | 8 ++-- .../abstractdocument/domain/HasType.java | 8 ++-- .../abstractdocument/domain/Part.java | 8 ++-- .../domain/enums/Property.java | 2 +- .../AbstractDocumentTest.java | 8 ++-- .../iluwatar/abstractdocument/AppTest.java | 8 ++-- .../iluwatar/abstractdocument/DomainTest.java | 8 ++-- abstract-factory/etc/presentation.html | 2 +- abstract-factory/pom.xml | 2 +- .../com/iluwatar/abstractfactory/App.java | 2 +- .../com/iluwatar/abstractfactory/Army.java | 2 +- .../com/iluwatar/abstractfactory/Castle.java | 2 +- .../com/iluwatar/abstractfactory/ElfArmy.java | 2 +- .../iluwatar/abstractfactory/ElfCastle.java | 2 +- .../com/iluwatar/abstractfactory/ElfKing.java | 2 +- .../abstractfactory/ElfKingdomFactory.java | 2 +- .../com/iluwatar/abstractfactory/King.java | 2 +- .../abstractfactory/KingdomFactory.java | 2 +- .../com/iluwatar/abstractfactory/OrcArmy.java | 2 +- .../iluwatar/abstractfactory/OrcCastle.java | 2 +- .../com/iluwatar/abstractfactory/OrcKing.java | 2 +- .../abstractfactory/OrcKingdomFactory.java | 2 +- .../abstractfactory/AbstractFactoryTest.java | 2 +- .../com/iluwatar/abstractfactory/AppTest.java | 2 +- acyclic-visitor/pom.xml | 2 +- .../acyclicvisitor/AllModemVisitor.java | 2 +- .../java/com/iluwatar/acyclicvisitor/App.java | 2 +- .../ConfigureForDosVisitor.java | 2 +- .../ConfigureForUnixVisitor.java | 2 +- .../com/iluwatar/acyclicvisitor/Hayes.java | 2 +- .../iluwatar/acyclicvisitor/HayesVisitor.java | 2 +- .../com/iluwatar/acyclicvisitor/Modem.java | 2 +- .../iluwatar/acyclicvisitor/ModemVisitor.java | 2 +- .../com/iluwatar/acyclicvisitor/Zoom.java | 2 +- .../iluwatar/acyclicvisitor/ZoomVisitor.java | 2 +- .../com/iluwatar/acyclicvisitor/AppTest.java | 2 +- .../ConfigureForDosVisitorTest.java | 2 +- .../ConfigureForUnixVisitorTest.java | 2 +- .../iluwatar/acyclicvisitor/HayesTest.java | 2 +- .../com/iluwatar/acyclicvisitor/ZoomTest.java | 2 +- adapter/pom.xml | 2 +- .../main/java/com/iluwatar/adapter/App.java | 2 +- .../java/com/iluwatar/adapter/Captain.java | 2 +- .../com/iluwatar/adapter/FishingBoat.java | 2 +- .../iluwatar/adapter/FishingBoatAdapter.java | 2 +- .../java/com/iluwatar/adapter/RowingBoat.java | 2 +- .../iluwatar/adapter/AdapterPatternTest.java | 2 +- .../java/com/iluwatar/adapter/AppTest.java | 2 +- .../aggregator-service/pom.xml | 2 +- .../aggregator/microservices/Aggregator.java | 8 ++-- .../aggregator/microservices/App.java | 8 ++-- .../aggregator/microservices/Product.java | 8 ++-- .../ProductInformationClient.java | 8 ++-- .../ProductInformationClientImpl.java | 8 ++-- .../microservices/ProductInventoryClient.java | 8 ++-- .../ProductInventoryClientImpl.java | 8 ++-- .../src/main/resources/application.properties | 2 +- .../microservices/AggregatorTest.java | 8 ++-- .../information-microservice/pom.xml | 2 +- .../microservice/InformationApplication.java | 8 ++-- .../microservice/InformationController.java | 8 ++-- .../src/main/resources/application.properties | 2 +- .../InformationControllerTest.java | 8 ++-- .../inventory-microservice/pom.xml | 2 +- .../microservice/InventoryApplication.java | 8 ++-- .../microservice/InventoryController.java | 8 ++-- .../src/main/resources/application.properties | 2 +- .../microservice/InventoryControllerTest.java | 8 ++-- aggregator-microservices/pom.xml | 2 +- ambassador/pom.xml | 2 +- .../java/com/iluwatar/ambassador/App.java | 2 +- .../java/com/iluwatar/ambassador/Client.java | 2 +- .../iluwatar/ambassador/RemoteService.java | 2 +- .../ambassador/RemoteServiceInterface.java | 2 +- .../ambassador/ServiceAmbassador.java | 2 +- .../ambassador/util/RandomProvider.java | 2 +- .../java/com/iluwatar/ambassador/AppTest.java | 2 +- .../com/iluwatar/ambassador/ClientTest.java | 2 +- .../ambassador/RemoteServiceTest.java | 2 +- .../ambassador/ServiceAmbassadorTest.java | 2 +- api-gateway/api-gateway-service/pom.xml | 2 +- .../com/iluwatar/api/gateway/ApiGateway.java | 2 +- .../java/com/iluwatar/api/gateway/App.java | 2 +- .../iluwatar/api/gateway/DesktopProduct.java | 2 +- .../com/iluwatar/api/gateway/ImageClient.java | 2 +- .../iluwatar/api/gateway/ImageClientImpl.java | 2 +- .../iluwatar/api/gateway/MobileProduct.java | 2 +- .../com/iluwatar/api/gateway/PriceClient.java | 2 +- .../iluwatar/api/gateway/PriceClientImpl.java | 2 +- .../src/main/resources/application.properties | 2 +- .../iluwatar/api/gateway/ApiGatewayTest.java | 2 +- api-gateway/image-microservice/pom.xml | 2 +- .../image/microservice/ImageApplication.java | 2 +- .../image/microservice/ImageController.java | 2 +- .../src/main/resources/application.properties | 2 +- .../microservice/ImageControllerTest.java | 2 +- api-gateway/pom.xml | 2 +- api-gateway/price-microservice/pom.xml | 2 +- .../price/microservice/PriceApplication.java | 2 +- .../price/microservice/PriceController.java | 2 +- .../src/main/resources/application.properties | 2 +- .../microservice/PriceControllerTest.java | 2 +- async-method-invocation/pom.xml | 2 +- .../iluwatar/async/method/invocation/App.java | 2 +- .../method/invocation/AsyncCallback.java | 2 +- .../method/invocation/AsyncExecutor.java | 2 +- .../async/method/invocation/AsyncResult.java | 2 +- .../invocation/ThreadAsyncExecutor.java | 2 +- .../async/method/invocation/AppTest.java | 2 +- .../invocation/ThreadAsyncExecutorTest.java | 2 +- balking/pom.xml | 2 +- .../main/java/com/iluwatar/balking/App.java | 8 ++-- .../com/iluwatar/balking/DelayProvider.java | 2 +- .../com/iluwatar/balking/WashingMachine.java | 8 ++-- .../iluwatar/balking/WashingMachineState.java | 8 ++-- .../java/com/iluwatar/balking/AppTest.java | 9 ++--- .../iluwatar/balking/WashingMachineTest.java | 8 ++-- bridge/pom.xml | 2 +- .../main/java/com/iluwatar/bridge/App.java | 2 +- .../java/com/iluwatar/bridge/Enchantment.java | 2 +- .../iluwatar/bridge/FlyingEnchantment.java | 2 +- .../main/java/com/iluwatar/bridge/Hammer.java | 2 +- .../bridge/SoulEatingEnchantment.java | 2 +- .../main/java/com/iluwatar/bridge/Sword.java | 2 +- .../main/java/com/iluwatar/bridge/Weapon.java | 2 +- .../java/com/iluwatar/bridge/AppTest.java | 2 +- .../java/com/iluwatar/bridge/HammerTest.java | 2 +- .../java/com/iluwatar/bridge/SwordTest.java | 2 +- .../java/com/iluwatar/bridge/WeaponTest.java | 2 +- builder/pom.xml | 2 +- .../main/java/com/iluwatar/builder/App.java | 2 +- .../main/java/com/iluwatar/builder/Armor.java | 2 +- .../java/com/iluwatar/builder/HairColor.java | 2 +- .../java/com/iluwatar/builder/HairType.java | 2 +- .../main/java/com/iluwatar/builder/Hero.java | 2 +- .../java/com/iluwatar/builder/Profession.java | 2 +- .../java/com/iluwatar/builder/Weapon.java | 2 +- .../java/com/iluwatar/builder/AppTest.java | 2 +- .../java/com/iluwatar/builder/HeroTest.java | 2 +- business-delegate/pom.xml | 2 +- .../com/iluwatar/business/delegate/App.java | 2 +- .../business/delegate/BusinessDelegate.java | 2 +- .../business/delegate/BusinessLookup.java | 2 +- .../business/delegate/BusinessService.java | 2 +- .../iluwatar/business/delegate/Client.java | 2 +- .../business/delegate/EjbService.java | 2 +- .../business/delegate/JmsService.java | 2 +- .../business/delegate/ServiceType.java | 2 +- .../iluwatar/business/delegate/AppTest.java | 2 +- .../delegate/BusinessDelegateTest.java | 2 +- bytecode/pom.xml | 2 +- .../main/java/com/iluwatar/bytecode/App.java | 2 +- .../com/iluwatar/bytecode/Instruction.java | 2 +- .../com/iluwatar/bytecode/VirtualMachine.java | 2 +- .../java/com/iluwatar/bytecode/Wizard.java | 2 +- .../util/InstructionConverterUtil.java | 2 +- .../java/com/iluwatar/bytecode/AppTest.java | 2 +- .../iluwatar/bytecode/VirtualMachineTest.java | 2 +- .../util/InstructionConverterUtilTest.java | 2 +- caching/pom.xml | 2 +- .../main/java/com/iluwatar/caching/App.java | 2 +- .../java/com/iluwatar/caching/AppManager.java | 2 +- .../java/com/iluwatar/caching/CacheStore.java | 2 +- .../com/iluwatar/caching/CachingPolicy.java | 2 +- .../java/com/iluwatar/caching/DbManager.java | 2 +- .../java/com/iluwatar/caching/LruCache.java | 2 +- .../com/iluwatar/caching/UserAccount.java | 2 +- .../caching/constants/CachingConstants.java | 2 +- .../java/com/iluwatar/caching/AppTest.java | 2 +- .../com/iluwatar/caching/CachingTest.java | 2 +- callback/pom.xml | 2 +- .../main/java/com/iluwatar/callback/App.java | 2 +- .../java/com/iluwatar/callback/Callback.java | 2 +- .../com/iluwatar/callback/LambdasApp.java | 2 +- .../com/iluwatar/callback/SimpleTask.java | 2 +- .../main/java/com/iluwatar/callback/Task.java | 2 +- .../java/com/iluwatar/callback/AppTest.java | 2 +- .../com/iluwatar/callback/CallbackTest.java | 2 +- chain/pom.xml | 2 +- .../src/main/java/com/iluwatar/chain/App.java | 2 +- .../java/com/iluwatar/chain/OrcCommander.java | 2 +- .../main/java/com/iluwatar/chain/OrcKing.java | 2 +- .../java/com/iluwatar/chain/OrcOfficer.java | 2 +- .../java/com/iluwatar/chain/OrcSoldier.java | 2 +- .../main/java/com/iluwatar/chain/Request.java | 2 +- .../com/iluwatar/chain/RequestHandler.java | 2 +- .../java/com/iluwatar/chain/RequestType.java | 2 +- .../test/java/com/iluwatar/chain/AppTest.java | 2 +- .../java/com/iluwatar/chain/OrcKingTest.java | 2 +- checkstyle-suppressions.xml | 2 +- checkstyle.xml | 2 +- collection-pipeline/pom.xml | 2 +- .../com/iluwatar/collectionpipeline/App.java | 2 +- .../com/iluwatar/collectionpipeline/Car.java | 2 +- .../collectionpipeline/CarFactory.java | 2 +- .../iluwatar/collectionpipeline/Category.java | 2 +- .../FunctionalProgramming.java | 2 +- .../ImperativeProgramming.java | 2 +- .../iluwatar/collectionpipeline/Person.java | 2 +- .../iluwatar/collectionpipeline/AppTest.java | 2 +- command/etc/presentation.html | 2 +- command/pom.xml | 2 +- .../main/java/com/iluwatar/command/App.java | 2 +- .../java/com/iluwatar/command/Command.java | 2 +- .../java/com/iluwatar/command/Goblin.java | 2 +- .../iluwatar/command/InvisibilitySpell.java | 2 +- .../com/iluwatar/command/ShrinkSpell.java | 2 +- .../main/java/com/iluwatar/command/Size.java | 2 +- .../java/com/iluwatar/command/Target.java | 2 +- .../java/com/iluwatar/command/Visibility.java | 2 +- .../java/com/iluwatar/command/Wizard.java | 2 +- .../java/com/iluwatar/command/AppTest.java | 2 +- .../com/iluwatar/command/CommandTest.java | 2 +- commander/pom.xml | 2 +- commander/properties/log4j.properties | 2 +- .../commander/AppEmployeeDbFailCases.java | 3 +- .../commander/AppMessagingFailCases.java | 3 +- .../commander/AppPaymentFailCases.java | 3 +- .../iluwatar/commander/AppQueueFailCases.java | 3 +- .../commander/AppShippingFailCases.java | 3 +- .../com/iluwatar/commander/Commander.java | 3 +- .../java/com/iluwatar/commander/Database.java | 3 +- .../java/com/iluwatar/commander/Order.java | 3 +- .../java/com/iluwatar/commander/Retry.java | 3 +- .../java/com/iluwatar/commander/Service.java | 3 +- .../java/com/iluwatar/commander/User.java | 3 +- .../employeehandle/EmployeeDatabase.java | 3 +- .../employeehandle/EmployeeHandle.java | 3 +- .../DatabaseUnavailableException.java | 3 +- .../exceptions/IsEmptyException.java | 3 +- .../exceptions/ItemUnavailableException.java | 3 +- .../PaymentDetailsErrorException.java | 3 +- .../ShippingNotPossibleException.java | 3 +- .../messagingservice/MessagingDatabase.java | 3 +- .../messagingservice/MessagingService.java | 3 +- .../paymentservice/PaymentDatabase.java | 3 +- .../paymentservice/PaymentService.java | 3 +- .../com/iluwatar/commander/queue/Queue.java | 3 +- .../commander/queue/QueueDatabase.java | 3 +- .../iluwatar/commander/queue/QueueTask.java | 3 +- .../shippingservice/ShippingDatabase.java | 3 +- .../shippingservice/ShippingService.java | 3 +- .../com/iluwatar/commander/RetryTest.java | 3 +- composite/pom.xml | 2 +- .../main/java/com/iluwatar/composite/App.java | 2 +- .../java/com/iluwatar/composite/Letter.java | 2 +- .../iluwatar/composite/LetterComposite.java | 2 +- .../com/iluwatar/composite/Messenger.java | 2 +- .../java/com/iluwatar/composite/Sentence.java | 2 +- .../java/com/iluwatar/composite/Word.java | 2 +- .../java/com/iluwatar/composite/AppTest.java | 2 +- .../com/iluwatar/composite/MessengerTest.java | 2 +- converter/pom.xml | 2 +- .../main/java/com/iluwatar/converter/App.java | 8 ++-- .../com/iluwatar/converter/Converter.java | 9 ++--- .../java/com/iluwatar/converter/User.java | 9 ++--- .../com/iluwatar/converter/UserConverter.java | 9 ++--- .../java/com/iluwatar/converter/UserDto.java | 9 ++--- .../java/com/iluwatar/converter/AppTest.java | 2 +- .../com/iluwatar/converter/ConverterTest.java | 2 +- cqrs/pom.xml | 39 ++++++++++++------- .../main/java/com/iluwatar/cqrs/app/App.java | 2 +- .../cqrs/commandes/CommandServiceImpl.java | 2 +- .../cqrs/commandes/ICommandService.java | 2 +- .../iluwatar/cqrs/constants/AppConstants.java | 2 +- .../iluwatar/cqrs/domain/model/Author.java | 2 +- .../com/iluwatar/cqrs/domain/model/Book.java | 2 +- .../java/com/iluwatar/cqrs/dto/Author.java | 2 +- .../main/java/com/iluwatar/cqrs/dto/Book.java | 2 +- .../iluwatar/cqrs/queries/IQueryService.java | 2 +- .../cqrs/queries/QueryServiceImpl.java | 2 +- .../com/iluwatar/cqrs/util/HibernateUtil.java | 2 +- cqrs/src/main/resources/hibernate.cfg.xml | 2 +- cqrs/src/main/resources/logback.xml | 2 +- .../com/iluwatar/cqrs/IntegrationTest.java | 2 +- cqrs/src/test/resources/hibernate.cfg.xml | 2 +- cqrs/src/test/resources/logback.xml | 2 +- dao/pom.xml | 2 +- dao/src/main/java/com/iluwatar/dao/App.java | 3 +- .../com/iluwatar/dao/CustomException.java | 2 +- .../main/java/com/iluwatar/dao/Customer.java | 3 +- .../java/com/iluwatar/dao/CustomerDao.java | 3 +- .../com/iluwatar/dao/CustomerSchemaSql.java | 2 +- .../java/com/iluwatar/dao/DbCustomerDao.java | 3 +- .../com/iluwatar/dao/InMemoryCustomerDao.java | 3 +- dao/src/main/resources/log4j.xml | 2 +- .../test/java/com/iluwatar/dao/AppTest.java | 3 +- .../java/com/iluwatar/dao/CustomerTest.java | 3 +- .../com/iluwatar/dao/DbCustomerDaoTest.java | 2 +- .../iluwatar/dao/InMemoryCustomerDaoTest.java | 3 +- data-bus/pom.xml | 2 +- .../iluwatar/databus/AbstractDataType.java | 2 +- .../main/java/com/iluwatar/databus/App.java | 9 ++--- .../java/com/iluwatar/databus/DataBus.java | 9 ++--- .../java/com/iluwatar/databus/DataType.java | 2 +- .../java/com/iluwatar/databus/Member.java | 2 +- .../iluwatar/databus/data/MessageData.java | 9 ++--- .../iluwatar/databus/data/StartingData.java | 9 ++--- .../iluwatar/databus/data/StoppingData.java | 9 ++--- .../members/MessageCollectorMember.java | 9 ++--- .../databus/members/StatusMember.java | 9 ++--- .../com/iluwatar/databus/DataBusTest.java | 2 +- .../members/MessageCollectorMemberTest.java | 2 +- .../databus/members/StatusMemberTest.java | 2 +- data-locality/pom.xml | 2 +- .../iluwatar/data/locality/Application.java | 2 +- .../data/locality/game/GameEntity.java | 2 +- .../locality/game/component/AiComponent.java | 2 +- .../locality/game/component/Component.java | 2 +- .../game/component/PhysicsComponent.java | 2 +- .../game/component/RenderComponent.java | 2 +- .../component/manager/AiComponentManager.java | 2 +- .../manager/PhysicsComponentManager.java | 2 +- .../manager/RenderComponentManager.java | 2 +- .../data/locality/ApplicationTest.java | 8 ++-- data-mapper/pom.xml | 2 +- .../java/com/iluwatar/datamapper/App.java | 28 +++++++------ .../datamapper/DataMapperException.java | 28 +++++++------ .../java/com/iluwatar/datamapper/Student.java | 28 +++++++------ .../datamapper/StudentDataMapper.java | 28 +++++++------ .../datamapper/StudentDataMapperImpl.java | 28 +++++++------ data-mapper/src/main/resources/log4j.xml | 2 +- .../java/com/iluwatar/datamapper/AppTest.java | 28 +++++++------ .../iluwatar/datamapper/DataMapperTest.java | 28 +++++++------ .../com/iluwatar/datamapper/StudentTest.java | 28 +++++++------ data-transfer-object/pom.xml | 2 +- .../datatransfer/CustomerClientApp.java | 16 ++++---- .../iluwatar/datatransfer/CustomerDto.java | 16 ++++---- .../datatransfer/CustomerResource.java | 16 ++++---- .../datatransfer/CustomerResourceTest.java | 16 ++++---- decorator/pom.xml | 2 +- .../main/java/com/iluwatar/decorator/App.java | 2 +- .../com/iluwatar/decorator/ClubbedTroll.java | 2 +- .../com/iluwatar/decorator/SimpleTroll.java | 2 +- .../java/com/iluwatar/decorator/Troll.java | 2 +- .../java/com/iluwatar/decorator/AppTest.java | 2 +- .../iluwatar/decorator/ClubbedTrollTest.java | 2 +- .../iluwatar/decorator/SimpleTrollTest.java | 2 +- delegation/pom.xml | 3 +- .../com/iluwatar/delegation/simple/App.java | 2 +- .../iluwatar/delegation/simple/Printer.java | 2 +- .../delegation/simple/PrinterController.java | 2 +- .../simple/printers/CanonPrinter.java | 2 +- .../simple/printers/EpsonPrinter.java | 2 +- .../delegation/simple/printers/HpPrinter.java | 2 +- .../iluwatar/delegation/simple/AppTest.java | 2 +- .../delegation/simple/DelegateTest.java | 2 +- dependency-injection/pom.xml | 2 +- .../injection/AdvancedSorceress.java | 2 +- .../dependency/injection/AdvancedWizard.java | 2 +- .../iluwatar/dependency/injection/App.java | 8 ++-- .../dependency/injection/GuiceWizard.java | 2 +- .../dependency/injection/OldTobyTobacco.java | 2 +- .../injection/RivendellTobacco.java | 2 +- .../injection/SecondBreakfastTobacco.java | 2 +- .../dependency/injection/SimpleWizard.java | 2 +- .../dependency/injection/Tobacco.java | 2 +- .../dependency/injection/TobaccoModule.java | 2 +- .../iluwatar/dependency/injection/Wizard.java | 2 +- .../injection/AdvancedSorceressTest.java | 8 ++-- .../injection/AdvancedWizardTest.java | 2 +- .../dependency/injection/AppTest.java | 2 +- .../dependency/injection/GuiceWizardTest.java | 2 +- .../injection/SimpleWizardTest.java | 2 +- .../injection/utils/InMemoryAppender.java | 2 +- dirty-flag/pom.xml | 2 +- .../main/java/com/iluwatar/dirtyflag/App.java | 8 ++-- .../com/iluwatar/dirtyflag/DataFetcher.java | 2 +- .../java/com/iluwatar/dirtyflag/World.java | 2 +- dirty-flag/src/main/resources/world.txt | 2 +- .../src/test/java/org/dirty/flag/AppTest.java | 2 +- .../java/org/dirty/flag/DirtyFlagTest.java | 2 +- double-checked-locking/pom.xml | 2 +- .../iluwatar/doublechecked/locking/App.java | 2 +- .../doublechecked/locking/Inventory.java | 2 +- .../iluwatar/doublechecked/locking/Item.java | 2 +- .../src/main/resources/logback.xml | 2 +- .../doublechecked/locking/AppTest.java | 2 +- .../doublechecked/locking/InventoryTest.java | 2 +- double-dispatch/pom.xml | 2 +- .../java/com/iluwatar/doubledispatch/App.java | 2 +- .../doubledispatch/FlamingAsteroid.java | 2 +- .../iluwatar/doubledispatch/GameObject.java | 2 +- .../iluwatar/doubledispatch/Meteoroid.java | 2 +- .../iluwatar/doubledispatch/Rectangle.java | 2 +- .../doubledispatch/SpaceStationIss.java | 2 +- .../doubledispatch/SpaceStationMir.java | 2 +- .../constants/AppConstants.java | 2 +- .../com/iluwatar/doubledispatch/AppTest.java | 2 +- .../doubledispatch/CollisionTest.java | 2 +- .../doubledispatch/FlamingAsteroidTest.java | 2 +- .../doubledispatch/MeteoroidTest.java | 2 +- .../doubledispatch/RectangleTest.java | 2 +- .../doubledispatch/SpaceStationIssTest.java | 2 +- .../doubledispatch/SpaceStationMirTest.java | 2 +- eip-aggregator/pom.xml | 7 +++- .../java/com/iluwatar/eip/aggregator/App.java | 2 +- .../aggregator/routes/AggregatorRoute.java | 2 +- .../routes/MessageAggregationStrategy.java | 2 +- .../src/main/resources/application.properties | 2 +- .../com/iluwatar/eip/aggregator/AppTest.java | 2 +- .../routes/AggregatorRouteTest.java | 2 +- .../MessageAggregationStrategyTest.java | 2 +- .../resources/application-test.properties | 2 +- eip-message-channel/pom.xml | 2 +- .../com/iluwatar/eip/message/channel/App.java | 2 +- .../iluwatar/eip/message/channel/AppTest.java | 2 +- eip-publish-subscribe/pom.xml | 2 +- .../iluwatar/eip/publish/subscribe/App.java | 2 +- .../src/main/resources/logback.xml | 2 +- .../eip/publish/subscribe/AppTest.java | 2 +- eip-splitter/pom.xml | 7 +++- .../java/com/iluwatar/eip/splitter/App.java | 2 +- .../eip/splitter/routes/SplitterRoute.java | 2 +- .../src/main/resources/application.properties | 2 +- .../com/iluwatar/eip/splitter/AppTest.java | 2 +- .../splitter/routes/SplitterRouteTest.java | 2 +- .../resources/application-test.properties | 2 +- eip-wire-tap/pom.xml | 7 +++- .../java/com/iluwatar/eip/wiretap/App.java | 2 +- .../eip/wiretap/routes/WireTapRoute.java | 2 +- .../src/main/resources/application.properties | 2 +- .../com/iluwatar/eip/wiretap/AppTest.java | 2 +- .../eip/wiretap/routes/WireTapRouteTest.java | 2 +- .../resources/application-test.properties | 2 +- event-aggregator/pom.xml | 2 +- .../com/iluwatar/event/aggregator/App.java | 2 +- .../com/iluwatar/event/aggregator/Event.java | 2 +- .../event/aggregator/EventEmitter.java | 2 +- .../event/aggregator/EventObserver.java | 2 +- .../event/aggregator/KingJoffrey.java | 2 +- .../iluwatar/event/aggregator/KingsHand.java | 2 +- .../event/aggregator/LordBaelish.java | 2 +- .../iluwatar/event/aggregator/LordVarys.java | 2 +- .../com/iluwatar/event/aggregator/Scout.java | 2 +- .../iluwatar/event/aggregator/Weekday.java | 2 +- .../iluwatar/event/aggregator/AppTest.java | 2 +- .../event/aggregator/EventEmitterTest.java | 2 +- .../iluwatar/event/aggregator/EventTest.java | 2 +- .../event/aggregator/KingJoffreyTest.java | 2 +- .../event/aggregator/KingsHandTest.java | 2 +- .../event/aggregator/LordBaelishTest.java | 2 +- .../event/aggregator/LordVarysTest.java | 2 +- .../iluwatar/event/aggregator/ScoutTest.java | 2 +- .../event/aggregator/WeekdayTest.java | 2 +- event-asynchronous/pom.xml | 2 +- .../com/iluwatar/event/asynchronous/App.java | 28 +++++++------ .../iluwatar/event/asynchronous/Event.java | 28 +++++++------ .../EventDoesNotExistException.java | 28 +++++++------ .../event/asynchronous/EventManager.java | 28 +++++++------ .../iluwatar/event/asynchronous/IEvent.java | 28 +++++++------ .../InvalidOperationException.java | 28 +++++++------ .../LongRunningEventException.java | 28 +++++++------ .../MaxNumOfEventsAllowedException.java | 28 +++++++------ .../asynchronous/ThreadCompleteListener.java | 28 +++++++------ .../src/main/resources/config.properties | 2 +- .../iluwatar/event/asynchronous/AppTest.java | 28 +++++++------ .../asynchronous/EventAsynchronousTest.java | 28 +++++++------ event-driven-architecture/pom.xml | 2 +- .../src/main/java/com/iluwatar/eda/App.java | 2 +- .../com/iluwatar/eda/event/AbstractEvent.java | 2 +- .../iluwatar/eda/event/UserCreatedEvent.java | 2 +- .../iluwatar/eda/event/UserUpdatedEvent.java | 2 +- .../com/iluwatar/eda/framework/Event.java | 2 +- .../eda/framework/EventDispatcher.java | 2 +- .../com/iluwatar/eda/framework/Handler.java | 2 +- .../eda/handler/UserCreatedEventHandler.java | 2 +- .../eda/handler/UserUpdatedEventHandler.java | 2 +- .../java/com/iluwatar/eda/model/User.java | 2 +- .../test/java/com/iluwatar/eda/AppTest.java | 2 +- .../eda/event/UserCreatedEventTest.java | 2 +- .../eda/framework/EventDispatcherTest.java | 2 +- event-queue/pom.xml | 2 +- .../java/com/iluwatar/event/queue/App.java | 3 +- .../java/com/iluwatar/event/queue/Audio.java | 3 +- .../com/iluwatar/event/queue/PlayMessage.java | 3 +- .../com/iluwatar/event/queue/AudioTest.java | 3 +- event-sourcing/pom.xml | 2 +- .../com/iluwatar/event/sourcing/app/App.java | 2 +- .../event/sourcing/domain/Account.java | 2 +- .../sourcing/event/AccountCreateEvent.java | 2 +- .../event/sourcing/event/DomainEvent.java | 2 +- .../sourcing/event/MoneyDepositEvent.java | 2 +- .../sourcing/event/MoneyTransferEvent.java | 2 +- .../processor/DomainEventProcessor.java | 2 +- .../sourcing/processor/JsonFileJournal.java | 2 +- .../sourcing/state/AccountAggregate.java | 2 +- .../src/test/java/IntegrationTest.java | 3 +- execute-around/pom.xml | 2 +- .../java/com/iluwatar/execute/around/App.java | 2 +- .../execute/around/FileWriterAction.java | 2 +- .../execute/around/SimpleFileWriter.java | 2 +- .../com/iluwatar/execute/around/AppTest.java | 2 +- .../execute/around/SimpleFileWriterTest.java | 2 +- extension-objects/pom.xml | 2 +- extension-objects/src/main/java/App.java | 2 +- .../CommanderExtension.java | 2 +- .../abstractextensions/SergeantExtension.java | 2 +- .../abstractextensions/SoldierExtension.java | 2 +- .../abstractextensions/UnitExtension.java | 2 +- .../java/concreteextensions/Commander.java | 2 +- .../java/concreteextensions/Sergeant.java | 2 +- .../main/java/concreteextensions/Soldier.java | 2 +- .../src/main/java/units/CommanderUnit.java | 2 +- .../src/main/java/units/SergeantUnit.java | 2 +- .../src/main/java/units/SoldierUnit.java | 2 +- .../src/main/java/units/Unit.java | 2 +- extension-objects/src/test/java/AppTest.java | 3 +- .../concreteextensions/CommanderTest.java | 2 +- .../java/concreteextensions/SergeantTest.java | 2 +- .../java/concreteextensions/SoldierTest.java | 2 +- .../test/java/units/CommanderUnitTest.java | 2 +- .../src/test/java/units/SergeantUnitTest.java | 2 +- .../src/test/java/units/SoldierUnitTest.java | 2 +- .../src/test/java/units/UnitTest.java | 2 +- facade/pom.xml | 2 +- .../main/java/com/iluwatar/facade/App.java | 2 +- .../iluwatar/facade/DwarvenCartOperator.java | 2 +- .../iluwatar/facade/DwarvenGoldDigger.java | 2 +- .../facade/DwarvenGoldmineFacade.java | 2 +- .../iluwatar/facade/DwarvenMineWorker.java | 2 +- .../iluwatar/facade/DwarvenTunnelDigger.java | 2 +- .../java/com/iluwatar/facade/AppTest.java | 2 +- .../facade/DwarvenGoldmineFacadeTest.java | 2 +- factory-kit/pom.xml | 2 +- .../java/com/iluwatar/factorykit/App.java | 2 +- .../java/com/iluwatar/factorykit/Axe.java | 2 +- .../java/com/iluwatar/factorykit/Bow.java | 2 +- .../java/com/iluwatar/factorykit/Builder.java | 2 +- .../java/com/iluwatar/factorykit/Spear.java | 2 +- .../java/com/iluwatar/factorykit/Sword.java | 2 +- .../java/com/iluwatar/factorykit/Weapon.java | 2 +- .../iluwatar/factorykit/WeaponFactory.java | 2 +- .../com/iluwatar/factorykit/WeaponType.java | 2 +- .../com/iluwatar/factorykit/app/AppTest.java | 2 +- .../factorykit/factorykit/FactoryKitTest.java | 4 +- factory-method/etc/presentation.html | 2 +- factory-method/pom.xml | 2 +- .../java/com/iluwatar/factory/method/App.java | 2 +- .../iluwatar/factory/method/Blacksmith.java | 2 +- .../factory/method/ElfBlacksmith.java | 2 +- .../iluwatar/factory/method/ElfWeapon.java | 2 +- .../factory/method/OrcBlacksmith.java | 2 +- .../iluwatar/factory/method/OrcWeapon.java | 2 +- .../com/iluwatar/factory/method/Weapon.java | 2 +- .../iluwatar/factory/method/WeaponType.java | 2 +- .../com/iluwatar/factory/method/AppTest.java | 2 +- .../factory/method/FactoryMethodTest.java | 2 +- feature-toggle/pom.xml | 3 +- .../java/com/iluwatar/featuretoggle/App.java | 9 ++--- .../featuretoggle/pattern/Service.java | 8 ++-- .../PropertiesFeatureToggleVersion.java | 8 ++-- .../TieredFeatureToggleVersion.java | 8 ++-- .../com/iluwatar/featuretoggle/user/User.java | 8 ++-- .../featuretoggle/user/UserGroup.java | 8 ++-- .../PropertiesFeatureToggleVersionTest.java | 9 ++--- .../TieredFeatureToggleVersionTest.java | 8 ++-- .../featuretoggle/user/UserGroupTest.java | 8 ++-- fluentinterface/pom.xml | 2 +- .../com/iluwatar/fluentinterface/app/App.java | 2 +- .../fluentiterable/FluentIterable.java | 2 +- .../lazy/DecoratingIterator.java | 2 +- .../lazy/LazyFluentIterable.java | 2 +- .../simple/SimpleFluentIterable.java | 2 +- .../iluwatar/fluentinterface/app/AppTest.java | 2 +- .../fluentiterable/FluentIterableTest.java | 2 +- .../lazy/LazyFluentIterableTest.java | 2 +- .../simple/SimpleFluentIterableTest.java | 2 +- flux/pom.xml | 2 +- .../java/com/iluwatar/flux/action/Action.java | 2 +- .../com/iluwatar/flux/action/ActionType.java | 2 +- .../com/iluwatar/flux/action/Content.java | 2 +- .../iluwatar/flux/action/ContentAction.java | 2 +- .../com/iluwatar/flux/action/MenuAction.java | 2 +- .../com/iluwatar/flux/action/MenuItem.java | 2 +- .../main/java/com/iluwatar/flux/app/App.java | 2 +- .../iluwatar/flux/dispatcher/Dispatcher.java | 2 +- .../com/iluwatar/flux/store/ContentStore.java | 2 +- .../com/iluwatar/flux/store/MenuStore.java | 2 +- .../java/com/iluwatar/flux/store/Store.java | 2 +- .../com/iluwatar/flux/view/ContentView.java | 2 +- .../java/com/iluwatar/flux/view/MenuView.java | 2 +- .../java/com/iluwatar/flux/view/View.java | 2 +- .../com/iluwatar/flux/action/ContentTest.java | 2 +- .../iluwatar/flux/action/MenuItemTest.java | 2 +- .../java/com/iluwatar/flux/app/AppTest.java | 2 +- .../flux/dispatcher/DispatcherTest.java | 2 +- .../iluwatar/flux/store/ContentStoreTest.java | 2 +- .../iluwatar/flux/store/MenuStoreTest.java | 2 +- .../iluwatar/flux/view/ContentViewTest.java | 2 +- .../com/iluwatar/flux/view/MenuViewTest.java | 2 +- flyweight/pom.xml | 2 +- .../com/iluwatar/flyweight/AlchemistShop.java | 2 +- .../main/java/com/iluwatar/flyweight/App.java | 2 +- .../com/iluwatar/flyweight/HealingPotion.java | 2 +- .../iluwatar/flyweight/HolyWaterPotion.java | 2 +- .../flyweight/InvisibilityPotion.java | 2 +- .../com/iluwatar/flyweight/PoisonPotion.java | 2 +- .../java/com/iluwatar/flyweight/Potion.java | 2 +- .../com/iluwatar/flyweight/PotionFactory.java | 2 +- .../com/iluwatar/flyweight/PotionType.java | 2 +- .../iluwatar/flyweight/StrengthPotion.java | 2 +- .../iluwatar/flyweight/AlchemistShopTest.java | 2 +- .../java/com/iluwatar/flyweight/AppTest.java | 2 +- front-controller/pom.xml | 2 +- .../com/iluwatar/front/controller/App.java | 2 +- .../controller/ApplicationException.java | 2 +- .../front/controller/ArcherCommand.java | 2 +- .../iluwatar/front/controller/ArcherView.java | 2 +- .../front/controller/CatapultCommand.java | 2 +- .../front/controller/CatapultView.java | 2 +- .../iluwatar/front/controller/Command.java | 2 +- .../iluwatar/front/controller/ErrorView.java | 2 +- .../front/controller/FrontController.java | 2 +- .../front/controller/UnknownCommand.java | 2 +- .../com/iluwatar/front/controller/View.java | 2 +- .../iluwatar/front/controller/AppTest.java | 2 +- .../controller/ApplicationExceptionTest.java | 2 +- .../front/controller/CommandTest.java | 2 +- .../front/controller/FrontControllerTest.java | 2 +- .../iluwatar/front/controller/ViewTest.java | 2 +- .../controller/utils/InMemoryAppender.java | 2 +- guarded-suspension/pom.xml | 2 +- .../com/iluwatar/guarded/suspension/App.java | 2 +- .../guarded/suspension/GuardedQueue.java | 8 ++-- .../guarded/suspension/GuardedQueueTest.java | 8 ++-- half-sync-half-async/pom.xml | 2 +- .../com/iluwatar/halfsynchalfasync/App.java | 2 +- .../iluwatar/halfsynchalfasync/AsyncTask.java | 2 +- .../AsynchronousService.java | 2 +- .../iluwatar/halfsynchalfasync/AppTest.java | 2 +- .../AsynchronousServiceTest.java | 2 +- hexagonal/etc/ports_and_adapters.xml | 2 +- hexagonal/etc/presentation.html | 2 +- hexagonal/pom.xml | 2 +- .../main/java/com/iluwatar/hexagonal/App.java | 2 +- .../administration/ConsoleAdministration.java | 2 +- .../ConsoleAdministrationSrv.java | 2 +- .../ConsoleAdministrationSrvImpl.java | 2 +- .../hexagonal/banking/InMemoryBank.java | 2 +- .../iluwatar/hexagonal/banking/MongoBank.java | 2 +- .../hexagonal/banking/WireTransfers.java | 2 +- .../database/InMemoryTicketRepository.java | 2 +- .../database/LotteryTicketRepository.java | 2 +- .../database/MongoTicketRepository.java | 2 +- .../domain/LotteryAdministration.java | 2 +- .../hexagonal/domain/LotteryConstants.java | 2 +- .../hexagonal/domain/LotteryNumbers.java | 2 +- .../hexagonal/domain/LotteryService.java | 2 +- .../hexagonal/domain/LotteryTicket.java | 2 +- .../domain/LotteryTicketCheckResult.java | 2 +- .../hexagonal/domain/LotteryTicketId.java | 2 +- .../hexagonal/domain/LotteryUtils.java | 2 +- .../hexagonal/domain/PlayerDetails.java | 2 +- .../hexagonal/eventlog/LotteryEventLog.java | 2 +- .../hexagonal/eventlog/MongoEventLog.java | 2 +- .../hexagonal/eventlog/StdOutEventLog.java | 2 +- .../hexagonal/module/LotteryModule.java | 2 +- .../module/LotteryTestingModule.java | 2 +- .../MongoConnectionPropertiesLoader.java | 2 +- .../hexagonal/sampledata/SampleData.java | 2 +- .../hexagonal/service/ConsoleLottery.java | 2 +- .../service/LotteryConsoleService.java | 2 +- .../service/LotteryConsoleServiceImpl.java | 2 +- .../java/com/iluwatar/hexagonal/AppTest.java | 2 +- .../hexagonal/banking/InMemoryBankTest.java | 2 +- .../hexagonal/banking/MongoBankTest.java | 2 +- .../InMemoryTicketRepositoryTest.java | 2 +- .../database/MongoTicketRepositoryTest.java | 2 +- .../hexagonal/domain/LotteryNumbersTest.java | 2 +- .../hexagonal/domain/LotteryTest.java | 2 +- .../domain/LotteryTicketCheckResultTest.java | 2 +- .../hexagonal/domain/LotteryTicketIdTest.java | 2 +- .../hexagonal/domain/LotteryTicketTest.java | 2 +- .../hexagonal/domain/PlayerDetailsTest.java | 2 +- .../hexagonal/eventlog/MongoEventLogTest.java | 2 +- .../hexagonal/test/LotteryTestUtils.java | 2 +- intercepting-filter/pom.xml | 2 +- .../intercepting/filter/AbstractFilter.java | 2 +- .../intercepting/filter/AddressFilter.java | 2 +- .../com/iluwatar/intercepting/filter/App.java | 2 +- .../iluwatar/intercepting/filter/Client.java | 2 +- .../intercepting/filter/ContactFilter.java | 2 +- .../intercepting/filter/DepositFilter.java | 2 +- .../iluwatar/intercepting/filter/Filter.java | 2 +- .../intercepting/filter/FilterChain.java | 2 +- .../intercepting/filter/FilterManager.java | 2 +- .../intercepting/filter/NameFilter.java | 2 +- .../iluwatar/intercepting/filter/Order.java | 2 +- .../intercepting/filter/OrderFilter.java | 2 +- .../iluwatar/intercepting/filter/Target.java | 2 +- .../iluwatar/intercepting/filter/AppTest.java | 2 +- .../filter/FilterManagerTest.java | 2 +- .../intercepting/filter/FilterTest.java | 2 +- .../intercepting/filter/OrderTest.java | 2 +- interpreter/pom.xml | 2 +- .../java/com/iluwatar/interpreter/App.java | 2 +- .../com/iluwatar/interpreter/Expression.java | 2 +- .../iluwatar/interpreter/MinusExpression.java | 2 +- .../interpreter/MultiplyExpression.java | 2 +- .../interpreter/NumberExpression.java | 2 +- .../iluwatar/interpreter/PlusExpression.java | 2 +- .../com/iluwatar/interpreter/AppTest.java | 2 +- .../iluwatar/interpreter/ExpressionTest.java | 2 +- .../interpreter/MinusExpressionTest.java | 2 +- .../interpreter/MultiplyExpressionTest.java | 2 +- .../interpreter/NumberExpressionTest.java | 2 +- .../interpreter/PlusExpressionTest.java | 2 +- iterator/pom.xml | 2 +- .../main/java/com/iluwatar/iterator/App.java | 28 +++++++------ .../java/com/iluwatar/iterator/Iterator.java | 28 +++++++------ .../iluwatar/iterator/bst/BstIterator.java | 28 +++++++------ .../com/iluwatar/iterator/bst/TreeNode.java | 28 +++++++------ .../java/com/iluwatar/iterator/list/Item.java | 2 +- .../com/iluwatar/iterator/list/ItemType.java | 2 +- .../iluwatar/iterator/list/TreasureChest.java | 28 +++++++------ .../list/TreasureChestItemIterator.java | 28 +++++++------ .../java/com/iluwatar/iterator/AppTest.java | 35 +++++++++-------- .../iterator/bst/BstIteratorTest.java | 28 +++++++------ .../iterator/list/TreasureChestTest.java | 28 +++++++------ layers/pom.xml | 2 +- .../main/java/com/iluwatar/layers/App.java | 2 +- .../main/java/com/iluwatar/layers/Cake.java | 2 +- .../iluwatar/layers/CakeBakingException.java | 2 +- .../iluwatar/layers/CakeBakingService.java | 2 +- .../layers/CakeBakingServiceImpl.java | 2 +- .../java/com/iluwatar/layers/CakeDao.java | 2 +- .../java/com/iluwatar/layers/CakeInfo.java | 2 +- .../java/com/iluwatar/layers/CakeLayer.java | 2 +- .../com/iluwatar/layers/CakeLayerDao.java | 2 +- .../com/iluwatar/layers/CakeLayerInfo.java | 2 +- .../java/com/iluwatar/layers/CakeTopping.java | 2 +- .../com/iluwatar/layers/CakeToppingDao.java | 2 +- .../com/iluwatar/layers/CakeToppingInfo.java | 2 +- .../com/iluwatar/layers/CakeViewImpl.java | 2 +- .../main/java/com/iluwatar/layers/View.java | 2 +- .../main/resources/META-INF/persistence.xml | 2 +- .../src/main/resources/applicationContext.xml | 2 +- layers/src/main/resources/logback.xml | 2 +- .../java/com/iluwatar/layers/AppTest.java | 2 +- .../layers/CakeBakingExceptionTest.java | 2 +- .../layers/CakeBakingServiceImplTest.java | 2 +- .../java/com/iluwatar/layers/CakeTest.java | 2 +- .../com/iluwatar/layers/CakeViewImplTest.java | 2 +- lazy-loading/pom.xml | 2 +- .../java/com/iluwatar/lazy/loading/App.java | 2 +- .../java/com/iluwatar/lazy/loading/Heavy.java | 2 +- .../iluwatar/lazy/loading/HolderNaive.java | 2 +- .../lazy/loading/HolderThreadSafe.java | 2 +- .../iluwatar/lazy/loading/Java8Holder.java | 2 +- .../lazy/loading/AbstractHolderTest.java | 2 +- .../com/iluwatar/lazy/loading/AppTest.java | 2 +- .../lazy/loading/HolderNaiveTest.java | 2 +- .../lazy/loading/HolderThreadSafeTest.java | 2 +- .../lazy/loading/Java8HolderTest.java | 2 +- leader-election/pom.xml | 4 +- .../leaderelection/AbstractInstance.java | 9 ++--- .../AbstractMessageManager.java | 9 ++--- .../com/iluwatar/leaderelection/Instance.java | 3 +- .../com/iluwatar/leaderelection/Message.java | 3 +- .../leaderelection/MessageManager.java | 3 +- .../iluwatar/leaderelection/MessageType.java | 3 +- .../leaderelection/bully/BullyApp.java | 9 ++--- .../leaderelection/bully/BullyInstance.java | 9 ++--- .../bully/BullyMessageManager.java | 9 ++--- .../iluwatar/leaderelection/ring/RingApp.java | 3 +- .../leaderelection/ring/RingInstance.java | 3 +- .../ring/RingMessageManager.java | 3 +- .../iluwatar/leaderelection/MessageTest.java | 9 ++--- .../leaderelection/bully/BullyAppTest.java | 9 ++--- .../bully/BullyMessageManagerTest.java | 9 ++--- .../bully/BullyinstanceTest.java | 9 ++--- .../leaderelection/ring/RingAppTest.java | 9 ++--- .../leaderelection/ring/RingInstanceTest.java | 9 ++--- .../ring/RingMessageManagerTest.java | 9 ++--- marker/pom.xml | 7 +++- marker/src/main/java/App.java | 2 +- marker/src/main/java/Guard.java | 2 +- marker/src/main/java/Permission.java | 2 +- marker/src/main/java/Thief.java | 2 +- marker/src/test/java/AppTest.java | 3 +- marker/src/test/java/GuardTest.java | 3 +- marker/src/test/java/ThiefTest.java | 3 +- master-worker-pattern/pom.xml | 2 +- .../java/com/iluwatar/masterworker/App.java | 3 +- .../com/iluwatar/masterworker/ArrayInput.java | 3 +- .../iluwatar/masterworker/ArrayResult.java | 3 +- .../masterworker/ArrayUtilityMethods.java | 3 +- .../java/com/iluwatar/masterworker/Input.java | 3 +- .../com/iluwatar/masterworker/Result.java | 3 +- .../system/ArrayTransposeMasterWorker.java | 3 +- .../masterworker/system/MasterWorker.java | 3 +- .../systemmaster/ArrayTransposeMaster.java | 3 +- .../system/systemmaster/Master.java | 3 +- .../systemworkers/ArrayTransposeWorker.java | 3 +- .../system/systemworkers/Worker.java | 3 +- .../iluwatar/masterworker/ArrayInputTest.java | 3 +- .../masterworker/ArrayUtilityMethodsTest.java | 2 +- .../ArrayTransposeMasterWorkerTest.java | 3 +- .../ArrayTransposeWorkerTest.java | 3 +- mediator/pom.xml | 2 +- .../java/com/iluwatar/mediator/Action.java | 2 +- .../main/java/com/iluwatar/mediator/App.java | 2 +- .../java/com/iluwatar/mediator/Hobbit.java | 2 +- .../java/com/iluwatar/mediator/Hunter.java | 2 +- .../java/com/iluwatar/mediator/Party.java | 2 +- .../java/com/iluwatar/mediator/PartyImpl.java | 2 +- .../com/iluwatar/mediator/PartyMember.java | 2 +- .../iluwatar/mediator/PartyMemberBase.java | 2 +- .../java/com/iluwatar/mediator/Rogue.java | 2 +- .../java/com/iluwatar/mediator/Wizard.java | 2 +- .../java/com/iluwatar/mediator/AppTest.java | 2 +- .../com/iluwatar/mediator/PartyImplTest.java | 2 +- .../iluwatar/mediator/PartyMemberTest.java | 2 +- memento/pom.xml | 2 +- .../main/java/com/iluwatar/memento/App.java | 2 +- .../main/java/com/iluwatar/memento/Star.java | 2 +- .../com/iluwatar/memento/StarMemento.java | 2 +- .../java/com/iluwatar/memento/StarType.java | 2 +- .../java/com/iluwatar/memento/AppTest.java | 2 +- .../java/com/iluwatar/memento/StarTest.java | 2 +- model-view-controller/pom.xml | 2 +- .../iluwatar/model/view/controller/App.java | 2 +- .../model/view/controller/Fatigue.java | 2 +- .../view/controller/GiantController.java | 2 +- .../model/view/controller/GiantModel.java | 2 +- .../model/view/controller/GiantView.java | 2 +- .../model/view/controller/Health.java | 2 +- .../model/view/controller/Nourishment.java | 2 +- .../model/view/controller/AppTest.java | 2 +- .../view/controller/GiantControllerTest.java | 2 +- .../model/view/controller/GiantModelTest.java | 2 +- .../model/view/controller/GiantViewTest.java | 2 +- model-view-presenter/etc/data/test.txt | 2 +- model-view-presenter/pom.xml | 2 +- .../iluwatar/model/view/presenter/App.java | 2 +- .../model/view/presenter/FileLoader.java | 2 +- .../view/presenter/FileSelectorJFrame.java | 2 +- .../view/presenter/FileSelectorPresenter.java | 2 +- .../view/presenter/FileSelectorStub.java | 2 +- .../view/presenter/FileSelectorView.java | 2 +- .../model/view/presenter/AppTest.java | 2 +- .../model/view/presenter/FileLoaderTest.java | 2 +- .../presenter/FileSelectorPresenterTest.java | 2 +- module/pom.xml | 2 +- .../main/java/com/iluwatar/module/App.java | 28 +++++++------ .../iluwatar/module/ConsoleLoggerModule.java | 28 +++++++------ .../com/iluwatar/module/FileLoggerModule.java | 28 +++++++------ module/src/main/resources/log4j.xml | 2 +- .../java/com/iluwatar/module/AppTest.java | 28 +++++++------ .../iluwatar/module/FileLoggerModuleTest.java | 28 +++++++------ monad/pom.xml | 2 +- .../src/main/java/com/iluwatar/monad/App.java | 2 +- .../src/main/java/com/iluwatar/monad/Sex.java | 2 +- .../main/java/com/iluwatar/monad/User.java | 2 +- .../java/com/iluwatar/monad/Validator.java | 2 +- .../test/java/com/iluwatar/monad/AppTest.java | 2 +- .../java/com/iluwatar/monad/MonadTest.java | 2 +- monostate/pom.xml | 2 +- .../main/java/com/iluwatar/monostate/App.java | 2 +- .../com/iluwatar/monostate/LoadBalancer.java | 2 +- .../java/com/iluwatar/monostate/Request.java | 2 +- .../java/com/iluwatar/monostate/Server.java | 2 +- .../java/com/iluwatar/monostate/AppTest.java | 2 +- .../iluwatar/monostate/LoadBalancerTest.java | 2 +- multiton/pom.xml | 2 +- .../main/java/com/iluwatar/multiton/App.java | 2 +- .../java/com/iluwatar/multiton/Nazgul.java | 2 +- .../com/iluwatar/multiton/NazgulEnum.java | 2 +- .../com/iluwatar/multiton/NazgulName.java | 2 +- .../java/com/iluwatar/multiton/AppTest.java | 2 +- .../com/iluwatar/multiton/NazgulEnumTest.java | 2 +- .../com/iluwatar/multiton/NazgulTest.java | 2 +- mute-idiom/pom.xml | 39 ++++++++++++------- .../src/main/java/com/iluwatar/mute/App.java | 3 +- .../com/iluwatar/mute/CheckedRunnable.java | 3 +- .../src/main/java/com/iluwatar/mute/Mute.java | 2 +- .../main/java/com/iluwatar/mute/Resource.java | 3 +- .../test/java/com/iluwatar/mute/AppTest.java | 3 +- .../test/java/com/iluwatar/mute/MuteTest.java | 3 +- mutex/pom.xml | 2 +- .../src/main/java/com/iluwatar/mutex/App.java | 2 +- .../src/main/java/com/iluwatar/mutex/Jar.java | 2 +- .../main/java/com/iluwatar/mutex/Lock.java | 2 +- .../main/java/com/iluwatar/mutex/Mutex.java | 2 +- .../main/java/com/iluwatar/mutex/Thief.java | 2 +- .../test/java/com/iluwatar/mutex/AppTest.java | 2 +- .../test/java/com/iluwatar/mutex/JarTest.java | 2 +- .../java/com/iluwatar/mutex/MutexTest.java | 2 +- naked-objects/dom/exclude-pmd.properties | 2 +- naked-objects/dom/pom.xml | 34 +++++++++++----- .../src/main/java/META-INF/persistence.xml | 38 ++++++++++-------- .../dom/app/homepage/HomePageService.java | 30 ++++++++------ .../dom/app/homepage/HomePageViewModel.java | 30 ++++++++------ .../dom/modules/simple/SimpleObject.java | 30 ++++++++------ .../dom/modules/simple/SimpleObjects.java | 30 ++++++++------ .../dom/modules/simple/SimpleObjectTest.java | 28 ++++++++----- .../dom/modules/simple/SimpleObjectsTest.java | 28 ++++++++----- naked-objects/fixture/pom.xml | 34 +++++++++++----- .../fixture/DomainAppFixturesProvider.java | 34 +++++++++------- .../modules/simple/SimpleObjectCreate.java | 31 +++++++++------ .../modules/simple/SimpleObjectsTearDown.java | 31 +++++++++------ .../scenarios/RecreateSimpleObjects.java | 31 +++++++++------ naked-objects/integtests/pom.xml | 34 +++++++++++----- .../bootstrap/SimpleAppSystemInitializer.java | 30 ++++++++------ .../specglue/BootstrappingGlue.java | 28 ++++++++----- .../specglue/CatalogOfFixturesGlue.java | 28 ++++++++----- .../modules/simple/SimpleObjectGlue.java | 28 ++++++++----- .../domainapp/integtests/specs/RunSpecs.java | 28 ++++++++----- .../integtests/tests/SimpleAppIntegTest.java | 34 +++++++++------- .../modules/simple/SimpleObjectIntegTest.java | 34 +++++++++------- .../simple/SimpleObjectsIntegTest.java | 34 +++++++++------- naked-objects/pom.xml | 34 +++++++++++----- .../webapp/ide/intellij/launch/README.txt | 2 +- .../intellij/launch/SimpleApp_PROTOTYPE.xml | 2 +- .../launch/SimpleApp__enhance_only_.xml | 2 +- naked-objects/webapp/pom.xml | 34 +++++++++++----- .../domainapp/webapp/SimpleApplication.java | 34 +++++++++------- .../resources/domainapp/webapp/welcome.html | 38 ++++++++++-------- .../src/main/webapp/WEB-INF/isis.properties | 38 ++++++++++-------- .../main/webapp/WEB-INF/persistor.properties | 38 ++++++++++-------- .../WEB-INF/persistor_datanucleus.properties | 38 ++++++++++-------- .../WEB-INF/viewer_restfulobjects.properties | 38 ++++++++++-------- .../webapp/WEB-INF/viewer_wicket.properties | 38 ++++++++++-------- .../webapp/src/main/webapp/WEB-INF/web.xml | 38 ++++++++++-------- .../webapp/src/main/webapp/about/index.html | 2 +- .../src/main/webapp/css/application.css | 35 +++++++++-------- .../src/main/webapp/scripts/application.js | 2 +- null-object/pom.xml | 2 +- .../java/com/iluwatar/nullobject/App.java | 2 +- .../java/com/iluwatar/nullobject/Node.java | 2 +- .../com/iluwatar/nullobject/NodeImpl.java | 2 +- .../com/iluwatar/nullobject/NullNode.java | 2 +- .../java/com/iluwatar/nullobject/AppTest.java | 2 +- .../com/iluwatar/nullobject/NullNodeTest.java | 2 +- .../com/iluwatar/nullobject/TreeTest.java | 2 +- object-mother/pom.xml | 2 +- .../java/com/iluwatar/objectmother/King.java | 2 +- .../java/com/iluwatar/objectmother/Queen.java | 2 +- .../com/iluwatar/objectmother/Royalty.java | 2 +- .../objectmother/RoyaltyObjectMother.java | 2 +- .../test/RoyaltyObjectMotherTest.java | 2 +- object-pool/pom.xml | 2 +- .../java/com/iluwatar/object/pool/App.java | 2 +- .../com/iluwatar/object/pool/ObjectPool.java | 2 +- .../com/iluwatar/object/pool/Oliphaunt.java | 2 +- .../iluwatar/object/pool/OliphauntPool.java | 2 +- .../com/iluwatar/object/pool/AppTest.java | 2 +- .../object/pool/OliphauntPoolTest.java | 2 +- observer/pom.xml | 2 +- .../main/java/com/iluwatar/observer/App.java | 2 +- .../java/com/iluwatar/observer/Hobbits.java | 2 +- .../main/java/com/iluwatar/observer/Orcs.java | 2 +- .../java/com/iluwatar/observer/Weather.java | 2 +- .../iluwatar/observer/WeatherObserver.java | 2 +- .../com/iluwatar/observer/WeatherType.java | 2 +- .../iluwatar/observer/generic/GHobbits.java | 2 +- .../com/iluwatar/observer/generic/GOrcs.java | 2 +- .../iluwatar/observer/generic/GWeather.java | 2 +- .../iluwatar/observer/generic/Observable.java | 2 +- .../iluwatar/observer/generic/Observer.java | 2 +- .../com/iluwatar/observer/generic/Race.java | 2 +- .../java/com/iluwatar/observer/AppTest.java | 2 +- .../com/iluwatar/observer/HobbitsTest.java | 2 +- .../java/com/iluwatar/observer/OrcsTest.java | 2 +- .../observer/WeatherObserverTest.java | 2 +- .../com/iluwatar/observer/WeatherTest.java | 2 +- .../observer/generic/GHobbitsTest.java | 2 +- .../observer/generic/GWeatherTest.java | 2 +- .../observer/generic/ObserverTest.java | 2 +- .../iluwatar/observer/generic/OrcsTest.java | 2 +- .../observer/utils/InMemoryAppender.java | 2 +- page-object/pom.xml | 2 +- page-object/sample-application/pom.xml | 2 +- .../java/com/iluwatar/pageobject/App.java | 2 +- .../main/resources/sample-ui/album-list.html | 2 +- .../main/resources/sample-ui/album-page.html | 2 +- .../resources/sample-ui/css/album-list.css | 2 +- .../main/resources/sample-ui/css/style.css | 2 +- .../src/main/resources/sample-ui/login.html | 2 +- .../java/com/iluwatar/pageobject/App.java | 2 +- .../main/resources/sample-ui/album-list.html | 2 +- .../main/resources/sample-ui/album-page.html | 2 +- .../resources/sample-ui/css/album-list.css | 2 +- .../main/resources/sample-ui/css/style.css | 2 +- .../src/main/resources/sample-ui/login.html | 2 +- .../pageobject/AlbumListPageTest.java | 8 ++-- .../iluwatar/pageobject/AlbumPageTest.java | 8 ++-- .../iluwatar/pageobject/LoginPageTest.java | 8 ++-- .../pageobject/pages/AlbumListPage.java | 8 ++-- .../iluwatar/pageobject/pages/AlbumPage.java | 8 ++-- .../iluwatar/pageobject/pages/LoginPage.java | 8 ++-- .../com/iluwatar/pageobject/pages/Page.java | 8 ++-- page-object/test-automation/pom.xml | 2 +- .../iluwatar/pageobject/AlbumListPage.java | 8 ++-- .../com/iluwatar/pageobject/AlbumPage.java | 8 ++-- .../com/iluwatar/pageobject/LoginPage.java | 8 ++-- .../java/com/iluwatar/pageobject/Page.java | 8 ++-- .../pageobject/AlbumListPageTest.java | 8 ++-- .../iluwatar/pageobject/AlbumPageTest.java | 8 ++-- .../iluwatar/pageobject/LoginPageTest.java | 8 ++-- partial-response/pom.xml | 2 +- .../com/iluwatar/partialresponse/App.java | 16 ++++---- .../partialresponse/FieldJsonMapper.java | 16 ++++---- .../com/iluwatar/partialresponse/Video.java | 16 ++++---- .../partialresponse/VideoResource.java | 16 ++++---- .../com/iluwatar/partialresponse/AppTest.java | 16 ++++---- .../partialresponse/FieldJsonMapperTest.java | 16 ++++---- .../partialresponse/VideoResourceTest.java | 16 ++++---- pipeline/pom.xml | 2 +- .../main/java/com.iluwatar.pipeline/App.java | 2 +- .../ConvertToCharArrayHandler.java | 8 ++-- .../java/com.iluwatar.pipeline/Handler.java | 2 +- .../java/com.iluwatar.pipeline/Pipeline.java | 2 +- .../RemoveAlphabetsHandler.java | 2 +- .../RemoveDigitsHandler.java | 2 +- .../java/com.iluwatar.pipeline/AppTest.java | 8 ++-- .../com.iluwatar.pipeline/PipelineTest.java | 8 ++-- poison-pill/pom.xml | 2 +- .../java/com/iluwatar/poison/pill/App.java | 2 +- .../com/iluwatar/poison/pill/Consumer.java | 2 +- .../com/iluwatar/poison/pill/Message.java | 2 +- .../iluwatar/poison/pill/MessageQueue.java | 2 +- .../iluwatar/poison/pill/MqPublishPoint.java | 2 +- .../poison/pill/MqSubscribePoint.java | 2 +- .../com/iluwatar/poison/pill/Producer.java | 2 +- .../iluwatar/poison/pill/SimpleMessage.java | 2 +- .../poison/pill/SimpleMessageQueue.java | 2 +- .../com/iluwatar/poison/pill/AppTest.java | 2 +- .../iluwatar/poison/pill/ConsumerTest.java | 2 +- .../poison/pill/PoisonMessageTest.java | 2 +- .../iluwatar/poison/pill/ProducerTest.java | 2 +- .../poison/pill/SimpleMessageTest.java | 2 +- pom.xml | 9 ++++- priority-queue/pom.xml | 2 +- .../iluwatar/priority/queue/Application.java | 8 ++-- .../com/iluwatar/priority/queue/Message.java | 2 +- .../priority/queue/PriorityMessageQueue.java | 8 ++-- .../iluwatar/priority/queue/QueueManager.java | 8 ++-- .../com/iluwatar/priority/queue/Worker.java | 8 ++-- .../queue/PriorityMessageQueueTest.java | 2 +- .../priority/queue/QueueManagerTest.java | 2 +- private-class-data/pom.xml | 2 +- .../com/iluwatar/privateclassdata/App.java | 2 +- .../privateclassdata/ImmutableStew.java | 2 +- .../com/iluwatar/privateclassdata/Stew.java | 2 +- .../iluwatar/privateclassdata/StewData.java | 2 +- .../iluwatar/privateclassdata/AppTest.java | 2 +- .../privateclassdata/ImmutableStewTest.java | 2 +- .../iluwatar/privateclassdata/StewTest.java | 2 +- .../utils/InMemoryAppender.java | 2 +- producer-consumer/pom.xml | 2 +- .../com/iluwatar/producer/consumer/App.java | 2 +- .../iluwatar/producer/consumer/Consumer.java | 2 +- .../com/iluwatar/producer/consumer/Item.java | 2 +- .../iluwatar/producer/consumer/ItemQueue.java | 2 +- .../iluwatar/producer/consumer/Producer.java | 2 +- .../iluwatar/producer/consumer/AppTest.java | 2 +- .../producer/consumer/ConsumerTest.java | 2 +- .../producer/consumer/ProducerTest.java | 2 +- promise/pom.xml | 2 +- .../main/java/com/iluwatar/promise/App.java | 2 +- .../java/com/iluwatar/promise/Promise.java | 2 +- .../com/iluwatar/promise/PromiseSupport.java | 2 +- .../java/com/iluwatar/promise/Utility.java | 2 +- .../java/com/iluwatar/promise/AppTest.java | 2 +- .../com/iluwatar/promise/PromiseTest.java | 2 +- property/pom.xml | 2 +- .../main/java/com/iluwatar/property/App.java | 2 +- .../java/com/iluwatar/property/Character.java | 2 +- .../java/com/iluwatar/property/Prototype.java | 2 +- .../java/com/iluwatar/property/Stats.java | 2 +- .../java/com/iluwatar/property/AppTest.java | 2 +- .../com/iluwatar/property/CharacterTest.java | 2 +- prototype/pom.xml | 2 +- .../main/java/com/iluwatar/prototype/App.java | 2 +- .../java/com/iluwatar/prototype/Beast.java | 2 +- .../java/com/iluwatar/prototype/ElfBeast.java | 2 +- .../java/com/iluwatar/prototype/ElfMage.java | 2 +- .../com/iluwatar/prototype/ElfWarlord.java | 2 +- .../com/iluwatar/prototype/HeroFactory.java | 2 +- .../iluwatar/prototype/HeroFactoryImpl.java | 2 +- .../java/com/iluwatar/prototype/Mage.java | 2 +- .../java/com/iluwatar/prototype/OrcBeast.java | 2 +- .../java/com/iluwatar/prototype/OrcMage.java | 2 +- .../com/iluwatar/prototype/OrcWarlord.java | 2 +- .../com/iluwatar/prototype/Prototype.java | 2 +- .../java/com/iluwatar/prototype/Warlord.java | 2 +- .../java/com/iluwatar/prototype/AppTest.java | 2 +- .../prototype/HeroFactoryImplTest.java | 2 +- .../com/iluwatar/prototype/PrototypeTest.java | 2 +- proxy/etc/presentation.html | 2 +- proxy/etc/proxy-concept.xml | 2 +- proxy/pom.xml | 2 +- .../src/main/java/com/iluwatar/proxy/App.java | 2 +- .../java/com/iluwatar/proxy/IvoryTower.java | 2 +- .../main/java/com/iluwatar/proxy/Wizard.java | 2 +- .../java/com/iluwatar/proxy/WizardTower.java | 2 +- .../com/iluwatar/proxy/WizardTowerProxy.java | 2 +- .../test/java/com/iluwatar/proxy/AppTest.java | 2 +- .../com/iluwatar/proxy/IvoryTowerTest.java | 2 +- .../java/com/iluwatar/proxy/WizardTest.java | 2 +- .../iluwatar/proxy/WizardTowerProxyTest.java | 2 +- .../proxy/utils/InMemoryAppender.java | 2 +- queue-load-leveling/pom.xml | 2 +- .../com/iluwatar/queue/load/leveling/App.java | 3 +- .../iluwatar/queue/load/leveling/Message.java | 2 +- .../queue/load/leveling/MessageQueue.java | 2 +- .../queue/load/leveling/ServiceExecutor.java | 3 +- .../iluwatar/queue/load/leveling/Task.java | 2 +- .../queue/load/leveling/TaskGenerator.java | 2 +- .../iluwatar/queue/load/leveling/AppTest.java | 2 +- .../queue/load/leveling/MessageQueueTest.java | 2 +- .../queue/load/leveling/MessageTest.java | 2 +- .../load/leveling/TaskGenSrvExeTest.java | 2 +- reactor/pom.xml | 2 +- .../java/com/iluwatar/reactor/app/App.java | 2 +- .../com/iluwatar/reactor/app/AppClient.java | 2 +- .../iluwatar/reactor/app/LoggingHandler.java | 2 +- .../reactor/framework/AbstractNioChannel.java | 2 +- .../reactor/framework/ChannelHandler.java | 2 +- .../reactor/framework/Dispatcher.java | 2 +- .../reactor/framework/NioDatagramChannel.java | 2 +- .../reactor/framework/NioReactor.java | 2 +- .../framework/NioServerSocketChannel.java | 2 +- .../framework/SameThreadDispatcher.java | 2 +- .../framework/ThreadPoolDispatcher.java | 2 +- .../com/iluwatar/reactor/app/ReactorTest.java | 2 +- reader-writer-lock/pom.xml | 3 +- .../com/iluwatar/reader/writer/lock/App.java | 3 +- .../iluwatar/reader/writer/lock/Reader.java | 2 +- .../reader/writer/lock/ReaderWriterLock.java | 2 +- .../iluwatar/reader/writer/lock/Writer.java | 2 +- .../iluwatar/reader/writer/lock/AppTest.java | 2 +- .../writer/lock/ReaderAndWriterTest.java | 3 +- .../reader/writer/lock/ReaderTest.java | 2 +- .../reader/writer/lock/WriterTest.java | 2 +- .../writer/lock/utils/InMemoryAppender.java | 2 +- repository/pom.xml | 2 +- .../java/com/iluwatar/repository/App.java | 2 +- .../com/iluwatar/repository/AppConfig.java | 2 +- .../java/com/iluwatar/repository/Person.java | 2 +- .../iluwatar/repository/PersonRepository.java | 2 +- .../repository/PersonSpecifications.java | 2 +- .../main/resources/META-INF/persistence.xml | 2 +- .../src/main/resources/applicationContext.xml | 2 +- repository/src/main/resources/logback.xml | 2 +- .../AnnotationBasedRepositoryTest.java | 2 +- .../iluwatar/repository/AppConfigTest.java | 2 +- .../java/com/iluwatar/repository/AppTest.java | 2 +- .../iluwatar/repository/RepositoryTest.java | 2 +- .../pom.xml | 2 +- .../acquisition/is/initialization/App.java | 2 +- .../is/initialization/SlidingDoor.java | 2 +- .../is/initialization/TreasureChest.java | 2 +- .../is/initialization/AppTest.java | 2 +- .../is/initialization/ClosableTest.java | 2 +- retry/pom.xml | 4 +- .../src/main/java/com/iluwatar/retry/App.java | 22 +++++------ .../com/iluwatar/retry/BusinessException.java | 22 +++++------ .../com/iluwatar/retry/BusinessOperation.java | 22 +++++------ .../retry/CustomerNotFoundException.java | 22 +++++------ .../retry/DatabaseNotAvailableException.java | 22 +++++------ .../java/com/iluwatar/retry/FindCustomer.java | 22 +++++------ .../main/java/com/iluwatar/retry/Retry.java | 22 +++++------ .../retry/RetryExponentialBackoff.java | 16 ++++---- .../com/iluwatar/retry/FindCustomerTest.java | 22 +++++------ .../retry/RetryExponentialBackoffTest.java | 16 ++++---- .../java/com/iluwatar/retry/RetryTest.java | 22 +++++------ semaphore/pom.xml | 2 +- .../main/java/com/iluwatar/semaphore/App.java | 2 +- .../java/com/iluwatar/semaphore/Customer.java | 2 +- .../java/com/iluwatar/semaphore/Fruit.java | 2 +- .../com/iluwatar/semaphore/FruitBowl.java | 2 +- .../com/iluwatar/semaphore/FruitShop.java | 2 +- .../java/com/iluwatar/semaphore/Lock.java | 2 +- .../com/iluwatar/semaphore/Semaphore.java | 2 +- .../java/com/iluwatar/semaphore/AppTest.java | 2 +- .../com/iluwatar/semaphore/FruitBowlTest.java | 2 +- .../com/iluwatar/semaphore/SemaphoreTest.java | 2 +- servant/pom.xml | 2 +- servant/src/etc/servant.xml | 2 +- .../main/java/com/iluwatar/servant/App.java | 2 +- .../main/java/com/iluwatar/servant/King.java | 2 +- .../main/java/com/iluwatar/servant/Queen.java | 2 +- .../java/com/iluwatar/servant/Royalty.java | 2 +- .../java/com/iluwatar/servant/Servant.java | 2 +- .../java/com/iluwatar/servant/AppTest.java | 2 +- .../java/com/iluwatar/servant/KingTest.java | 2 +- .../java/com/iluwatar/servant/QueenTest.java | 2 +- .../com/iluwatar/servant/ServantTest.java | 2 +- serverless/pom.xml | 7 +++- serverless/serverless.yml | 2 +- .../baas/api/AbstractDynamoDbHandler.java | 2 +- .../baas/api/FindPersonApiHandler.java | 2 +- .../baas/api/SavePersonApiHandler.java | 2 +- .../serverless/baas/model/Address.java | 2 +- .../serverless/baas/model/Person.java | 2 +- .../serverless/faas/ApiGatewayResponse.java | 2 +- .../iluwatar/serverless/faas/LambdaInfo.java | 2 +- .../faas/api/LambdaInfoApiHandler.java | 2 +- .../src/main/resources/log4j.properties | 2 +- .../baas/api/FindPersonApiHandlerTest.java | 2 +- .../baas/api/SavePersonApiHandlerTest.java | 2 +- .../faas/api/LambdaInfoApiHandlerTest.java | 8 ++-- service-layer/pom.xml | 2 +- .../com/iluwatar/servicelayer/app/App.java | 2 +- .../servicelayer/common/BaseEntity.java | 2 +- .../com/iluwatar/servicelayer/common/Dao.java | 2 +- .../servicelayer/common/DaoBaseImpl.java | 2 +- .../servicelayer/hibernate/HibernateUtil.java | 2 +- .../servicelayer/magic/MagicService.java | 2 +- .../servicelayer/magic/MagicServiceImpl.java | 2 +- .../iluwatar/servicelayer/spell/Spell.java | 2 +- .../iluwatar/servicelayer/spell/SpellDao.java | 2 +- .../servicelayer/spell/SpellDaoImpl.java | 2 +- .../servicelayer/spellbook/Spellbook.java | 2 +- .../servicelayer/spellbook/SpellbookDao.java | 2 +- .../spellbook/SpellbookDaoImpl.java | 2 +- .../iluwatar/servicelayer/wizard/Wizard.java | 2 +- .../servicelayer/wizard/WizardDao.java | 2 +- .../servicelayer/wizard/WizardDaoImpl.java | 2 +- service-layer/src/main/resources/logback.xml | 2 +- .../iluwatar/servicelayer/app/AppTest.java | 2 +- .../servicelayer/common/BaseDaoTest.java | 2 +- .../magic/MagicServiceImplTest.java | 2 +- .../servicelayer/spell/SpellDaoImplTest.java | 2 +- .../spellbook/SpellbookDaoImplTest.java | 2 +- .../wizard/WizardDaoImplTest.java | 2 +- service-locator/pom.xml | 2 +- .../java/com/iluwatar/servicelocator/App.java | 2 +- .../iluwatar/servicelocator/InitContext.java | 2 +- .../com/iluwatar/servicelocator/Service.java | 2 +- .../iluwatar/servicelocator/ServiceCache.java | 2 +- .../iluwatar/servicelocator/ServiceImpl.java | 2 +- .../servicelocator/ServiceLocator.java | 2 +- .../com/iluwatar/servicelocator/AppTest.java | 2 +- .../servicelocator/ServiceLocatorTest.java | 2 +- singleton/pom.xml | 2 +- .../main/java/com/iluwatar/singleton/App.java | 2 +- .../iluwatar/singleton/EnumIvoryTower.java | 2 +- .../InitializingOnDemandHolderIdiom.java | 2 +- .../com/iluwatar/singleton/IvoryTower.java | 2 +- .../ThreadSafeDoubleCheckLocking.java | 2 +- .../ThreadSafeLazyLoadedIvoryTower.java | 28 +++++++------ .../java/com/iluwatar/singleton/AppTest.java | 2 +- .../singleton/EnumIvoryTowerTest.java | 2 +- .../InitializingOnDemandHolderIdiomTest.java | 2 +- .../iluwatar/singleton/IvoryTowerTest.java | 2 +- .../com/iluwatar/singleton/SingletonTest.java | 2 +- .../ThreadSafeDoubleCheckLockingTest.java | 2 +- .../ThreadSafeLazyLoadedIvoryTowerTest.java | 2 +- spatial-partition/pom.xml | 2 +- .../com/iluwatar/spatialpartition/App.java | 3 +- .../com/iluwatar/spatialpartition/Bubble.java | 3 +- .../com/iluwatar/spatialpartition/Point.java | 3 +- .../iluwatar/spatialpartition/QuadTree.java | 3 +- .../com/iluwatar/spatialpartition/Rect.java | 3 +- .../SpatialPartitionBubbles.java | 3 +- .../SpatialPartitionGeneric.java | 3 +- .../iluwatar/spatialpartition/BubbleTest.java | 3 +- .../spatialpartition/QuadTreeTest.java | 3 +- .../iluwatar/spatialpartition/RectTest.java | 3 +- .../SpatialPartitionBubblesTest.java | 3 +- specification/pom.xml | 2 +- .../com/iluwatar/specification/app/App.java | 2 +- .../creature/AbstractCreature.java | 2 +- .../specification/creature/Creature.java | 2 +- .../specification/creature/Dragon.java | 2 +- .../specification/creature/Goblin.java | 2 +- .../specification/creature/KillerBee.java | 2 +- .../specification/creature/Octopus.java | 2 +- .../specification/creature/Shark.java | 2 +- .../specification/creature/Troll.java | 2 +- .../specification/property/Color.java | 2 +- .../specification/property/Movement.java | 2 +- .../iluwatar/specification/property/Size.java | 2 +- .../specification/selector/ColorSelector.java | 2 +- .../selector/MovementSelector.java | 2 +- .../specification/selector/SizeSelector.java | 2 +- .../iluwatar/specification/app/AppTest.java | 2 +- .../specification/creature/CreatureTest.java | 2 +- .../selector/ColorSelectorTest.java | 2 +- .../selector/MovementSelectorTest.java | 2 +- .../selector/SizeSelectorTest.java | 2 +- state/pom.xml | 2 +- .../java/com/iluwatar/state/AngryState.java | 2 +- .../src/main/java/com/iluwatar/state/App.java | 2 +- .../main/java/com/iluwatar/state/Mammoth.java | 2 +- .../com/iluwatar/state/PeacefulState.java | 2 +- .../main/java/com/iluwatar/state/State.java | 2 +- .../test/java/com/iluwatar/state/AppTest.java | 2 +- .../java/com/iluwatar/state/MammothTest.java | 2 +- step-builder/pom.xml | 2 +- .../java/com/iluwatar/stepbuilder/App.java | 2 +- .../com/iluwatar/stepbuilder/Character.java | 2 +- .../stepbuilder/CharacterStepBuilder.java | 2 +- .../com/iluwatar/stepbuilder/AppTest.java | 2 +- .../stepbuilder/CharacterStepBuilderTest.java | 2 +- strategy/pom.xml | 2 +- .../main/java/com/iluwatar/strategy/App.java | 2 +- .../com/iluwatar/strategy/DragonSlayer.java | 2 +- .../strategy/DragonSlayingStrategy.java | 2 +- .../com/iluwatar/strategy/MeleeStrategy.java | 2 +- .../iluwatar/strategy/ProjectileStrategy.java | 2 +- .../com/iluwatar/strategy/SpellStrategy.java | 2 +- .../java/com/iluwatar/strategy/AppTest.java | 2 +- .../iluwatar/strategy/DragonSlayerTest.java | 2 +- .../strategy/DragonSlayingStrategyTest.java | 2 +- template-method/pom.xml | 2 +- .../java/com/iluwatar/templatemethod/App.java | 2 +- .../templatemethod/HalflingThief.java | 2 +- .../templatemethod/HitAndRunMethod.java | 2 +- .../templatemethod/StealingMethod.java | 2 +- .../iluwatar/templatemethod/SubtleMethod.java | 2 +- .../com/iluwatar/templatemethod/AppTest.java | 2 +- .../templatemethod/HalflingThiefTest.java | 2 +- .../templatemethod/HitAndRunMethodTest.java | 2 +- .../templatemethod/StealingMethodTest.java | 2 +- .../templatemethod/SubtleMethodTest.java | 2 +- thread-pool/pom.xml | 2 +- .../java/com/iluwatar/threadpool/App.java | 2 +- .../iluwatar/threadpool/CoffeeMakingTask.java | 2 +- .../threadpool/PotatoPeelingTask.java | 2 +- .../java/com/iluwatar/threadpool/Task.java | 2 +- .../java/com/iluwatar/threadpool/Worker.java | 2 +- .../java/com/iluwatar/threadpool/AppTest.java | 2 +- .../threadpool/CoffeeMakingTaskTest.java | 2 +- .../threadpool/PotatoPeelingTaskTest.java | 2 +- .../com/iluwatar/threadpool/TaskTest.java | 2 +- .../com/iluwatar/threadpool/WorkerTest.java | 2 +- throttling/pom.xml | 2 +- .../java/com/iluwatar/throttling/App.java | 3 +- .../com/iluwatar/throttling/B2BService.java | 2 +- .../com/iluwatar/throttling/CallsCount.java | 2 +- .../java/com/iluwatar/throttling/Tenant.java | 2 +- .../throttling/timer/ThrottleTimerImpl.java | 2 +- .../iluwatar/throttling/timer/Throttler.java | 2 +- .../java/com/iluwatar/throttling/AppTest.java | 2 +- .../iluwatar/throttling/B2BServiceTest.java | 2 +- .../com/iluwatar/throttling/TenantTest.java | 2 +- tls/pom.xml | 3 +- tls/src/main/java/com/iluwatar/tls/App.java | 3 +- .../com/iluwatar/tls/DateFormatCallable.java | 3 +- .../main/java/com/iluwatar/tls/Result.java | 2 +- .../test/java/com/iluwatar/tls/AppTest.java | 3 +- .../iluwatar/tls/DateFormatCallableTest.java | 3 +- ...FormatCallableTestIncorrectDateFormat.java | 3 +- .../DateFormatCallableTestMultiThread.java | 3 +- tolerant-reader/pom.xml | 2 +- .../java/com/iluwatar/tolerantreader/App.java | 2 +- .../iluwatar/tolerantreader/RainbowFish.java | 2 +- .../tolerantreader/RainbowFishSerializer.java | 2 +- .../tolerantreader/RainbowFishV2.java | 2 +- .../com/iluwatar/tolerantreader/AppTest.java | 2 +- .../RainbowFishSerializerTest.java | 2 +- .../tolerantreader/RainbowFishTest.java | 2 +- .../tolerantreader/RainbowFishV2Test.java | 2 +- trampoline/pom.xml | 2 +- .../com/iluwatar/trampoline/Trampoline.java | 2 +- .../iluwatar/trampoline/TrampolineApp.java | 9 ++--- .../trampoline/TrampolineAppTest.java | 2 +- twin/pom.xml | 2 +- twin/src/main/java/com/iluwatar/twin/App.java | 2 +- .../main/java/com/iluwatar/twin/BallItem.java | 3 +- .../java/com/iluwatar/twin/BallThread.java | 3 +- .../main/java/com/iluwatar/twin/GameItem.java | 3 +- .../test/java/com/iluwatar/twin/AppTest.java | 2 +- .../java/com/iluwatar/twin/BallItemTest.java | 2 +- .../com/iluwatar/twin/BallThreadTest.java | 2 +- typeobjectpattern/pom.xml | 2 +- .../java/com/iluwatar/typeobject/App.java | 3 +- .../java/com/iluwatar/typeobject/Candy.java | 3 +- .../com/iluwatar/typeobject/CandyGame.java | 3 +- .../java/com/iluwatar/typeobject/Cell.java | 3 +- .../com/iluwatar/typeobject/CellPool.java | 3 +- .../com/iluwatar/typeobject/JsonParser.java | 3 +- .../iluwatar/typeobject/CandyGameTest.java | 3 +- .../com/iluwatar/typeobject/CellPoolTest.java | 3 +- .../com/iluwatar/typeobject/CellTest.java | 3 +- unit-of-work/pom.xml | 2 +- .../java/com/iluwatar/unitofwork/App.java | 16 ++++---- .../com/iluwatar/unitofwork/IUnitOfWork.java | 16 ++++---- .../java/com/iluwatar/unitofwork/Student.java | 16 ++++---- .../iluwatar/unitofwork/StudentDatabase.java | 16 ++++---- .../unitofwork/StudentRepository.java | 16 ++++---- .../java/com/iluwatar/unitofwork/AppTest.java | 16 ++++---- .../unitofwork/StudentRepositoryTest.java | 16 ++++---- update-ghpages.sh | 2 +- value-object/pom.xml | 2 +- .../java/com/iluwatar/value/object/App.java | 2 +- .../com/iluwatar/value/object/HeroStat.java | 2 +- .../com/iluwatar/value/object/AppTest.java | 2 +- .../iluwatar/value/object/HeroStatTest.java | 2 +- visitor/pom.xml | 2 +- .../main/java/com/iluwatar/visitor/App.java | 2 +- .../java/com/iluwatar/visitor/Commander.java | 2 +- .../iluwatar/visitor/CommanderVisitor.java | 2 +- .../java/com/iluwatar/visitor/Sergeant.java | 2 +- .../com/iluwatar/visitor/SergeantVisitor.java | 2 +- .../java/com/iluwatar/visitor/Soldier.java | 2 +- .../com/iluwatar/visitor/SoldierVisitor.java | 2 +- .../main/java/com/iluwatar/visitor/Unit.java | 2 +- .../com/iluwatar/visitor/UnitVisitor.java | 2 +- .../java/com/iluwatar/visitor/AppTest.java | 2 +- .../com/iluwatar/visitor/CommanderTest.java | 2 +- .../visitor/CommanderVisitorTest.java | 2 +- .../com/iluwatar/visitor/SergeantTest.java | 2 +- .../iluwatar/visitor/SergeantVisitorTest.java | 2 +- .../com/iluwatar/visitor/SoldierTest.java | 2 +- .../iluwatar/visitor/SoldierVisitorTest.java | 2 +- .../java/com/iluwatar/visitor/UnitTest.java | 2 +- .../com/iluwatar/visitor/VisitorTest.java | 2 +- 1421 files changed, 3147 insertions(+), 2877 deletions(-) diff --git a/.sonarcloud.properties b/.sonarcloud.properties index 1bd690065c42..c6b26bf5df8b 100644 --- a/.sonarcloud.properties +++ b/.sonarcloud.properties @@ -1,6 +1,6 @@ # # The MIT License -# Copyright (c) 2014 Ilkka Seppälä +# Copyright © 2014-2019 Ilkka Seppälä # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal diff --git a/abstract-document/pom.xml b/abstract-document/pom.xml index c3f783184d33..ec1bd16dc633 100644 --- a/abstract-document/pom.xml +++ b/abstract-document/pom.xml @@ -2,7 +2,7 @@ + diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/app/App.java b/cqrs/src/main/java/com/iluwatar/cqrs/app/App.java index 0f766e5c727f..7f79116268a0 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/app/App.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/app/App.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/commandes/CommandServiceImpl.java b/cqrs/src/main/java/com/iluwatar/cqrs/commandes/CommandServiceImpl.java index a15f8a45716d..dd7914d7eb3e 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/commandes/CommandServiceImpl.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/commandes/CommandServiceImpl.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/commandes/ICommandService.java b/cqrs/src/main/java/com/iluwatar/cqrs/commandes/ICommandService.java index 1da3f6c42392..acaef10726ba 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/commandes/ICommandService.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/commandes/ICommandService.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/constants/AppConstants.java b/cqrs/src/main/java/com/iluwatar/cqrs/constants/AppConstants.java index 07a8b96190b3..52de88d34adc 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/constants/AppConstants.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/constants/AppConstants.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Author.java b/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Author.java index 9825de9f7b25..179be3da32c2 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Author.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Author.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Book.java b/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Book.java index 8a11fcdd4166..14e141412a54 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Book.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Book.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/dto/Author.java b/cqrs/src/main/java/com/iluwatar/cqrs/dto/Author.java index c5473354dd59..1715e1718fc9 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/dto/Author.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/dto/Author.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/dto/Book.java b/cqrs/src/main/java/com/iluwatar/cqrs/dto/Book.java index f121a2ca7c2c..720e5655d96a 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/dto/Book.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/dto/Book.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/queries/IQueryService.java b/cqrs/src/main/java/com/iluwatar/cqrs/queries/IQueryService.java index 9c0252b0aeab..e5f040b7a47d 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/queries/IQueryService.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/queries/IQueryService.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/queries/QueryServiceImpl.java b/cqrs/src/main/java/com/iluwatar/cqrs/queries/QueryServiceImpl.java index 86eb4dd2f351..b6a8c6275ea6 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/queries/QueryServiceImpl.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/queries/QueryServiceImpl.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/util/HibernateUtil.java b/cqrs/src/main/java/com/iluwatar/cqrs/util/HibernateUtil.java index a5b59e20dc27..1a762537575d 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/util/HibernateUtil.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/util/HibernateUtil.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cqrs/src/main/resources/hibernate.cfg.xml b/cqrs/src/main/resources/hibernate.cfg.xml index 4ea1421667e1..019cd3917c84 100644 --- a/cqrs/src/main/resources/hibernate.cfg.xml +++ b/cqrs/src/main/resources/hibernate.cfg.xml @@ -2,7 +2,7 @@ - diff --git a/delegation/src/main/java/com/iluwatar/delegation/simple/App.java b/delegation/src/main/java/com/iluwatar/delegation/simple/App.java index 83e00fd1fb1c..4f8a363abc93 100644 --- a/delegation/src/main/java/com/iluwatar/delegation/simple/App.java +++ b/delegation/src/main/java/com/iluwatar/delegation/simple/App.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/delegation/src/main/java/com/iluwatar/delegation/simple/Printer.java b/delegation/src/main/java/com/iluwatar/delegation/simple/Printer.java index ee4d54938a86..64739467847c 100644 --- a/delegation/src/main/java/com/iluwatar/delegation/simple/Printer.java +++ b/delegation/src/main/java/com/iluwatar/delegation/simple/Printer.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/delegation/src/main/java/com/iluwatar/delegation/simple/PrinterController.java b/delegation/src/main/java/com/iluwatar/delegation/simple/PrinterController.java index c54f611ee213..a0ceed8dbc1d 100644 --- a/delegation/src/main/java/com/iluwatar/delegation/simple/PrinterController.java +++ b/delegation/src/main/java/com/iluwatar/delegation/simple/PrinterController.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/delegation/src/main/java/com/iluwatar/delegation/simple/printers/CanonPrinter.java b/delegation/src/main/java/com/iluwatar/delegation/simple/printers/CanonPrinter.java index 8f024122f15f..5c1785d9119a 100644 --- a/delegation/src/main/java/com/iluwatar/delegation/simple/printers/CanonPrinter.java +++ b/delegation/src/main/java/com/iluwatar/delegation/simple/printers/CanonPrinter.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/delegation/src/main/java/com/iluwatar/delegation/simple/printers/EpsonPrinter.java b/delegation/src/main/java/com/iluwatar/delegation/simple/printers/EpsonPrinter.java index fb763d21a862..3d12e0b63358 100644 --- a/delegation/src/main/java/com/iluwatar/delegation/simple/printers/EpsonPrinter.java +++ b/delegation/src/main/java/com/iluwatar/delegation/simple/printers/EpsonPrinter.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/delegation/src/main/java/com/iluwatar/delegation/simple/printers/HpPrinter.java b/delegation/src/main/java/com/iluwatar/delegation/simple/printers/HpPrinter.java index d80bb7aa7c9f..47d1057d2918 100644 --- a/delegation/src/main/java/com/iluwatar/delegation/simple/printers/HpPrinter.java +++ b/delegation/src/main/java/com/iluwatar/delegation/simple/printers/HpPrinter.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/delegation/src/test/java/com/iluwatar/delegation/simple/AppTest.java b/delegation/src/test/java/com/iluwatar/delegation/simple/AppTest.java index ffdc96b807bd..1a62f34d6269 100644 --- a/delegation/src/test/java/com/iluwatar/delegation/simple/AppTest.java +++ b/delegation/src/test/java/com/iluwatar/delegation/simple/AppTest.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/delegation/src/test/java/com/iluwatar/delegation/simple/DelegateTest.java b/delegation/src/test/java/com/iluwatar/delegation/simple/DelegateTest.java index 422da5685ffc..452f9dd76aa0 100644 --- a/delegation/src/test/java/com/iluwatar/delegation/simple/DelegateTest.java +++ b/delegation/src/test/java/com/iluwatar/delegation/simple/DelegateTest.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/dependency-injection/pom.xml b/dependency-injection/pom.xml index 2347cb14f946..fd9584ed2ac8 100644 --- a/dependency-injection/pom.xml +++ b/dependency-injection/pom.xml @@ -2,7 +2,7 @@ - diff --git a/feature-toggle/src/main/java/com/iluwatar/featuretoggle/App.java b/feature-toggle/src/main/java/com/iluwatar/featuretoggle/App.java index 351936b2cd64..b5271ee0836c 100644 --- a/feature-toggle/src/main/java/com/iluwatar/featuretoggle/App.java +++ b/feature-toggle/src/main/java/com/iluwatar/featuretoggle/App.java @@ -1,17 +1,17 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä - *

+ * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -20,7 +20,6 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ - package com.iluwatar.featuretoggle; import com.iluwatar.featuretoggle.pattern.Service; diff --git a/feature-toggle/src/main/java/com/iluwatar/featuretoggle/pattern/Service.java b/feature-toggle/src/main/java/com/iluwatar/featuretoggle/pattern/Service.java index 284ccf2ab2cb..9b5bcc035b44 100644 --- a/feature-toggle/src/main/java/com/iluwatar/featuretoggle/pattern/Service.java +++ b/feature-toggle/src/main/java/com/iluwatar/featuretoggle/pattern/Service.java @@ -1,17 +1,17 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä - *

+ * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/feature-toggle/src/main/java/com/iluwatar/featuretoggle/pattern/propertiesversion/PropertiesFeatureToggleVersion.java b/feature-toggle/src/main/java/com/iluwatar/featuretoggle/pattern/propertiesversion/PropertiesFeatureToggleVersion.java index 1ded334ec7d7..4a0fbc4b5b73 100644 --- a/feature-toggle/src/main/java/com/iluwatar/featuretoggle/pattern/propertiesversion/PropertiesFeatureToggleVersion.java +++ b/feature-toggle/src/main/java/com/iluwatar/featuretoggle/pattern/propertiesversion/PropertiesFeatureToggleVersion.java @@ -1,17 +1,17 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä - *

+ * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/feature-toggle/src/main/java/com/iluwatar/featuretoggle/pattern/tieredversion/TieredFeatureToggleVersion.java b/feature-toggle/src/main/java/com/iluwatar/featuretoggle/pattern/tieredversion/TieredFeatureToggleVersion.java index 887c9f663bfe..00277c9e093e 100644 --- a/feature-toggle/src/main/java/com/iluwatar/featuretoggle/pattern/tieredversion/TieredFeatureToggleVersion.java +++ b/feature-toggle/src/main/java/com/iluwatar/featuretoggle/pattern/tieredversion/TieredFeatureToggleVersion.java @@ -1,17 +1,17 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä - *

+ * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/feature-toggle/src/main/java/com/iluwatar/featuretoggle/user/User.java b/feature-toggle/src/main/java/com/iluwatar/featuretoggle/user/User.java index baf25aa8b7d6..a90c13e7deaf 100644 --- a/feature-toggle/src/main/java/com/iluwatar/featuretoggle/user/User.java +++ b/feature-toggle/src/main/java/com/iluwatar/featuretoggle/user/User.java @@ -1,17 +1,17 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä - *

+ * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/feature-toggle/src/main/java/com/iluwatar/featuretoggle/user/UserGroup.java b/feature-toggle/src/main/java/com/iluwatar/featuretoggle/user/UserGroup.java index cb84ec533274..17d21d705c7e 100644 --- a/feature-toggle/src/main/java/com/iluwatar/featuretoggle/user/UserGroup.java +++ b/feature-toggle/src/main/java/com/iluwatar/featuretoggle/user/UserGroup.java @@ -1,17 +1,17 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä - *

+ * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/feature-toggle/src/test/java/com/iluwatar/featuretoggle/pattern/propertiesversion/PropertiesFeatureToggleVersionTest.java b/feature-toggle/src/test/java/com/iluwatar/featuretoggle/pattern/propertiesversion/PropertiesFeatureToggleVersionTest.java index 8b85e93496ae..7d87c1f4d601 100644 --- a/feature-toggle/src/test/java/com/iluwatar/featuretoggle/pattern/propertiesversion/PropertiesFeatureToggleVersionTest.java +++ b/feature-toggle/src/test/java/com/iluwatar/featuretoggle/pattern/propertiesversion/PropertiesFeatureToggleVersionTest.java @@ -1,17 +1,17 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä - *

+ * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -20,7 +20,6 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ - package com.iluwatar.featuretoggle.pattern.propertiesversion; import com.iluwatar.featuretoggle.pattern.Service; diff --git a/feature-toggle/src/test/java/com/iluwatar/featuretoggle/pattern/tieredversion/TieredFeatureToggleVersionTest.java b/feature-toggle/src/test/java/com/iluwatar/featuretoggle/pattern/tieredversion/TieredFeatureToggleVersionTest.java index 4755d569e09e..ca374a90462a 100644 --- a/feature-toggle/src/test/java/com/iluwatar/featuretoggle/pattern/tieredversion/TieredFeatureToggleVersionTest.java +++ b/feature-toggle/src/test/java/com/iluwatar/featuretoggle/pattern/tieredversion/TieredFeatureToggleVersionTest.java @@ -1,17 +1,17 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä - *

+ * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/feature-toggle/src/test/java/com/iluwatar/featuretoggle/user/UserGroupTest.java b/feature-toggle/src/test/java/com/iluwatar/featuretoggle/user/UserGroupTest.java index 2771655ddefa..4489b86c9896 100644 --- a/feature-toggle/src/test/java/com/iluwatar/featuretoggle/user/UserGroupTest.java +++ b/feature-toggle/src/test/java/com/iluwatar/featuretoggle/user/UserGroupTest.java @@ -1,17 +1,17 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä - *

+ * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/fluentinterface/pom.xml b/fluentinterface/pom.xml index 23fc5d806866..1e76ea628f9d 100644 --- a/fluentinterface/pom.xml +++ b/fluentinterface/pom.xml @@ -2,7 +2,7 @@ - + diff --git a/mute-idiom/src/main/java/com/iluwatar/mute/App.java b/mute-idiom/src/main/java/com/iluwatar/mute/App.java index c35559dcd97f..f8ac25f5c42c 100644 --- a/mute-idiom/src/main/java/com/iluwatar/mute/App.java +++ b/mute-idiom/src/main/java/com/iluwatar/mute/App.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -20,7 +20,6 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ - package com.iluwatar.mute; import org.slf4j.Logger; diff --git a/mute-idiom/src/main/java/com/iluwatar/mute/CheckedRunnable.java b/mute-idiom/src/main/java/com/iluwatar/mute/CheckedRunnable.java index 7a37ef03dfe0..9a3feefc1033 100644 --- a/mute-idiom/src/main/java/com/iluwatar/mute/CheckedRunnable.java +++ b/mute-idiom/src/main/java/com/iluwatar/mute/CheckedRunnable.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -20,7 +20,6 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ - package com.iluwatar.mute; /** diff --git a/mute-idiom/src/main/java/com/iluwatar/mute/Mute.java b/mute-idiom/src/main/java/com/iluwatar/mute/Mute.java index d5d9b802849f..6c2c417017ae 100644 --- a/mute-idiom/src/main/java/com/iluwatar/mute/Mute.java +++ b/mute-idiom/src/main/java/com/iluwatar/mute/Mute.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/mute-idiom/src/main/java/com/iluwatar/mute/Resource.java b/mute-idiom/src/main/java/com/iluwatar/mute/Resource.java index 11bb3a6ec875..366f014b4fba 100644 --- a/mute-idiom/src/main/java/com/iluwatar/mute/Resource.java +++ b/mute-idiom/src/main/java/com/iluwatar/mute/Resource.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -20,7 +20,6 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ - package com.iluwatar.mute; import java.io.Closeable; diff --git a/mute-idiom/src/test/java/com/iluwatar/mute/AppTest.java b/mute-idiom/src/test/java/com/iluwatar/mute/AppTest.java index 31624c99449b..8d2299492197 100644 --- a/mute-idiom/src/test/java/com/iluwatar/mute/AppTest.java +++ b/mute-idiom/src/test/java/com/iluwatar/mute/AppTest.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -20,7 +20,6 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ - package com.iluwatar.mute; import org.junit.jupiter.api.Test; diff --git a/mute-idiom/src/test/java/com/iluwatar/mute/MuteTest.java b/mute-idiom/src/test/java/com/iluwatar/mute/MuteTest.java index 07498645e83c..9d946810fee0 100644 --- a/mute-idiom/src/test/java/com/iluwatar/mute/MuteTest.java +++ b/mute-idiom/src/test/java/com/iluwatar/mute/MuteTest.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -20,7 +20,6 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ - package com.iluwatar.mute; import org.junit.jupiter.api.Test; diff --git a/mutex/pom.xml b/mutex/pom.xml index 2075fb4a2462..05f9295eead8 100644 --- a/mutex/pom.xml +++ b/mutex/pom.xml @@ -2,7 +2,7 @@ + 4.0.0 diff --git a/naked-objects/dom/src/main/java/META-INF/persistence.xml b/naked-objects/dom/src/main/java/META-INF/persistence.xml index 8824aa1ace92..fd916b0456bd 100644 --- a/naked-objects/dom/src/main/java/META-INF/persistence.xml +++ b/naked-objects/dom/src/main/java/META-INF/persistence.xml @@ -1,21 +1,27 @@ - + 4.0.0 diff --git a/naked-objects/fixture/src/main/java/domainapp/fixture/DomainAppFixturesProvider.java b/naked-objects/fixture/src/main/java/domainapp/fixture/DomainAppFixturesProvider.java index ccc11f2b8ece..4496d2e32dd2 100644 --- a/naked-objects/fixture/src/main/java/domainapp/fixture/DomainAppFixturesProvider.java +++ b/naked-objects/fixture/src/main/java/domainapp/fixture/DomainAppFixturesProvider.java @@ -1,16 +1,24 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ package domainapp.fixture; diff --git a/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectCreate.java b/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectCreate.java index 58b656a9816f..89eadad31f0c 100644 --- a/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectCreate.java +++ b/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectCreate.java @@ -1,18 +1,25 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: * - * http://www.apache.org/licenses/LICENSE-2.0 + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ - package domainapp.fixture.modules.simple; import org.apache.isis.applib.fixturescripts.FixtureScript; diff --git a/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectsTearDown.java b/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectsTearDown.java index c0319d95383e..a5092c2ec70e 100644 --- a/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectsTearDown.java +++ b/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectsTearDown.java @@ -1,18 +1,25 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: * - * http://www.apache.org/licenses/LICENSE-2.0 + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ - package domainapp.fixture.modules.simple; import org.apache.isis.applib.fixturescripts.FixtureScript; diff --git a/naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java b/naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java index be891158a0d7..33e5570a6063 100644 --- a/naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java +++ b/naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java @@ -1,18 +1,25 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: * - * http://www.apache.org/licenses/LICENSE-2.0 + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ - package domainapp.fixture.scenarios; import java.util.Arrays; diff --git a/naked-objects/integtests/pom.xml b/naked-objects/integtests/pom.xml index 7365a71a9acb..62d25df032c9 100644 --- a/naked-objects/integtests/pom.xml +++ b/naked-objects/integtests/pom.xml @@ -1,14 +1,28 @@ - + 4.0.0 diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java b/naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java index 3ac5a1d75f2e..d5f0cd55265a 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java @@ -1,16 +1,24 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: * - * http://www.apache.org/licenses/LICENSE-2.0 + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ package domainapp.integtests.bootstrap; diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java index e41399fdd7d8..b53e88af0c0e 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java @@ -1,16 +1,24 @@ /** - * O * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä * - * http://www.apache.org/licenses/LICENSE-2.0 + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ package domainapp.integtests.specglue; diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/CatalogOfFixturesGlue.java b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/CatalogOfFixturesGlue.java index 7a75a038139f..acc1485eca51 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/CatalogOfFixturesGlue.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/CatalogOfFixturesGlue.java @@ -1,16 +1,24 @@ /** - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä * - * http://www.apache.org/licenses/LICENSE-2.0 + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ package domainapp.integtests.specglue; diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/modules/simple/SimpleObjectGlue.java b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/modules/simple/SimpleObjectGlue.java index b7af9f05232d..6c98b008c462 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/modules/simple/SimpleObjectGlue.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/modules/simple/SimpleObjectGlue.java @@ -1,16 +1,24 @@ /** - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä * - * http://www.apache.org/licenses/LICENSE-2.0 + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ package domainapp.integtests.specglue.modules.simple; diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/specs/RunSpecs.java b/naked-objects/integtests/src/test/java/domainapp/integtests/specs/RunSpecs.java index 8a842a0f3140..8f197985d6b5 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/specs/RunSpecs.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/specs/RunSpecs.java @@ -1,16 +1,24 @@ /** - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä * - * http://www.apache.org/licenses/LICENSE-2.0 + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ package domainapp.integtests.specs; diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java index 66deaeb84034..0db09fceb69f 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java @@ -1,20 +1,24 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: * - * http://www.apache.org/licenses/LICENSE-2.0 + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ package domainapp.integtests.tests; diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectIntegTest.java b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectIntegTest.java index 3d9009bf88af..0fc7c8f0b0e1 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectIntegTest.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectIntegTest.java @@ -1,20 +1,24 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: * - * http://www.apache.org/licenses/LICENSE-2.0 + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ package domainapp.integtests.tests.modules.simple; diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectsIntegTest.java b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectsIntegTest.java index 168d4865a574..a150bdb5a726 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectsIntegTest.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectsIntegTest.java @@ -1,20 +1,24 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: * - * http://www.apache.org/licenses/LICENSE-2.0 + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ package domainapp.integtests.tests.modules.simple; diff --git a/naked-objects/pom.xml b/naked-objects/pom.xml index 271a07705589..b035c3894058 100644 --- a/naked-objects/pom.xml +++ b/naked-objects/pom.xml @@ -1,14 +1,28 @@ - + 4.0.0 diff --git a/naked-objects/webapp/ide/intellij/launch/README.txt b/naked-objects/webapp/ide/intellij/launch/README.txt index 6659454efdbe..2977f3068716 100644 --- a/naked-objects/webapp/ide/intellij/launch/README.txt +++ b/naked-objects/webapp/ide/intellij/launch/README.txt @@ -1,6 +1,6 @@ ==== The MIT License - Copyright (c) 2014-2016 Ilkka Seppälä + Copyright © 2014-2019 Ilkka Seppälä Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/naked-objects/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml b/naked-objects/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml index 9831f9a1f7bf..c27b5fbdd00a 100644 --- a/naked-objects/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml +++ b/naked-objects/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml @@ -1,7 +1,7 @@ + 4.0.0 diff --git a/naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java b/naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java index 459e4b7de9e0..cf15632faf53 100644 --- a/naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java +++ b/naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java @@ -1,16 +1,24 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ package domainapp.webapp; diff --git a/naked-objects/webapp/src/main/resources/domainapp/webapp/welcome.html b/naked-objects/webapp/src/main/resources/domainapp/webapp/welcome.html index a87d67384a9f..e81389640efc 100644 --- a/naked-objects/webapp/src/main/resources/domainapp/webapp/welcome.html +++ b/naked-objects/webapp/src/main/resources/domainapp/webapp/welcome.html @@ -1,21 +1,27 @@

Apache Isis™ is a platform to let you rapidly develop diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/isis.properties b/naked-objects/webapp/src/main/webapp/WEB-INF/isis.properties index 929d1775a8b9..2ebd42968626 100644 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/isis.properties +++ b/naked-objects/webapp/src/main/webapp/WEB-INF/isis.properties @@ -1,19 +1,25 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. +# +# The MIT License +# Copyright © 2014-2019 Ilkka Seppälä +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# ################################################################################# diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/persistor.properties b/naked-objects/webapp/src/main/webapp/WEB-INF/persistor.properties index c73af73c78d4..594b97edec95 100644 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/persistor.properties +++ b/naked-objects/webapp/src/main/webapp/WEB-INF/persistor.properties @@ -1,19 +1,25 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. +# +# The MIT License +# Copyright © 2014-2019 Ilkka Seppälä +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties b/naked-objects/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties index 675ced3bf8c0..572b2e194c95 100644 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties +++ b/naked-objects/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties @@ -1,19 +1,25 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. +# +# The MIT License +# Copyright © 2014-2019 Ilkka Seppälä +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# # # configuration file for the JDO/DataNucleus objectstore diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties b/naked-objects/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties index 0a85fb681bc9..34f639a549fd 100644 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties +++ b/naked-objects/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties @@ -1,19 +1,25 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. +# +# The MIT License +# Copyright © 2014-2019 Ilkka Seppälä +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# # # configuration file for the Restful Objects viewer diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties b/naked-objects/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties index ba9eaaffb873..b52c7fa6e42e 100644 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties +++ b/naked-objects/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties @@ -1,19 +1,25 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. +# +# The MIT License +# Copyright © 2014-2019 Ilkka Seppälä +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# # # configuration file for the Wicket viewer diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/web.xml b/naked-objects/webapp/src/main/webapp/WEB-INF/web.xml index bb6098f0bcfa..6a3ecd65dfdc 100644 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/web.xml +++ b/naked-objects/webapp/src/main/webapp/WEB-INF/web.xml @@ -1,21 +1,27 @@ + * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/page-object/src/test/java/com/iluwatar/pageobject/AlbumPageTest.java b/page-object/src/test/java/com/iluwatar/pageobject/AlbumPageTest.java index 4b567fcad2ed..9f8419be1af7 100644 --- a/page-object/src/test/java/com/iluwatar/pageobject/AlbumPageTest.java +++ b/page-object/src/test/java/com/iluwatar/pageobject/AlbumPageTest.java @@ -1,17 +1,17 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä - *

+ * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/page-object/src/test/java/com/iluwatar/pageobject/LoginPageTest.java b/page-object/src/test/java/com/iluwatar/pageobject/LoginPageTest.java index 59f69552bc22..911ee5769656 100644 --- a/page-object/src/test/java/com/iluwatar/pageobject/LoginPageTest.java +++ b/page-object/src/test/java/com/iluwatar/pageobject/LoginPageTest.java @@ -1,17 +1,17 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä - *

+ * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumListPage.java b/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumListPage.java index d212b33f301a..20673c8779dd 100644 --- a/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumListPage.java +++ b/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumListPage.java @@ -1,17 +1,17 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä - *

+ * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumPage.java b/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumPage.java index 7d2318257930..e33ffc4af32a 100644 --- a/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumPage.java +++ b/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumPage.java @@ -1,17 +1,17 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä - *

+ * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/page-object/src/test/java/com/iluwatar/pageobject/pages/LoginPage.java b/page-object/src/test/java/com/iluwatar/pageobject/pages/LoginPage.java index b648dfdafc36..843a5e1dc433 100644 --- a/page-object/src/test/java/com/iluwatar/pageobject/pages/LoginPage.java +++ b/page-object/src/test/java/com/iluwatar/pageobject/pages/LoginPage.java @@ -1,17 +1,17 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä - *

+ * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/page-object/src/test/java/com/iluwatar/pageobject/pages/Page.java b/page-object/src/test/java/com/iluwatar/pageobject/pages/Page.java index f292588d2951..fbdc1b28c7be 100644 --- a/page-object/src/test/java/com/iluwatar/pageobject/pages/Page.java +++ b/page-object/src/test/java/com/iluwatar/pageobject/pages/Page.java @@ -1,17 +1,17 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä - *

+ * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/page-object/test-automation/pom.xml b/page-object/test-automation/pom.xml index f657a8dab0b6..5b275084c4cf 100644 --- a/page-object/test-automation/pom.xml +++ b/page-object/test-automation/pom.xml @@ -2,7 +2,7 @@ @@ -25,7 +30,7 @@ java-design-patterns 1.22.0-SNAPSHOT pom - 2014 + 2014-2019 UTF-8 5.2.18.Final diff --git a/priority-queue/pom.xml b/priority-queue/pom.xml index aaf172ef3953..3e5ac50e81ab 100644 --- a/priority-queue/pom.xml +++ b/priority-queue/pom.xml @@ -2,7 +2,7 @@ - 4.0.0 diff --git a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/App.java b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/App.java index 42335f313f1c..2ee3fa948845 100644 --- a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/App.java +++ b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/App.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -20,7 +20,6 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ - package com.iluwatar.reader.writer.lock; import java.util.concurrent.ExecutorService; diff --git a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Reader.java b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Reader.java index b0ccecabadaf..3bc46c4524f7 100644 --- a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Reader.java +++ b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Reader.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/ReaderWriterLock.java b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/ReaderWriterLock.java index f0f5a009040a..d35703801c67 100644 --- a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/ReaderWriterLock.java +++ b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/ReaderWriterLock.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Writer.java b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Writer.java index dc379eef97ba..4aa5ab5a9571 100644 --- a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Writer.java +++ b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Writer.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/AppTest.java b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/AppTest.java index fbdf3f846a97..8815e6c8e451 100644 --- a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/AppTest.java +++ b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/AppTest.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderAndWriterTest.java b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderAndWriterTest.java index c8de8c511b55..d190dfb9ef4c 100644 --- a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderAndWriterTest.java +++ b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderAndWriterTest.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -20,7 +20,6 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ - package com.iluwatar.reader.writer.lock; import com.iluwatar.reader.writer.lock.utils.InMemoryAppender; diff --git a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderTest.java b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderTest.java index 8fe5912ea3a5..d49a472e05a8 100644 --- a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderTest.java +++ b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderTest.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/WriterTest.java b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/WriterTest.java index bb01e11b09eb..55a8b7f95685 100644 --- a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/WriterTest.java +++ b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/WriterTest.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/utils/InMemoryAppender.java b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/utils/InMemoryAppender.java index b8ad531ce856..c6b8319d2a5d 100644 --- a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/utils/InMemoryAppender.java +++ b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/utils/InMemoryAppender.java @@ -1,6 +1,6 @@ /** * The MIT License - * Copyright (c) 2014-2016 Ilkka Seppälä + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/repository/pom.xml b/repository/pom.xml index f0340f1260ef..906389282945 100644 --- a/repository/pom.xml +++ b/repository/pom.xml @@ -2,7 +2,7 @@ 4.0.0 diff --git a/retry/src/main/java/com/iluwatar/retry/App.java b/retry/src/main/java/com/iluwatar/retry/App.java index 20205bdf3973..76ec43363525 100644 --- a/retry/src/main/java/com/iluwatar/retry/App.java +++ b/retry/src/main/java/com/iluwatar/retry/App.java @@ -1,27 +1,25 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014-2016 Ilkka Seppälä - * +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ - package com.iluwatar.retry; import org.slf4j.Logger; diff --git a/retry/src/main/java/com/iluwatar/retry/BusinessException.java b/retry/src/main/java/com/iluwatar/retry/BusinessException.java index eefbf2813cbf..d88aa8a105b7 100644 --- a/retry/src/main/java/com/iluwatar/retry/BusinessException.java +++ b/retry/src/main/java/com/iluwatar/retry/BusinessException.java @@ -1,27 +1,25 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014-2016 Ilkka Seppälä - * +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ - package com.iluwatar.retry; /** diff --git a/retry/src/main/java/com/iluwatar/retry/BusinessOperation.java b/retry/src/main/java/com/iluwatar/retry/BusinessOperation.java index aefb589c79c3..37846f54d751 100644 --- a/retry/src/main/java/com/iluwatar/retry/BusinessOperation.java +++ b/retry/src/main/java/com/iluwatar/retry/BusinessOperation.java @@ -1,27 +1,25 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014-2016 Ilkka Seppälä - * +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ - package com.iluwatar.retry; /** diff --git a/retry/src/main/java/com/iluwatar/retry/CustomerNotFoundException.java b/retry/src/main/java/com/iluwatar/retry/CustomerNotFoundException.java index 596d8584d67b..990229ebed04 100644 --- a/retry/src/main/java/com/iluwatar/retry/CustomerNotFoundException.java +++ b/retry/src/main/java/com/iluwatar/retry/CustomerNotFoundException.java @@ -1,27 +1,25 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014-2016 Ilkka Seppälä - * +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ - package com.iluwatar.retry; /** diff --git a/retry/src/main/java/com/iluwatar/retry/DatabaseNotAvailableException.java b/retry/src/main/java/com/iluwatar/retry/DatabaseNotAvailableException.java index 2a93e992d333..be78a9e6fd8b 100644 --- a/retry/src/main/java/com/iluwatar/retry/DatabaseNotAvailableException.java +++ b/retry/src/main/java/com/iluwatar/retry/DatabaseNotAvailableException.java @@ -1,27 +1,25 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014-2016 Ilkka Seppälä - * +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ - package com.iluwatar.retry; /** diff --git a/retry/src/main/java/com/iluwatar/retry/FindCustomer.java b/retry/src/main/java/com/iluwatar/retry/FindCustomer.java index 421f450e59f1..83ab9a25c3f4 100644 --- a/retry/src/main/java/com/iluwatar/retry/FindCustomer.java +++ b/retry/src/main/java/com/iluwatar/retry/FindCustomer.java @@ -1,27 +1,25 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014-2016 Ilkka Seppälä - * +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ - package com.iluwatar.retry; import java.util.ArrayDeque; diff --git a/retry/src/main/java/com/iluwatar/retry/Retry.java b/retry/src/main/java/com/iluwatar/retry/Retry.java index da5c76d5d3ac..d5d16bf30e62 100644 --- a/retry/src/main/java/com/iluwatar/retry/Retry.java +++ b/retry/src/main/java/com/iluwatar/retry/Retry.java @@ -1,27 +1,25 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014-2016 Ilkka Seppälä - * +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ - package com.iluwatar.retry; import java.util.ArrayList; diff --git a/retry/src/main/java/com/iluwatar/retry/RetryExponentialBackoff.java b/retry/src/main/java/com/iluwatar/retry/RetryExponentialBackoff.java index b24bebbce192..551914dad138 100644 --- a/retry/src/main/java/com/iluwatar/retry/RetryExponentialBackoff.java +++ b/retry/src/main/java/com/iluwatar/retry/RetryExponentialBackoff.java @@ -1,7 +1,6 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014-2016 Ilkka Seppälä +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -10,18 +9,17 @@ * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ - package com.iluwatar.retry; import java.util.ArrayList; diff --git a/retry/src/test/java/com/iluwatar/retry/FindCustomerTest.java b/retry/src/test/java/com/iluwatar/retry/FindCustomerTest.java index 5c0cc66ed36b..d1cd87b21772 100644 --- a/retry/src/test/java/com/iluwatar/retry/FindCustomerTest.java +++ b/retry/src/test/java/com/iluwatar/retry/FindCustomerTest.java @@ -1,27 +1,25 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014-2016 Ilkka Seppälä - * +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ - package com.iluwatar.retry; import org.junit.jupiter.api.Test; diff --git a/retry/src/test/java/com/iluwatar/retry/RetryExponentialBackoffTest.java b/retry/src/test/java/com/iluwatar/retry/RetryExponentialBackoffTest.java index d14b1eef68a6..23fd8add732c 100644 --- a/retry/src/test/java/com/iluwatar/retry/RetryExponentialBackoffTest.java +++ b/retry/src/test/java/com/iluwatar/retry/RetryExponentialBackoffTest.java @@ -1,7 +1,6 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014-2016 Ilkka Seppälä +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -10,18 +9,17 @@ * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ - package com.iluwatar.retry; import org.junit.jupiter.api.Test; diff --git a/retry/src/test/java/com/iluwatar/retry/RetryTest.java b/retry/src/test/java/com/iluwatar/retry/RetryTest.java index d435c7e84331..5366b525bc1e 100644 --- a/retry/src/test/java/com/iluwatar/retry/RetryTest.java +++ b/retry/src/test/java/com/iluwatar/retry/RetryTest.java @@ -1,27 +1,25 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014-2016 Ilkka Seppälä - * +/** + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. */ - package com.iluwatar.retry; import org.junit.jupiter.api.Test; diff --git a/semaphore/pom.xml b/semaphore/pom.xml index 3761e5e49a8f..1ae865f02442 100644 --- a/semaphore/pom.xml +++ b/semaphore/pom.xml @@ -2,7 +2,7 @@ + * Copyright © 2014-2019 Ilkka Seppälä + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - *

+ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - *

+ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/service-layer/pom.xml b/service-layer/pom.xml index 057a701341a7..31fc6f625b68 100644 --- a/service-layer/pom.xml +++ b/service-layer/pom.xml @@ -2,7 +2,7 @@ - - org.eclipse.m2e - lifecycle-mapping - 1.0.0 - - - - - - org.jacoco - - jacoco-maven-plugin - - - [0.6.2,) - - - prepare-agent - - - - - - - - - - org.apache.maven.plugins maven-compiler-plugin @@ -410,20 +379,6 @@ - - org.jacoco - jacoco-maven-plugin - ${jacoco.version} - - - prepare-agent - - prepare-agent - - - - - @@ -471,6 +426,27 @@ + + + org.jacoco + jacoco-maven-plugin + ${jacoco.version} + + + prepare-agent + + prepare-agent + + + + report + + report + + + + + From cfdfedbd2e2ed4b140c0f82e6322d335a1e4f39d Mon Sep 17 00:00:00 2001 From: Joshua Jimenez Date: Mon, 14 Oct 2019 04:41:11 +0800 Subject: [PATCH 12/68] #970 single logging framework should be enforced (#982) * #496 Add pipeline module to parent pom :sparkles: * #496: Add main application class and test for pipeline * #496: Checkstyle format and add log messages on pipeline stages :art: * #496: Fill readme sections of pipeline :sparkles: * #496: Javadocs and checkstyle formatting :art: * #496: Follow PMD checks and add more explanation as block comment on App.java * #496: Apply requested PR changes by iluwatar :art: * #970: Replace log4j usage on commander pattern to Slf4j API :art: * #970: Replace log4j usage on dao pattern to Slf4j API :art: * #970: Replace log4j usage on data mapper pattern to Slf4j API :art: * #970: Remove log4j dependency on data transfer object pom :fire: * #970: Replace log4j usage on module pattern to Slf4j API :art: * #970: Replace log4j usage on serverless pattern to Slf4j API :art: This also removes the aws log4j dependency * #970: Remove unnecessary gitignore line for log4j.xml :fire: * #970: Remove remaining remnants of log4j :fire: * #970: Replace System.out logging with appropriate logging methods :art: * #970: Replace System.out method references to Logger::info :art: --- .gitignore | 1 - .../iluwatar/collectionpipeline/AppTest.java | 7 ++- commander/pom.xml | 5 -- commander/properties/log4j.properties | 41 ---------------- .../com/iluwatar/commander/Commander.java | 19 +++---- .../messagingservice/MessagingService.java | 5 +- .../main/java/com/iluwatar/converter/App.java | 14 ++++-- dao/pom.xml | 49 ------------------- dao/src/main/java/com/iluwatar/dao/App.java | 9 ++-- .../java/com/iluwatar/dao/DbCustomerDao.java | 7 +-- dao/src/main/resources/log4j.xml | 41 ---------------- data-mapper/pom.xml | 4 -- .../java/com/iluwatar/datamapper/App.java | 7 +-- data-mapper/src/main/resources/log4j.xml | 41 ---------------- data-transfer-object/pom.xml | 4 -- .../main/java/com/iluwatar/dirtyflag/App.java | 9 +++- .../com/iluwatar/dirtyflag/DataFetcher.java | 8 ++- .../java/com/iluwatar/event/queue/App.java | 7 ++- .../administration/ConsoleAdministration.java | 2 +- .../hexagonal/service/ConsoleLottery.java | 2 +- .../service/LotteryConsoleServiceImpl.java | 2 +- .../java/com/iluwatar/masterworker/App.java | 8 +-- .../masterworker/ArrayUtilityMethods.java | 10 ++-- module/pom.xml | 4 -- .../iluwatar/module/ConsoleLoggerModule.java | 7 +-- .../com/iluwatar/module/FileLoggerModule.java | 7 +-- module/src/main/resources/log4j.xml | 41 ---------------- .../iluwatar/module/FileLoggerModuleTest.java | 5 +- naked-objects/dom/exclude-pmd.properties | 24 --------- naked-objects/dom/pom.xml | 1 - .../bootstrap/SimpleAppSystemInitializer.java | 1 - .../specglue/BootstrappingGlue.java | 1 - .../integtests/tests/SimpleAppIntegTest.java | 1 - naked-objects/webapp/pom.xml | 20 -------- .../domainapp/webapp/SimpleApplication.java | 5 +- .../ConvertToCharArrayHandler.java | 4 +- .../RemoveAlphabetsHandler.java | 4 +- .../RemoveDigitsHandler.java | 4 +- pom.xml | 7 --- serverless/pom.xml | 5 -- .../baas/api/FindPersonApiHandler.java | 11 +++-- .../baas/api/SavePersonApiHandler.java | 5 +- .../faas/api/LambdaInfoApiHandler.java | 7 ++- .../src/main/resources/log4j.properties | 29 ----------- .../com/iluwatar/spatialpartition/App.java | 14 ++++-- .../com/iluwatar/spatialpartition/Bubble.java | 6 ++- tls/src/main/java/com/iluwatar/tls/App.java | 15 ++++-- .../com/iluwatar/tls/DateFormatCallable.java | 9 +++- .../java/com/iluwatar/typeobject/App.java | 17 ++++--- .../com/iluwatar/typeobject/CandyGame.java | 17 ++++--- 50 files changed, 163 insertions(+), 410 deletions(-) delete mode 100644 commander/properties/log4j.properties delete mode 100644 dao/src/main/resources/log4j.xml delete mode 100644 data-mapper/src/main/resources/log4j.xml delete mode 100644 module/src/main/resources/log4j.xml delete mode 100644 naked-objects/dom/exclude-pmd.properties delete mode 100644 serverless/src/main/resources/log4j.properties diff --git a/.gitignore b/.gitignore index fd0bb7810faf..ada1e7d10ce5 100644 --- a/.gitignore +++ b/.gitignore @@ -16,5 +16,4 @@ datanucleus.log /bin/ /bin/ *.log -data-mapper/src/main/resources/log4j.xml event-sourcing/Journal.json diff --git a/collection-pipeline/src/test/java/com/iluwatar/collectionpipeline/AppTest.java b/collection-pipeline/src/test/java/com/iluwatar/collectionpipeline/AppTest.java index 83756985fe06..938cce195a27 100644 --- a/collection-pipeline/src/test/java/com/iluwatar/collectionpipeline/AppTest.java +++ b/collection-pipeline/src/test/java/com/iluwatar/collectionpipeline/AppTest.java @@ -30,12 +30,15 @@ import java.util.Map; import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Tests that Collection Pipeline methods work as expected. */ public class AppTest { - + private static final Logger LOGGER = LoggerFactory.getLogger(AppTest.class); + private List cars = CarFactory.createCars(); @Test @@ -61,7 +64,7 @@ public void testGetGroupingOfCarsByCategory() { new Car("Jeep", "Comanche", 1990, Category.JEEP))); Map> modelsFunctional = FunctionalProgramming.getGroupingOfCarsByCategory(cars); Map> modelsImperative = ImperativeProgramming.getGroupingOfCarsByCategory(cars); - System.out.println("Category " + modelsFunctional); + LOGGER.info("Category " + modelsFunctional); assertEquals(modelsExpected, modelsFunctional); assertEquals(modelsExpected, modelsImperative); } diff --git a/commander/pom.xml b/commander/pom.xml index 4db6b12e7e06..fbe45337707e 100644 --- a/commander/pom.xml +++ b/commander/pom.xml @@ -36,10 +36,5 @@ junit-jupiter-engine test - - log4j - log4j - 1.2.17 - diff --git a/commander/properties/log4j.properties b/commander/properties/log4j.properties deleted file mode 100644 index 6569015544ba..000000000000 --- a/commander/properties/log4j.properties +++ /dev/null @@ -1,41 +0,0 @@ -# -# The MIT License -# Copyright © 2014-2019 Ilkka Seppälä -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# - -#Define root logger options -log4j.rootLogger=TRACE, file, console - -#Define console appender -log4j.appender.console=org.apache.log4j.ConsoleAppender -logrj.appender.console.Target=System.out -log4j.appender.console.layout=org.apache.log4j.PatternLayout -log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd} %d{HH:mm:ss} %5p[%t] %m%n - -#Define rolling file appender -log4j.appender.file=org.apache.log4j.RollingFileAppender -log4j.appender.file.File=/log/logFile.log -log4j.appender.file.Append=true -log4j.appender.file.ImmediateFlush=true -log4j.appender.file.MaxFileSize=10MB -log4j.appender.file.MaxBackupIndex=5 -log4j.appender.file.layout=org.apache.log4j.PatternLayout -log4j.appender.file.layout.ConversionPattern=%d %d{HH:mm:ss} %5p[%t] %m%n diff --git a/commander/src/main/java/com/iluwatar/commander/Commander.java b/commander/src/main/java/com/iluwatar/commander/Commander.java index 8729ea75aeef..dee12df1cee8 100644 --- a/commander/src/main/java/com/iluwatar/commander/Commander.java +++ b/commander/src/main/java/com/iluwatar/commander/Commander.java @@ -23,7 +23,6 @@ package com.iluwatar.commander; import java.util.ArrayList; -import org.apache.log4j.Logger; import com.iluwatar.commander.employeehandle.EmployeeHandle; import com.iluwatar.commander.exceptions.DatabaseUnavailableException; import com.iluwatar.commander.exceptions.ItemUnavailableException; @@ -37,6 +36,8 @@ import com.iluwatar.commander.queue.QueueTask; import com.iluwatar.commander.queue.QueueTask.TaskType; import com.iluwatar.commander.shippingservice.ShippingService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** *

Commander pattern is used to handle all issues that can come up while making a @@ -86,7 +87,7 @@ public class Commander { private final long messageTime; private final long employeeTime; private boolean finalSiteMsgShown; - static final Logger LOG = Logger.getLogger(Commander.class); + static final Logger LOG = LoggerFactory.getLogger(Commander.class); //we could also have another db where it stores all orders Commander(EmployeeHandle empDb, PaymentService pService, ShippingService sService, @@ -125,27 +126,27 @@ private void sendShippingRequest(Order order) throws Exception { String transactionId = shippingService.receiveRequest(order.item, order.user.address); //could save this transaction id in a db too LOG.info("Order " + order.id + ": Shipping placed successfully, transaction id: " + transactionId); - System.out.println("Order has been placed and will be shipped to you. Please wait while we make your" + LOG.info("Order has been placed and will be shipped to you. Please wait while we make your" + " payment... "); sendPaymentRequest(order); return; }; Retry.HandleErrorIssue handleError = (o,err) -> { if (ShippingNotPossibleException.class.isAssignableFrom(err.getClass())) { - System.out.println("Shipping is currently not possible to your address. We are working on the problem " + LOG.info("Shipping is currently not possible to your address. We are working on the problem " + "and will get back to you asap."); finalSiteMsgShown = true; LOG.info("Order " + order.id + ": Shipping not possible to address, trying to add problem to employee db.."); employeeHandleIssue(o); } else if (ItemUnavailableException.class.isAssignableFrom(err.getClass())) { - System.out.println("This item is currently unavailable. We will inform you as soon as the item becomes " + LOG.info("This item is currently unavailable. We will inform you as soon as the item becomes " + "available again."); finalSiteMsgShown = true; LOG.info("Order " + order.id + ": Item " + order.item + " unavailable, trying to add problem to employee " + "handle.."); employeeHandleIssue(o); } else { - System.out.println("Sorry, there was a problem in creating your order. Please try later."); + LOG.info("Sorry, there was a problem in creating your order. Please try later."); LOG.error("Order " + order.id + ": Shipping service unavailable, order not placed.."); finalSiteMsgShown = true; } @@ -183,7 +184,7 @@ public void run() { order.paid = PaymentStatus.Done; LOG.info("Order " + order.id + ": Payment successful, transaction Id: " + transactionId); if (!finalSiteMsgShown) { - System.out.println("Payment made successfully, thank you for shopping with us!!"); + LOG.info("Payment made successfully, thank you for shopping with us!!"); finalSiteMsgShown = true; } sendSuccessMessage(order); @@ -193,7 +194,7 @@ public void run() { Retry.HandleErrorIssue handleError = (o,err) -> { if (PaymentDetailsErrorException.class.isAssignableFrom(err.getClass())) { if (!finalSiteMsgShown) { - System.out.println("There was an error in payment. Your account/card details may have been incorrect. " + LOG.info("There was an error in payment. Your account/card details may have been incorrect. " + "Meanwhile, your order has been converted to COD and will be shipped."); finalSiteMsgShown = true; } @@ -204,7 +205,7 @@ public void run() { try { if (o.messageSent.equals(MessageSent.NoneSent)) { if (!finalSiteMsgShown) { - System.out.println("There was an error in payment. We are on it, and will get back to you " + LOG.info("There was an error in payment. We are on it, and will get back to you " + "asap. Don't worry, your order has been placed and will be shipped."); finalSiteMsgShown = true; } diff --git a/commander/src/main/java/com/iluwatar/commander/messagingservice/MessagingService.java b/commander/src/main/java/com/iluwatar/commander/messagingservice/MessagingService.java index 27c1eee3f1f2..5023cfa1faa2 100644 --- a/commander/src/main/java/com/iluwatar/commander/messagingservice/MessagingService.java +++ b/commander/src/main/java/com/iluwatar/commander/messagingservice/MessagingService.java @@ -24,6 +24,8 @@ import com.iluwatar.commander.Service; import com.iluwatar.commander.exceptions.DatabaseUnavailableException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * The MessagingService is used to send messages to user regarding their order and @@ -32,6 +34,7 @@ */ public class MessagingService extends Service { + private static final Logger LOGGER = LoggerFactory.getLogger(MessagingService.class); enum MessageToSend { PaymentFail, PaymentTrying, PaymentSuccessful @@ -74,7 +77,7 @@ protected String updateDb(Object...parameters) throws DatabaseUnavailableExcepti MessageRequest req = (MessageRequest) parameters[0]; if (this.database.get(req.reqId) == null) { //idempotence, in case db fails here database.add(req); //if successful: - System.out.println(sendMessage(req.msg)); + LOGGER.info(sendMessage(req.msg)); return req.reqId; } return null; diff --git a/converter/src/main/java/com/iluwatar/converter/App.java b/converter/src/main/java/com/iluwatar/converter/App.java index 7d0821c5b501..b21d4dd6afe8 100644 --- a/converter/src/main/java/com/iluwatar/converter/App.java +++ b/converter/src/main/java/com/iluwatar/converter/App.java @@ -24,6 +24,8 @@ import com.google.common.collect.Lists; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.List; @@ -35,6 +37,8 @@ * objects between types. */ public class App { + + private static final Logger LOGGER = LoggerFactory.getLogger(App.class); /** * Program entry point * @@ -45,16 +49,16 @@ public static void main(String[] args) { UserDto dtoUser = new UserDto("John", "Doe", true, "whatever[at]wherever.com"); User user = userConverter.convertFromDto(dtoUser); - System.out.println("Entity converted from DTO:" + user); + LOGGER.info("Entity converted from DTO:" + user); ArrayList users = Lists.newArrayList(new User("Camile", "Tough", false, "124sad"), new User("Marti", "Luther", true, "42309fd"), new User("Kate", "Smith", true, "if0243")); - System.out.println("Domain entities:"); - users.forEach(System.out::println); + LOGGER.info("Domain entities:"); + users.stream().map(User::toString).forEach(LOGGER::info); - System.out.println("DTO entities converted from domain:"); + LOGGER.info("DTO entities converted from domain:"); List dtoEntities = userConverter.createFromEntities(users); - dtoEntities.forEach(System.out::println); + dtoEntities.stream().map(UserDto::toString).forEach(LOGGER::info); } } diff --git a/dao/pom.xml b/dao/pom.xml index b8453f6a574d..5d6bc94546fa 100644 --- a/dao/pom.xml +++ b/dao/pom.xml @@ -40,10 +40,6 @@ junit-jupiter-engine test - - log4j - log4j - com.h2database h2 @@ -53,49 +49,4 @@ mockito-core - - - - - - - - src/main/resources - - - src/main/resources - - log4j.xml - - .. - - - - - - - - org.apache.maven.plugins - maven-jar-plugin - 2.6 - - - log4j.xml - - - - true - - - - - - - diff --git a/dao/src/main/java/com/iluwatar/dao/App.java b/dao/src/main/java/com/iluwatar/dao/App.java index 5824d48cfea6..08d0a42bda3d 100644 --- a/dao/src/main/java/com/iluwatar/dao/App.java +++ b/dao/src/main/java/com/iluwatar/dao/App.java @@ -31,8 +31,9 @@ import javax.sql.DataSource; -import org.apache.log4j.Logger; import org.h2.jdbcx.JdbcDataSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Data Access Object (DAO) is an object that provides an abstract interface to some type of @@ -50,7 +51,7 @@ */ public class App { private static final String DB_URL = "jdbc:h2:~/dao"; - private static Logger log = Logger.getLogger(App.class); + private static Logger log = LoggerFactory.getLogger(App.class); private static final String ALL_CUSTOMERS = "customerDao.getAllCustomers(): "; /** @@ -94,7 +95,7 @@ private static void performOperationsUsing(final CustomerDao customerDao) throws addCustomers(customerDao); log.info(ALL_CUSTOMERS); try (Stream customerStream = customerDao.getAll()) { - customerStream.forEach((customer) -> log.info(customer)); + customerStream.forEach((customer) -> log.info(customer.toString())); } log.info("customerDao.getCustomerById(2): " + customerDao.getById(2)); final Customer customer = new Customer(4, "Dan", "Danson"); @@ -105,7 +106,7 @@ private static void performOperationsUsing(final CustomerDao customerDao) throws customerDao.update(customer); log.info(ALL_CUSTOMERS); try (Stream customerStream = customerDao.getAll()) { - customerStream.forEach((cust) -> log.info(cust)); + customerStream.forEach((cust) -> log.info(cust.toString())); } customerDao.delete(customer); log.info(ALL_CUSTOMERS + customerDao.getAll()); diff --git a/dao/src/main/java/com/iluwatar/dao/DbCustomerDao.java b/dao/src/main/java/com/iluwatar/dao/DbCustomerDao.java index 9d183e91284e..d8640dcb911d 100644 --- a/dao/src/main/java/com/iluwatar/dao/DbCustomerDao.java +++ b/dao/src/main/java/com/iluwatar/dao/DbCustomerDao.java @@ -22,6 +22,9 @@ */ package com.iluwatar.dao; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -35,15 +38,13 @@ import javax.sql.DataSource; -import org.apache.log4j.Logger; - /** * An implementation of {@link CustomerDao} that persists customers in RDBMS. * */ public class DbCustomerDao implements CustomerDao { - private static final Logger LOGGER = Logger.getLogger(DbCustomerDao.class); + private static final Logger LOGGER = LoggerFactory.getLogger(DbCustomerDao.class); private final DataSource dataSource; diff --git a/dao/src/main/resources/log4j.xml b/dao/src/main/resources/log4j.xml deleted file mode 100644 index 5c7e49d51a98..000000000000 --- a/dao/src/main/resources/log4j.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/data-mapper/pom.xml b/data-mapper/pom.xml index cf53fdf65814..7da70f8fd243 100644 --- a/data-mapper/pom.xml +++ b/data-mapper/pom.xml @@ -37,9 +37,5 @@ junit-jupiter-engine test - - log4j - log4j - diff --git a/data-mapper/src/main/java/com/iluwatar/datamapper/App.java b/data-mapper/src/main/java/com/iluwatar/datamapper/App.java index 3504ebbe1c94..6b1d9925333f 100644 --- a/data-mapper/src/main/java/com/iluwatar/datamapper/App.java +++ b/data-mapper/src/main/java/com/iluwatar/datamapper/App.java @@ -22,9 +22,10 @@ */ package com.iluwatar.datamapper; -import java.util.Optional; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import org.apache.log4j.Logger; +import java.util.Optional; /** * The Data Mapper (DM) is a layer of software that separates the in-memory objects from the @@ -39,7 +40,7 @@ */ public final class App { - private static Logger log = Logger.getLogger(App.class); + private static Logger log = LoggerFactory.getLogger(App.class); private static final String STUDENT_STRING = "App.main(), student : "; diff --git a/data-mapper/src/main/resources/log4j.xml b/data-mapper/src/main/resources/log4j.xml deleted file mode 100644 index 5c7e49d51a98..000000000000 --- a/data-mapper/src/main/resources/log4j.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/data-transfer-object/pom.xml b/data-transfer-object/pom.xml index 20c8a52f6c0a..ebdb15afa3dd 100644 --- a/data-transfer-object/pom.xml +++ b/data-transfer-object/pom.xml @@ -37,9 +37,5 @@ junit-jupiter-engine test - - log4j - log4j - diff --git a/dirty-flag/src/main/java/com/iluwatar/dirtyflag/App.java b/dirty-flag/src/main/java/com/iluwatar/dirtyflag/App.java index af95b57bca88..e5368bc3a5a6 100644 --- a/dirty-flag/src/main/java/com/iluwatar/dirtyflag/App.java +++ b/dirty-flag/src/main/java/com/iluwatar/dirtyflag/App.java @@ -22,6 +22,9 @@ */ package com.iluwatar.dirtyflag; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -48,6 +51,8 @@ * when needed. {@link World} mainly serves the data to the front-end. */ public class App { + + private static final Logger LOGGER = LoggerFactory.getLogger(App.class); /** * Program execution point */ @@ -59,9 +64,9 @@ public void run() { @Override public void run() { List countries = world.fetch(); - System.out.println("Our world currently has the following countries:-"); + LOGGER.info("Our world currently has the following countries:-"); for (String country : countries) { - System.out.println("\t" + country); + LOGGER.info("\t" + country); } } }, 0, 15, TimeUnit.SECONDS); // Run at every 15 seconds. diff --git a/dirty-flag/src/main/java/com/iluwatar/dirtyflag/DataFetcher.java b/dirty-flag/src/main/java/com/iluwatar/dirtyflag/DataFetcher.java index 3b91ccd7debb..eca422a86165 100644 --- a/dirty-flag/src/main/java/com/iluwatar/dirtyflag/DataFetcher.java +++ b/dirty-flag/src/main/java/com/iluwatar/dirtyflag/DataFetcher.java @@ -22,6 +22,10 @@ */ package com.iluwatar.dirtyflag; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.xml.crypto.Data; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; @@ -37,6 +41,8 @@ */ public class DataFetcher { + private static final Logger LOGGER = LoggerFactory.getLogger(DataFetcher.class); + private final String filename = "world.txt"; private long lastFetched; @@ -62,7 +68,7 @@ public List fetch() { File file = new File(classLoader.getResource(filename).getFile()); if (isDirty(file.lastModified())) { - System.out.println(filename + " is dirty! Re-fetching file content..."); + LOGGER.info(filename + " is dirty! Re-fetching file content..."); List data = new ArrayList(); try (BufferedReader br = new BufferedReader(new FileReader(file))) { diff --git a/event-queue/src/main/java/com/iluwatar/event/queue/App.java b/event-queue/src/main/java/com/iluwatar/event/queue/App.java index 88cc0bf570ae..87ad78ae6d40 100644 --- a/event-queue/src/main/java/com/iluwatar/event/queue/App.java +++ b/event-queue/src/main/java/com/iluwatar/event/queue/App.java @@ -22,6 +22,9 @@ */ package com.iluwatar.event.queue; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -39,6 +42,8 @@ * items from the queue at a later time. */ public class App { + + private static final Logger LOGGER = LoggerFactory.getLogger(App.class); /** * Program entry point. * @@ -51,7 +56,7 @@ public static void main(String[] args) throws UnsupportedAudioFileException, IOE audio.playSound(audio.getAudioStream("./etc/Bass-Drum-1.wav"), -10.0f); audio.playSound(audio.getAudioStream("./etc/Closed-Hi-Hat-1.wav"), -8.0f); - System.out.println("Press Enter key to stop the program..."); + LOGGER.info("Press Enter key to stop the program..."); try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { br.read(); } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministration.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministration.java index f2aa6d681ba5..4d51710b9d04 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministration.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministration.java @@ -81,7 +81,7 @@ private static void printMainMenu() { } private static String readString(Scanner scanner) { - System.out.print("> "); + LOGGER.info("> "); return scanner.next(); } } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java index 583bf348fc7e..3a41e1ef322f 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java @@ -82,7 +82,7 @@ private static void printMainMenu() { } private static String readString(Scanner scanner) { - System.out.print("> "); + LOGGER.info("> "); return scanner.next(); } } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java index 17f5f1a9bc09..d61ec9108156 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java @@ -122,7 +122,7 @@ public void queryLotteryAccountFunds(WireTransfers bank, Scanner scanner) { } private String readString(Scanner scanner) { - System.out.print( "> " ); + logger.info( "> " ); return scanner.next(); } } diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/App.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/App.java index ce1f7b625653..46c0baf8d16c 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/App.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/App.java @@ -23,6 +23,8 @@ package com.iluwatar.masterworker; import com.iluwatar.masterworker.system.ArrayTransposeMasterWorker; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** *

The Master-Worker pattern is used when the problem at hand can be solved by dividing into @@ -45,7 +47,8 @@ */ public class App { - + + private static final Logger LOGGER = LoggerFactory.getLogger(App.class); /** * Program entry point. * @param args command line args @@ -60,10 +63,9 @@ public static void main(String[] args) { ArrayResult result = (ArrayResult) mw.getResult(input); if (result != null) { ArrayUtilityMethods.printMatrix(inputMatrix); - System.out.println(""); ArrayUtilityMethods.printMatrix(result.data); } else { - System.out.println("Please enter non-zero input"); + LOGGER.info("Please enter non-zero input"); } } diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java index e3125abe8032..fb27e5b486a4 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java @@ -22,6 +22,9 @@ */ package com.iluwatar.masterworker; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.Random; /** @@ -29,7 +32,8 @@ */ public class ArrayUtilityMethods { - + + private static final Logger LOGGER = LoggerFactory.getLogger(ArrayUtilityMethods.class); /** * Method arraysSame compares 2 arrays @param a1 and @param a2 * and @return whether their values are equal (boolean). @@ -100,9 +104,9 @@ public static void printMatrix(int[][] matrix) { //prints out int[][] for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) { - System.out.print(matrix[i][j] + " "); + LOGGER.info(matrix[i][j] + " "); } - System.out.println(""); + LOGGER.info(""); } } diff --git a/module/pom.xml b/module/pom.xml index 920efc01c9da..0a60960b53c6 100644 --- a/module/pom.xml +++ b/module/pom.xml @@ -37,9 +37,5 @@ junit-jupiter-engine test - - log4j - log4j - diff --git a/module/src/main/java/com/iluwatar/module/ConsoleLoggerModule.java b/module/src/main/java/com/iluwatar/module/ConsoleLoggerModule.java index 6ab358777f6e..12eaae1d9be4 100644 --- a/module/src/main/java/com/iluwatar/module/ConsoleLoggerModule.java +++ b/module/src/main/java/com/iluwatar/module/ConsoleLoggerModule.java @@ -22,9 +22,10 @@ */ package com.iluwatar.module; -import java.io.PrintStream; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import org.apache.log4j.Logger; +import java.io.PrintStream; /** * The ConsoleLoggerModule is responsible for showing logs on System Console @@ -34,7 +35,7 @@ */ public final class ConsoleLoggerModule { - private static final Logger LOGGER = Logger.getLogger(ConsoleLoggerModule.class); + private static final Logger LOGGER = LoggerFactory.getLogger(ConsoleLoggerModule.class); private static ConsoleLoggerModule singleton = null; diff --git a/module/src/main/java/com/iluwatar/module/FileLoggerModule.java b/module/src/main/java/com/iluwatar/module/FileLoggerModule.java index 1ec85ea47547..65f954b6cccd 100644 --- a/module/src/main/java/com/iluwatar/module/FileLoggerModule.java +++ b/module/src/main/java/com/iluwatar/module/FileLoggerModule.java @@ -22,12 +22,13 @@ */ package com.iluwatar.module; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintStream; -import org.apache.log4j.Logger; - /** * The FileLoggerModule is responsible for showing logs on File System *

@@ -36,7 +37,7 @@ */ public final class FileLoggerModule { - private static final Logger LOGGER = Logger.getLogger(FileLoggerModule.class); + private static final Logger LOGGER = LoggerFactory.getLogger(FileLoggerModule.class); private static FileLoggerModule singleton = null; diff --git a/module/src/main/resources/log4j.xml b/module/src/main/resources/log4j.xml deleted file mode 100644 index 5c7e49d51a98..000000000000 --- a/module/src/main/resources/log4j.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/module/src/test/java/com/iluwatar/module/FileLoggerModuleTest.java b/module/src/test/java/com/iluwatar/module/FileLoggerModuleTest.java index 5f7616f02321..30f0baae5703 100644 --- a/module/src/test/java/com/iluwatar/module/FileLoggerModuleTest.java +++ b/module/src/test/java/com/iluwatar/module/FileLoggerModuleTest.java @@ -22,8 +22,9 @@ */ package com.iluwatar.module; -import org.apache.log4j.Logger; import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.BufferedReader; import java.io.FileNotFoundException; @@ -45,7 +46,7 @@ */ public final class FileLoggerModuleTest { - private static final Logger LOGGER = Logger.getLogger(FileLoggerModuleTest.class); + private static final Logger LOGGER = LoggerFactory.getLogger(FileLoggerModuleTest.class); private static final String OUTPUT_FILE = "output.txt"; private static final String ERROR_FILE = "error.txt"; diff --git a/naked-objects/dom/exclude-pmd.properties b/naked-objects/dom/exclude-pmd.properties deleted file mode 100644 index e281170f75a4..000000000000 --- a/naked-objects/dom/exclude-pmd.properties +++ /dev/null @@ -1,24 +0,0 @@ -# -# The MIT License -# Copyright © 2014-2019 Ilkka Seppälä -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# - -domainapp.dom.modules.simple.QSimpleObject=UnusedFormalParameter \ No newline at end of file diff --git a/naked-objects/dom/pom.xml b/naked-objects/dom/pom.xml index b8a04a53bb24..2709edda03f4 100644 --- a/naked-objects/dom/pom.xml +++ b/naked-objects/dom/pom.xml @@ -143,7 +143,6 @@ ${datanucleus-maven-plugin.version} false - ${basedir}/log4j.properties true ${basedir}/datanucleus.properties diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java b/naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java index d5f0cd55265a..930a805d5fe2 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java @@ -49,7 +49,6 @@ public static void initIsft() { private static class SimpleAppSystemBuilder extends IsisSystemForTest.Builder { public SimpleAppSystemBuilder() { - withLoggingAt(org.apache.log4j.Level.INFO); with(testConfiguration()); with(new DataNucleusPersistenceMechanismInstaller()); diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java index b53e88af0c0e..4b22615ecc96 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java @@ -36,7 +36,6 @@ public class BootstrappingGlue extends CukeGlueAbstract { @Before(value = {"@integration"}, order = 100) public void beforeScenarioIntegrationScope() { - org.apache.log4j.PropertyConfigurator.configure("logging.properties"); SimpleAppSystemInitializer.initIsft(); before(ScenarioExecutionScope.INTEGRATION); diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java index 0db09fceb69f..0c19714253ba 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java @@ -36,7 +36,6 @@ public abstract class SimpleAppIntegTest extends IntegrationTestAbstract { @BeforeClass public static void initClass() { - org.apache.log4j.PropertyConfigurator.configure("logging.properties"); SimpleAppSystemInitializer.initIsft(); // instantiating will install onto ThreadLocal diff --git a/naked-objects/webapp/pom.xml b/naked-objects/webapp/pom.xml index e26c5f5610ad..e0697b855b31 100644 --- a/naked-objects/webapp/pom.xml +++ b/naked-objects/webapp/pom.xml @@ -216,26 +216,6 @@ hsqldb - - - - - - - org.lazyluke - log4jdbc-remix - - - org.slf4j - slf4j-api - - - - - junit junit diff --git a/naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java b/naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java index cf15632faf53..875212963b67 100644 --- a/naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java +++ b/naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java @@ -50,6 +50,8 @@ import de.agilecoders.wicket.core.settings.IBootstrapSettings; import de.agilecoders.wicket.themes.markup.html.bootswatch.BootswatchTheme; import de.agilecoders.wicket.themes.markup.html.bootswatch.BootswatchThemeProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** @@ -72,6 +74,7 @@ */ public class SimpleApplication extends IsisWicketApplication { + private static final Logger LOGGER = LoggerFactory.getLogger(SimpleApplication.class); private static final long serialVersionUID = 1L; /** @@ -124,7 +127,7 @@ public WebRequest newWebRequest(HttpServletRequest servletRequest, String filter servletRequest.getSession().invalidate(); } } catch (Exception e) { - System.out.println(e); + LOGGER.error(e.getMessage()); } return super.newWebRequest(servletRequest, filterPath); } diff --git a/pipeline/src/main/java/com.iluwatar.pipeline/ConvertToCharArrayHandler.java b/pipeline/src/main/java/com.iluwatar.pipeline/ConvertToCharArrayHandler.java index 3e8df8eefe3f..6a418fef4cf1 100644 --- a/pipeline/src/main/java/com.iluwatar.pipeline/ConvertToCharArrayHandler.java +++ b/pipeline/src/main/java/com.iluwatar.pipeline/ConvertToCharArrayHandler.java @@ -32,12 +32,12 @@ */ class ConvertToCharArrayHandler implements Handler { - private final Logger logger = LoggerFactory.getLogger(ConvertToCharArrayHandler.class); + private static final Logger LOGGER = LoggerFactory.getLogger(ConvertToCharArrayHandler.class); @Override public char[] process(String input) { char[] characters = input.toCharArray(); - logger.info(String.format("Current handler: %s, input is %s of type %s, output is %s, of type %s", + LOGGER.info(String.format("Current handler: %s, input is %s of type %s, output is %s, of type %s", ConvertToCharArrayHandler.class, input, String.class, Arrays.toString(characters), Character[].class)); return characters; diff --git a/pipeline/src/main/java/com.iluwatar.pipeline/RemoveAlphabetsHandler.java b/pipeline/src/main/java/com.iluwatar.pipeline/RemoveAlphabetsHandler.java index 76219249d312..342ed86c23c7 100644 --- a/pipeline/src/main/java/com.iluwatar.pipeline/RemoveAlphabetsHandler.java +++ b/pipeline/src/main/java/com.iluwatar.pipeline/RemoveAlphabetsHandler.java @@ -30,7 +30,7 @@ */ class RemoveAlphabetsHandler implements Handler { - private final Logger logger = LoggerFactory.getLogger(RemoveAlphabetsHandler.class); + private static final Logger LOGGER = LoggerFactory.getLogger(RemoveAlphabetsHandler.class); @Override public String process(String input) { @@ -46,7 +46,7 @@ public String process(String input) { } String inputWithoutAlphabetsStr = inputWithoutAlphabets.toString(); - logger.info(String.format("Current handler: %s, input is %s of type %s, output is %s, of type %s", + LOGGER.info(String.format("Current handler: %s, input is %s of type %s, output is %s, of type %s", RemoveAlphabetsHandler.class, input, String.class, inputWithoutAlphabetsStr, String.class)); return inputWithoutAlphabetsStr; diff --git a/pipeline/src/main/java/com.iluwatar.pipeline/RemoveDigitsHandler.java b/pipeline/src/main/java/com.iluwatar.pipeline/RemoveDigitsHandler.java index d1785c340858..a5320a0a55c4 100644 --- a/pipeline/src/main/java/com.iluwatar.pipeline/RemoveDigitsHandler.java +++ b/pipeline/src/main/java/com.iluwatar.pipeline/RemoveDigitsHandler.java @@ -30,7 +30,7 @@ */ class RemoveDigitsHandler implements Handler { - private final Logger logger = LoggerFactory.getLogger(RemoveDigitsHandler.class); + private static final Logger LOGGER = LoggerFactory.getLogger(RemoveDigitsHandler.class); @Override public String process(String input) { @@ -46,7 +46,7 @@ public String process(String input) { } String inputWithoutDigitsStr = inputWithoutDigits.toString(); - logger.info(String.format("Current handler: %s, input is %s of type %s, output is %s, of type %s", + LOGGER.info(String.format("Current handler: %s, input is %s of type %s, output is %s, of type %s", RemoveDigitsHandler.class, input, String.class, inputWithoutDigitsStr, String.class)); return inputWithoutDigitsStr; diff --git a/pom.xml b/pom.xml index d6cd3a6e60c3..50e7c7de5439 100644 --- a/pom.xml +++ b/pom.xml @@ -56,10 +56,8 @@ 1.2.3 1.1.0 1.11.289 - 1.0.0 2.0.1 2.8.5 - 1.2.17 2.3.1 2.3.2 1.3.2 @@ -304,11 +302,6 @@ mongo-java-driver ${mongo-java-driver.version} - - log4j - log4j - ${log4j.version} - javax.xml.bind jaxb-api diff --git a/serverless/pom.xml b/serverless/pom.xml index 9e142cb3aa30..292df78c55f1 100644 --- a/serverless/pom.xml +++ b/serverless/pom.xml @@ -60,11 +60,6 @@ aws-lambda-java-events ${aws-lambda-java-events.version} - - com.amazonaws - aws-lambda-java-log4j - ${aws-lambda-log4j.version} - com.fasterxml.jackson.core jackson-core diff --git a/serverless/src/main/java/com/iluwatar/serverless/baas/api/FindPersonApiHandler.java b/serverless/src/main/java/com/iluwatar/serverless/baas/api/FindPersonApiHandler.java index 0dac4c614b33..14f2b25a5153 100644 --- a/serverless/src/main/java/com/iluwatar/serverless/baas/api/FindPersonApiHandler.java +++ b/serverless/src/main/java/com/iluwatar/serverless/baas/api/FindPersonApiHandler.java @@ -27,7 +27,10 @@ import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent; import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; import com.iluwatar.serverless.baas.model.Person; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Map; /** * find person from persons collection @@ -36,13 +39,15 @@ public class FindPersonApiHandler extends AbstractDynamoDbHandler implements RequestHandler { - private static final Logger LOG = Logger.getLogger(FindPersonApiHandler.class); + private static final Logger LOG = LoggerFactory.getLogger(FindPersonApiHandler.class); private static final Integer SUCCESS_STATUS_CODE = 200; @Override public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent apiGatewayProxyRequestEvent, Context context) { - LOG.info(apiGatewayProxyRequestEvent.getPathParameters()); + Map pathParameters = apiGatewayProxyRequestEvent.getPathParameters(); + pathParameters.keySet().stream().map(key -> key + "=" + pathParameters.get(key)).forEach(LOG::info); + Person person = this.getDynamoDbMapper().load(Person.class, apiGatewayProxyRequestEvent .getPathParameters().get("id")); diff --git a/serverless/src/main/java/com/iluwatar/serverless/baas/api/SavePersonApiHandler.java b/serverless/src/main/java/com/iluwatar/serverless/baas/api/SavePersonApiHandler.java index d77687d23b1f..8ef4b839ec63 100644 --- a/serverless/src/main/java/com/iluwatar/serverless/baas/api/SavePersonApiHandler.java +++ b/serverless/src/main/java/com/iluwatar/serverless/baas/api/SavePersonApiHandler.java @@ -27,7 +27,8 @@ import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent; import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; import com.iluwatar.serverless.baas.model.Person; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; @@ -38,7 +39,7 @@ public class SavePersonApiHandler extends AbstractDynamoDbHandler implements RequestHandler { - private static final Logger LOG = Logger.getLogger(SavePersonApiHandler.class); + private static final Logger LOG = LoggerFactory.getLogger(SavePersonApiHandler.class); private static final Integer CREATED_STATUS_CODE = 201; private static final Integer BAD_REQUEST_STATUS_CODE = 400; diff --git a/serverless/src/main/java/com/iluwatar/serverless/faas/api/LambdaInfoApiHandler.java b/serverless/src/main/java/com/iluwatar/serverless/faas/api/LambdaInfoApiHandler.java index 1157c962cb7c..174e409c35c6 100644 --- a/serverless/src/main/java/com/iluwatar/serverless/faas/api/LambdaInfoApiHandler.java +++ b/serverless/src/main/java/com/iluwatar/serverless/faas/api/LambdaInfoApiHandler.java @@ -27,8 +27,8 @@ import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; import com.iluwatar.serverless.faas.LambdaInfo; -import org.apache.log4j.BasicConfigurator; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.HashMap; import java.util.Map; @@ -39,13 +39,12 @@ */ public class LambdaInfoApiHandler implements RequestHandler, ApiGatewayResponse> { - private static final Logger LOG = Logger.getLogger(LambdaInfoApiHandler.class); + private static final Logger LOG = LoggerFactory.getLogger(LambdaInfoApiHandler.class); private static final Integer SUCCESS_STATUS_CODE = 200; @Override public ApiGatewayResponse handleRequest(Map input, Context context) { - BasicConfigurator.configure(); LOG.info("received: " + input); return new ApiGatewayResponse diff --git a/serverless/src/main/resources/log4j.properties b/serverless/src/main/resources/log4j.properties deleted file mode 100644 index 2c666e2869ad..000000000000 --- a/serverless/src/main/resources/log4j.properties +++ /dev/null @@ -1,29 +0,0 @@ -# -# The MIT License -# Copyright © 2014-2019 Ilkka Seppälä -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# - -log = . -log4j.rootLogger = DEBUG, LAMBDA - -log4j.appender.LAMBDA=com.amazonaws.services.lambda.runtime.log4j.LambdaAppender -log4j.appender.LAMBDA.layout=org.apache.log4j.PatternLayout -log4j.appender.LAMBDA.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss} <%X{AWSRequestId}> %-5p %c:%L - %m%n diff --git a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/App.java b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/App.java index 179f11d045f2..f6a07de62f6a 100644 --- a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/App.java +++ b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/App.java @@ -22,6 +22,9 @@ */ package com.iluwatar.spatialpartition; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.ArrayList; import java.util.Enumeration; import java.util.Hashtable; @@ -52,6 +55,7 @@ */ public class App { + private static final Logger LOGGER = LoggerFactory.getLogger(App.class); static void noSpatialPartition(int height, int width, int numOfMovements, Hashtable bubbles) { @@ -73,7 +77,7 @@ static void noSpatialPartition(int height, int width, } for (Integer key : bubbles.keySet()) { //bubbles not popped - System.out.println("Bubble " + key + " not popped"); + LOGGER.info("Bubble " + key + " not popped"); } } @@ -101,7 +105,7 @@ static void withSpatialPartition(int height, int width, } for (Integer key : bubbles.keySet()) { //bubbles not popped - System.out.println("Bubble " + key + " not popped"); + LOGGER.info("Bubble " + key + " not popped"); } } @@ -119,7 +123,7 @@ public static void main(String[] args) { Bubble b = new Bubble(rand.nextInt(300), rand.nextInt(300), i, rand.nextInt(2) + 1); bubbles1.put(i, b); bubbles2.put(i, b); - System.out.println("Bubble " + i + " with radius " + b.radius + " added at (" + b.x + "," + b.y + ")"); + LOGGER.info("Bubble " + i + " with radius " + b.radius + " added at (" + b.x + "," + b.y + ")"); } long start1 = System.currentTimeMillis(); @@ -128,8 +132,8 @@ public static void main(String[] args) { long start2 = System.currentTimeMillis(); App.withSpatialPartition(300,300,20,bubbles2); long end2 = System.currentTimeMillis(); - System.out.println("Without spatial partition takes " + (end1 - start1) + "ms"); - System.out.println("With spatial partition takes " + (end2 - start2) + "ms"); + LOGGER.info("Without spatial partition takes " + (end1 - start1) + "ms"); + LOGGER.info("With spatial partition takes " + (end2 - start2) + "ms"); } } diff --git a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Bubble.java b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Bubble.java index 3e3d418373ff..01faa8371378 100644 --- a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Bubble.java +++ b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Bubble.java @@ -22,6 +22,9 @@ */ package com.iluwatar.spatialpartition; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.ArrayList; import java.util.Hashtable; import java.util.Random; @@ -32,6 +35,7 @@ */ public class Bubble extends Point { + private static final Logger LOGGER = LoggerFactory.getLogger(Bubble.class); final int radius; @@ -54,7 +58,7 @@ boolean touches(Bubble b) { } void pop(Hashtable allBubbles) { - System.out.println("Bubble " + this.id + " popped at (" + this.x + "," + this.y + ")!"); + LOGGER.info("Bubble " + this.id + " popped at (" + this.x + "," + this.y + ")!"); allBubbles.remove(this.id); } diff --git a/tls/src/main/java/com/iluwatar/tls/App.java b/tls/src/main/java/com/iluwatar/tls/App.java index cd216ac75f1e..33f8c312907f 100644 --- a/tls/src/main/java/com/iluwatar/tls/App.java +++ b/tls/src/main/java/com/iluwatar/tls/App.java @@ -22,6 +22,9 @@ */ package com.iluwatar.tls; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.Calendar; import java.util.Date; import java.util.concurrent.ExecutorService; @@ -64,6 +67,8 @@ * @author Thomas Bauer, 2017 */ public class App { + + private static final Logger LOGGER = LoggerFactory.getLogger(App.class); /** * Program entry point * @@ -99,11 +104,11 @@ public static void main(String[] args) { // a correct run should deliver 20 times 15.12.2015 // and a correct run shouldn't deliver any exception - System.out.println("The List dateList contains " + counterDateValues + " date values"); - System.out.println("The List exceptionList contains " + counterExceptions + " exceptions"); + LOGGER.info("The List dateList contains " + counterDateValues + " date values"); + LOGGER.info("The List exceptionList contains " + counterExceptions + " exceptions"); } catch (Exception e) { - System.out.println("Abnormal end of program. Program throws exception: " + e); + LOGGER.info("Abnormal end of program. Program throws exception: " + e); } executor.shutdown(); } @@ -121,7 +126,7 @@ private static int printAndCountDates(Result res) { Calendar cal = Calendar.getInstance(); cal.setTime(dt); // Formatted output of the date value: DD.MM.YYYY - System.out.println( + LOGGER.info( cal.get(Calendar.DAY_OF_MONTH) + "." + cal.get(Calendar.MONTH) + "." + +cal.get(Calendar.YEAR)); } return counter; @@ -138,7 +143,7 @@ private static int printAndCountExceptions(Result res) { int counter = 0; for (String ex : res.getExceptionList()) { counter++; - System.out.println(ex); + LOGGER.info(ex); } return counter; } diff --git a/tls/src/main/java/com/iluwatar/tls/DateFormatCallable.java b/tls/src/main/java/com/iluwatar/tls/DateFormatCallable.java index 8018e7996cb9..a047828ce3e6 100644 --- a/tls/src/main/java/com/iluwatar/tls/DateFormatCallable.java +++ b/tls/src/main/java/com/iluwatar/tls/DateFormatCallable.java @@ -22,6 +22,9 @@ */ package com.iluwatar.tls; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.concurrent.Callable; @@ -40,6 +43,8 @@ * @author Thomas Bauer, 2017 */ public class DateFormatCallable implements Callable { + + private static final Logger LOGGER = LoggerFactory.getLogger(DateFormatCallable.class); // class variables (members) private ThreadLocal df; //TLTL // private DateFormat df; //NTLNTL @@ -72,7 +77,7 @@ protected DateFormat initialValue() { //TLTL */ @Override public Result call() { - System.out.println(Thread.currentThread() + " started executing..."); + LOGGER.info(Thread.currentThread() + " started executing..."); Result result = new Result(); // Convert date value to date 5 times @@ -90,7 +95,7 @@ public Result call() { } - System.out.println(Thread.currentThread() + " finished processing part of the thread"); + LOGGER.info(Thread.currentThread() + " finished processing part of the thread"); return result; } diff --git a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/App.java b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/App.java index 93e7a4ea84b9..2e6db9dd68a3 100644 --- a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/App.java +++ b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/App.java @@ -25,6 +25,8 @@ import java.io.FileNotFoundException; import java.io.IOException; import org.json.simple.parser.ParseException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /**

Type object pattern is the pattern we use when the OOP concept of creating a base class and * inheriting from it just doesn't work for the case in hand. This happens when we either don't know @@ -45,6 +47,7 @@ public class App { + private static final Logger LOGGER = LoggerFactory.getLogger(App.class); /** * Program entry point. * @param args command line args @@ -62,9 +65,9 @@ public static void main(String[] args) throws FileNotFoundException, IOException CellPool pool = new CellPool(numOfRows * numOfRows + 5); CandyGame cg = new CandyGame(numOfRows, pool); if (round > 1) { - System.out.println("Refreshing.."); + LOGGER.info("Refreshing.."); } else { - System.out.println("Starting game.."); + LOGGER.info("Starting game.."); } cg.printGameStatus(); end = System.currentTimeMillis(); @@ -72,13 +75,13 @@ public static void main(String[] args) throws FileNotFoundException, IOException pointsWon += cg.totalPoints; end = System.currentTimeMillis(); } - System.out.println("Game Over"); + LOGGER.info("Game Over"); if (pointsWon >= toWin) { - System.out.println(pointsWon); - System.out.println("You win!!"); + LOGGER.info("" + pointsWon); + LOGGER.info("You win!!"); } else { - System.out.println(pointsWon); - System.out.println("Sorry, you lose!"); + LOGGER.info("" + pointsWon); + LOGGER.info("Sorry, you lose!"); } } } diff --git a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CandyGame.java b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CandyGame.java index 200a96f8b9c5..516b4cf76bfd 100644 --- a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CandyGame.java +++ b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CandyGame.java @@ -24,6 +24,8 @@ import java.util.ArrayList; import com.iluwatar.typeobject.Candy.Type; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * The CandyGame class contains the rules for the continuation of the game and has @@ -31,6 +33,9 @@ */ public class CandyGame { + + private static final Logger LOGGER = LoggerFactory.getLogger(CandyGame.class); + Cell[][] cells; CellPool pool; int totalPoints; @@ -57,21 +62,21 @@ static String numOfSpaces(int num) { } void printGameStatus() { - System.out.println(""); + LOGGER.info(""); for (int i = 0; i < cells.length; i++) { for (int j = 0; j < cells.length; j++) { String candyName = cells[i][j].candy.name; if (candyName.length() < 20) { int totalSpaces = 20 - candyName.length(); - System.out.print(numOfSpaces(totalSpaces / 2) + cells[i][j].candy.name + LOGGER.info(numOfSpaces(totalSpaces / 2) + cells[i][j].candy.name + numOfSpaces(totalSpaces - totalSpaces / 2) + "|"); } else { - System.out.print(candyName + "|"); + LOGGER.info(candyName + "|"); } } - System.out.println(""); + LOGGER.info(""); } - System.out.println(""); + LOGGER.info(""); } ArrayList adjacentCells(int yIndex, int xIndex) { @@ -121,7 +126,7 @@ boolean continueRound() { } void handleChange(int points) { - System.out.println("+" + points + " points!"); + LOGGER.info("+" + points + " points!"); this.totalPoints += points; printGameStatus(); } From 47d92bbffb0e75fcbf9ea6d80dec8e15402834f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Mon, 14 Oct 2019 08:17:52 +0300 Subject: [PATCH 13/68] #996 set sonar host url --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6cd971428327..f8d204071a49 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,7 +19,7 @@ addons: secure: "FpHwMYPMkdWU6CeIB7+O3qIeIM4vJMp47UjkKK53f0w0s6tPZofZZkab+gcL2TqKSil7sFVB/AQXU1cUubflRszwcLbNsc8H2yFehD79o0o0Mqd1Dd5ip/q0KQbHkkln+InFlVLfvrLB4Xd4mlQVxbGhqpULBhXjKzFzQlRFcuU=" script: # the following command line builds the project, runs the tests with coverage and then execute the SonarCloud analysis - - mvn clean verify sonar:sonar -Dsonar.projectKey=iluwatar_java-design-patterns + - mvn clean verify sonar:sonar -Dsonar.projectKey=iluwatar_java-design-patterns -Dsonar.host.url=https://sonarcloud.io after_success: - bash update-ghpages.sh From 088bb764f35ec5d37e58ef1eb66bfce80378db5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Mon, 14 Oct 2019 20:25:35 +0300 Subject: [PATCH 14/68] #996 disable sonar analysis for pull requests (#999) --- .travis.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index f8d204071a49..bfb6d8422e29 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,8 +18,10 @@ addons: token: secure: "FpHwMYPMkdWU6CeIB7+O3qIeIM4vJMp47UjkKK53f0w0s6tPZofZZkab+gcL2TqKSil7sFVB/AQXU1cUubflRszwcLbNsc8H2yFehD79o0o0Mqd1Dd5ip/q0KQbHkkln+InFlVLfvrLB4Xd4mlQVxbGhqpULBhXjKzFzQlRFcuU=" script: - # the following command line builds the project, runs the tests with coverage and then execute the SonarCloud analysis - - mvn clean verify sonar:sonar -Dsonar.projectKey=iluwatar_java-design-patterns -Dsonar.host.url=https://sonarcloud.io + # Because of Travis security restrictions, SonarCloud analysis cannot be run on pull requests originated from forks + # See https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions + - 'if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then mvn clean verify; fi' + - 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then mvn clean verify sonar:sonar -Dsonar.projectKey=iluwatar_java-design-patterns -Dsonar.host.url=https://sonarcloud.io; fi' after_success: - bash update-ghpages.sh From 7e698a90dd7664e119ec0b082883ea48dc12ae2e Mon Sep 17 00:00:00 2001 From: Aditya Pal Date: Tue, 15 Oct 2019 00:02:19 +0530 Subject: [PATCH 15/68] Fix for issue #413: Circuit Breaker Pattern (#986) * Fix Issue #413: Circuit-Breaker Pattern * Fix Image Links * Remove Javadoc plugin to ensure correct build * Implementing code review feedback * Sync README with actual code --- circuit-breaker/README.md | 188 ++++++++++++++++++ circuit-breaker/etc/ServiceDiagram.PNG | Bin 0 -> 24371 bytes circuit-breaker/etc/StateDiagram.PNG | Bin 0 -> 19396 bytes circuit-breaker/pom.xml | 40 ++++ .../java/com/iluwatar/circuitbreaker/App.java | 86 ++++++++ .../circuitbreaker/CircuitBreaker.java | 128 ++++++++++++ .../circuitbreaker/DelayedService.java | 61 ++++++ .../circuitbreaker/MonitoringService.java | 50 +++++ .../com/iluwatar/circuitbreaker/State.java | 33 +++ .../circuitbreaker/CircuitBreakerTest.java | 80 ++++++++ .../circuitbreaker/DelayedServiceTest.java | 42 ++++ .../circuitbreaker/MonitoringServiceTest.java | 63 ++++++ pom.xml | 1 + 13 files changed, 772 insertions(+) create mode 100644 circuit-breaker/README.md create mode 100644 circuit-breaker/etc/ServiceDiagram.PNG create mode 100644 circuit-breaker/etc/StateDiagram.PNG create mode 100644 circuit-breaker/pom.xml create mode 100644 circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/App.java create mode 100644 circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/CircuitBreaker.java create mode 100644 circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/DelayedService.java create mode 100644 circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/MonitoringService.java create mode 100644 circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/State.java create mode 100644 circuit-breaker/src/test/java/com/iluwatar/circuitbreaker/CircuitBreakerTest.java create mode 100644 circuit-breaker/src/test/java/com/iluwatar/circuitbreaker/DelayedServiceTest.java create mode 100644 circuit-breaker/src/test/java/com/iluwatar/circuitbreaker/MonitoringServiceTest.java diff --git a/circuit-breaker/README.md b/circuit-breaker/README.md new file mode 100644 index 000000000000..db75ca58c0d0 --- /dev/null +++ b/circuit-breaker/README.md @@ -0,0 +1,188 @@ +--- +layout: pattern +title: CircuitBreaker +folder: circuit-breaker +permalink: /patterns/circuit-breaker/ +categories: Other +tags: + - Java + - Performance + - Difficulty-Intermediate +--- + +## Intent + +Handle costly remote *procedure/service* calls in such a way that the failure of a **single** service/component cannot bring the whole application down, and we can reconnect to the service as soon as possible. + +## Explanation + +Real world example + +> Imagine a Web App that has both local (example: files and images) and remote (example: database entries) to serve. The database might not be responding due to a variety of reasons, so if the application keeps trying to read from the database using multiple threads/processes, soon all of them will hang and our entire web application will crash. We should be able to detect this situation and show the user an appropriate message so that he/she can explore other parts of the app unaffected by the database failure without any problem. + +In plain words + +> Allows us to save resources when we know a remote service failed. Useful when all parts of our application are highly decoupled from each other, and failure of one component doesn't mean the other parts will stop working. + +Wikipedia says + +> **Circuit breaker** is a design pattern used in modern software development. It is used to detect failures and encapsulates the logic of preventing a failure from constantly recurring, during maintenance, temporary external system failure or unexpected system difficulties. + +So, how does this all come together? + +## Programmatic Example +With the above example in mind we will imitate the functionality in a simple manner. We have two services: A *monitoring service* which will mimic the web app and will make both **local** and **remote** calls. + +The service architecture is as follows: + +![alt text](./etc/ServiceDiagram.PNG "Service Diagram") + +In terms of code, the End user application is: + +```java +public class App { + + private static final Logger LOGGER = LoggerFactory.getLogger(App.class); + + public static void main(String[] args) { + var obj = new MonitoringService(); + var circuitBreaker = new CircuitBreaker(3000, 1, 2000 * 1000 * 1000); + var serverStartTime = System.nanoTime(); + while (true) { + LOGGER.info(obj.localResourceResponse()); + LOGGER.info(obj.remoteResourceResponse(circuitBreaker, serverStartTime)); + LOGGER.info(circuitBreaker.getState()); + try { + Thread.sleep(5 * 1000); + } catch (InterruptedException e) { + LOGGER.error(e.getMessage()); + } + } + } +} +``` + +The monitoring service is: + +``` java +public class MonitoringService { + + public String localResourceResponse() { + return "Local Service is working"; + } + + public String remoteResourceResponse(CircuitBreaker circuitBreaker, long serverStartTime) { + try { + return circuitBreaker.call("delayedService", serverStartTime); + } catch (Exception e) { + return e.getMessage(); + } + } +} +``` +As it can be seen, it does the call to get local resources directly, but it wraps the call to remote (costly) service in a circuit breaker object, which prevents faults as follows: + +```java +public class CircuitBreaker { + private final long timeout; + private final long retryTimePeriod; + long lastFailureTime; + int failureCount; + private final int failureThreshold; + private State state; + private final long futureTime = 1000 * 1000 * 1000 * 1000; + + CircuitBreaker(long timeout, int failureThreshold, long retryTimePeriod) { + this.state = State.CLOSED; + this.failureThreshold = failureThreshold; + this.timeout = timeout; + this.retryTimePeriod = retryTimePeriod; + this.lastFailureTime = System.nanoTime() + futureTime; + this.failureCount = 0; + } + + private void reset() { + this.failureCount = 0; + this.lastFailureTime = System.nanoTime() + futureTime; + this.state = State.CLOSED; + } + + private void recordFailure() { + failureCount = failureCount + 1; + this.lastFailureTime = System.nanoTime(); + } + + protected void setState() { + if (failureCount > failureThreshold) { + if ((System.nanoTime() - lastFailureTime) > retryTimePeriod) { + state = State.HALF_OPEN; + } else { + state = State.OPEN; + } + } else { + state = State.CLOSED; + } + } + + public String getState() { + return state.name(); + } + + public void setStateForBypass(State state) { + this.state = state; + } + + public String call(String serviceToCall, long serverStartTime) throws Exception { + setState(); + if (state == State.OPEN) { + return "This is stale response from API"; + } else { + if (serviceToCall.equals("delayedService")) { + var delayedService = new DelayedService(20); + var response = delayedService.response(serverStartTime); + if (response.split(" ")[3].equals("working")) { + reset(); + return response; + } else { + recordFailure(); + throw new Exception("Remote service not responding"); + } + } else { + throw new Exception("Unknown Service Name"); + } + } + } +} +``` + +How does the above pattern prevent failures? Let's understand via this finite state machine implemented by it. + +![alt text](./etc/StateDiagram.PNG "State Diagram") + +- We initialize the Circuit Breaker object with certain parameters: **timeout**, **failureThreshold** and **retryTimePeriod** which help determine how resilient the API is. +- Initially, we are in the **closed** state and the remote call to API happens. +- Every time the call succeeds, we reset the state to as it was in the beginning. +- If the number of failures cross a certain threshold, we move to the **open** state, which acts just like an open circuit and prevents remote service calls from being made, thus saving resources. (Here, we return the response called ```stale response from API```) +- Once we exceed the retry timeout period, we move to the **half-open** state and make another call to the remote service again to check if the service is working so that we can serve fresh content. A *failure* sets it back to **open** state and another attempt is made after retry timeout period, while a *success* sets it to **closed** state so that everything starts working normally again. + + +## Applicability +Use the Circuit Breaker pattern when + +- Building a fault-tolerant application where failure of some services shouldn't bring the entire application down. +- Building an continuously incremental/continuous delivery application, as some of it's components can be upgraded without shutting it down entirely. + +## Related Patterns + +- [Retry Pattern](https://github.com/iluwatar/java-design-patterns/tree/master/retry) + +## Real world examples +* [Spring Circuit Breaker module](https://spring.io/guides/gs/circuit-breaker) +* [Netflix Hystrix API](https://github.com/Netflix/Hystrix) + +## Credits + +* [Understanding Circuit Breaker Pattern](https://itnext.io/understand-circuitbreaker-design-pattern-with-simple-practical-example-92a752615b42) +* [Martin Fowler on Circuit Breaker](https://martinfowler.com/bliki/CircuitBreaker.html) +* [Fault tolerance in a high volume, distributed system](https://medium.com/netflix-techblog/fault-tolerance-in-a-high-volume-distributed-system-91ab4faae74a) +* [Microsoft docs](https://docs.microsoft.com/en-us/azure/architecture/patterns/circuit-breaker) diff --git a/circuit-breaker/etc/ServiceDiagram.PNG b/circuit-breaker/etc/ServiceDiagram.PNG new file mode 100644 index 0000000000000000000000000000000000000000..661f1a1058181b689b0724418e598f7b5b245c31 GIT binary patch literal 24371 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 literal 0 HcmV?d00001 diff --git a/circuit-breaker/etc/StateDiagram.PNG b/circuit-breaker/etc/StateDiagram.PNG new file mode 100644 index 0000000000000000000000000000000000000000..38485526d34288bac6d2b0435437c13503f3c567 GIT binary patch literal 19396 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 literal 0 HcmV?d00001 diff --git a/circuit-breaker/pom.xml b/circuit-breaker/pom.xml new file mode 100644 index 000000000000..b6587b061f7a --- /dev/null +++ b/circuit-breaker/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + + com.iluwatar + java-design-patterns + 1.22.0-SNAPSHOT + + circuit-breaker + + + org.junit.jupiter + junit-jupiter-engine + test + + + diff --git a/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/App.java b/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/App.java new file mode 100644 index 000000000000..d1d361b16063 --- /dev/null +++ b/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/App.java @@ -0,0 +1,86 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.circuitbreaker; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + *

+ * The intention of the Circuit Builder pattern is to handle remote failures + * robustly, which is to mean that if a service is dependant on n number of + * other services, and m of them fail, we should be able to recover from that + * failure by ensuring that the user can still use the services that are actually + * functional, and resources are not tied up by uselessly by the services which + * are not working. However, we should also be able to detect when any of the m + * failing services become operational again, so that we can use it + *

+ *

+ * In this example, the circuit breaker pattern is demonstrated by using two services: + * {@link MonitoringService} and {@link DelayedService}. The monitoring service + * is responsible for calling two services: a local service and a remote service {@link DelayedService} + * , and by using the circuit breaker construction we ensure that if the call to + * remote service is going to fail, we are going to save our resources and not make the + * function call at all, by wrapping our call to the remote service in the circuit + * breaker object. + *

+ *

+ * This works as follows: The {@link CircuitBreaker} object can be in one of three + * states: Open, Closed and Half-Open, which represents the real + * world circuits. If the state is closed (initial), we assume everything is alright + * and perform the function call. However, every time the call fails, we note it + * and once it crosses a threshold, we set the state to Open, preventing any further + * calls to the remote server. Then, after a certain retry period (during which we + * expect thee service to recover), we make another call to the remote server and + * this state is called the Half-Open state, where it stays till the service is down, + * and once it recovers, it goes back to the closed state and the cycle continues. + *

+ */ +public class App { + + private static final Logger LOGGER = LoggerFactory.getLogger(App.class); + + /** + * Program entry point + * + * @param args command line args + */ + public static void main(String[] args) { + //Create an object of monitoring service which makes both local and remote calls + var obj = new MonitoringService(); + //Set the circuit Breaker parameters + var circuitBreaker = new CircuitBreaker(3000, 1, 2000 * 1000 * 1000); + var serverStartTime = System.nanoTime(); + while (true) { + LOGGER.info(obj.localResourceResponse()); + LOGGER.info(obj.remoteResourceResponse(circuitBreaker, serverStartTime)); + LOGGER.info(circuitBreaker.getState()); + try { + Thread.sleep(5 * 1000); + } catch (InterruptedException e) { + LOGGER.error(e.getMessage()); + } + } + } +} diff --git a/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/CircuitBreaker.java b/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/CircuitBreaker.java new file mode 100644 index 000000000000..ad014f9fdae0 --- /dev/null +++ b/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/CircuitBreaker.java @@ -0,0 +1,128 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.circuitbreaker; + +/** + * The circuit breaker class with all configurations + */ +public class CircuitBreaker { + private final long timeout; + private final long retryTimePeriod; + long lastFailureTime; + int failureCount; + private final int failureThreshold; + private State state; + private final long futureTime = 1000 * 1000 * 1000 * 1000; + + /** + * Constructor to create an instance of Circuit Breaker + * @param timeout Timeout for the API request. Not necessary for this simple example + * @param failureThreshold Number of failures we receive from the depended service before changing state to 'OPEN' + * @param retryTimePeriod Time period after which a new request is made to remote service for status check. + */ + CircuitBreaker(long timeout, int failureThreshold, long retryTimePeriod) { + // We start in a closed state hoping that everything is fine + this.state = State.CLOSED; + this.failureThreshold = failureThreshold; + // Timeout for the API request. Used to break the calls made to remote resource if it exceeds the limit + this.timeout = timeout; + this.retryTimePeriod = retryTimePeriod; + //An absurd amount of time in future which basically indicates the last failure never happened + this.lastFailureTime = System.nanoTime() + futureTime; + this.failureCount = 0; + } + + //Reset everything to defaults + private void reset() { + this.failureCount = 0; + this.lastFailureTime = System.nanoTime() + futureTime; + this.state = State.CLOSED; + } + + private void recordFailure() { + failureCount = failureCount + 1; + this.lastFailureTime = System.nanoTime(); + } + + protected void setState() { + if (failureCount > failureThreshold) { //Then something is wrong with remote service + if ((System.nanoTime() - lastFailureTime) > retryTimePeriod) { + //We have waited long enough and should try checking if service is up + state = State.HALF_OPEN; + } else { + //Service would still probably be down + state = State.OPEN; + } + } else { + //Everything is working fine + state = State.CLOSED; + } + } + + public String getState() { + return state.name(); + } + + /** + * Break the circuit beforehand if it is known service is down + * Or connect the circuit manually if service comes online before expected + * @param state State at which circuit is in + */ + public void setStateForBypass(State state) { + this.state = state; + } + + /** + * @param serviceToCall The name of the service in String. Can be changed to data URLs in case of web applications + * @param serverStartTime Time at which actual server was started which makes calls to this service + * @return Value from the remote resource, stale response or a custom exception + */ + public String call(String serviceToCall, long serverStartTime) throws Exception { + setState(); + if (state == State.OPEN) { + // return cached response if no the circuit is in OPEN state + return "This is stale response from API"; + } else { + // Make the API request if the circuit is not OPEN + if (serviceToCall.equals("delayedService")) { + var delayedService = new DelayedService(20); + var response = delayedService.response(serverStartTime); + //In a real application, this would be run in a thread and the timeout + //parameter of the circuit breaker would be utilized to know if service + //is working. Here, we simulate that based on server response itself + if (response.split(" ")[3].equals("working")) { + // Yay!! the API responded fine. Let's reset everything. + reset(); + return response; + } else { + // Uh-oh!! the call still failed. Let's update that in our records. + recordFailure(); + throw new Exception("Remote service not responding"); + } + } else { + throw new Exception("Unknown Service Name"); + } + } + } +} \ No newline at end of file diff --git a/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/DelayedService.java b/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/DelayedService.java new file mode 100644 index 000000000000..33217b8e721b --- /dev/null +++ b/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/DelayedService.java @@ -0,0 +1,61 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.circuitbreaker; + +/** +* This simulates the remote service +* It responds only after a certain timeout period (default set to 20 seconds) +*/ +public class DelayedService { + private final int delay; + + /** + * Constructor to create an instance of DelayedService, which is down for first few seconds + * @param delay the delay after which service would behave properly, in seconds + */ + public DelayedService(int delay) { + this.delay = delay; + } + + public DelayedService() { + this.delay = 60; + } + + /** + * @param serverStartTime Time at which actual server was started which makes calls to this service + * @return The state of the service + */ + public String response(long serverStartTime) { + var currentTime = System.nanoTime(); + //Since currentTime and serverStartTime are both in nanoseconds, we convert it to + //seconds by diving by 10e9 and ensure floating point division by multiplying it + //with 1.0 first. We then check if it is greater or less than specified delay and then + //send the reply + if ((currentTime - serverStartTime) * 1.0 / (1000 * 1000 * 1000) < delay) { + //Can use Thread.sleep() here to block and simulate a hung server + return "Delayed service is down"; + } else { + return "Delayed service is working"; + } + } +} diff --git a/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/MonitoringService.java b/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/MonitoringService.java new file mode 100644 index 000000000000..e301ff3ca52b --- /dev/null +++ b/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/MonitoringService.java @@ -0,0 +1,50 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.circuitbreaker; + +/** + * The service class which makes local and remote calls + * Uses {@link CircuitBreaker} object to ensure remote calls don't use up resources + */ +public class MonitoringService { + + //Assumption: Local service won't fail, no need to wrap it in a circuit breaker logic + public String localResourceResponse() { + return "Local Service is working"; + } + + /** + * Try to get result from remote server + * @param circuitBreaker The circuitBreaker object with all parameters + * @param serverStartTime Time at which actual server was started which makes calls to this service + * @return result from the remote response or exception raised by it. + */ + public String remoteResourceResponse(CircuitBreaker circuitBreaker, long serverStartTime) { + try { + return circuitBreaker.call("delayedService", serverStartTime); + } catch (Exception e) { + return e.getMessage(); + } + } +} \ No newline at end of file diff --git a/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/State.java b/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/State.java new file mode 100644 index 000000000000..87982153ccd0 --- /dev/null +++ b/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/State.java @@ -0,0 +1,33 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.circuitbreaker; + +/** + * Enumeration for states the circuit breaker could be in + */ +public enum State { + CLOSED, + OPEN, + HALF_OPEN +} \ No newline at end of file diff --git a/circuit-breaker/src/test/java/com/iluwatar/circuitbreaker/CircuitBreakerTest.java b/circuit-breaker/src/test/java/com/iluwatar/circuitbreaker/CircuitBreakerTest.java new file mode 100644 index 000000000000..5780e9355c58 --- /dev/null +++ b/circuit-breaker/src/test/java/com/iluwatar/circuitbreaker/CircuitBreakerTest.java @@ -0,0 +1,80 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.circuitbreaker; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; + +/** + * + * Circuit Breaker test + * + */ +public class CircuitBreakerTest { + + //long timeout, int failureThreshold, long retryTimePeriod + @Test + public void testSetState() { + var circuitBreaker = new CircuitBreaker(1,1,100); + //Right now, failureCountfailureThreshold, and lastFailureTime is nearly equal to current time, + //state should be half-open + assertEquals(circuitBreaker.getState(), "HALF_OPEN"); + //Since failureCount>failureThreshold, and lastFailureTime is much lesser current time, + //state should be open + circuitBreaker.lastFailureTime = System.nanoTime() - 1000 * 1000 * 1000 * 1000; + circuitBreaker.setState(); + assertEquals(circuitBreaker.getState(), "OPEN"); + //Now set it back again to closed to test idempotency + circuitBreaker.failureCount = 0; + circuitBreaker.setState(); + assertEquals(circuitBreaker.getState(), "CLOSED"); + } + + @Test + public void testSetStateForBypass() { + var circuitBreaker = new CircuitBreaker(1,1,100); + //Right now, failureCountbytecode leader-election data-locality + circuit-breaker From e6c71b63fcfe9b2dd3c98821e8650cac9dd72445 Mon Sep 17 00:00:00 2001 From: Christopher O'Connell Date: Tue, 15 Oct 2019 12:14:08 -0400 Subject: [PATCH 16/68] 988: Replaced all of the Apache HttpClients with Java's java.net.http (#1003) * 988: Took out the apache http component from root pom.xml * 988: Updated the aggregator sub projects to use java.net.http instead of apache * 988: Updated the api-gateway-service sub projects to use java.net.http instead of apache * Applied the code style formatter --- .../aggregator-service/pom.xml | 4 --- .../ProductInformationClientImpl.java | 28 ++++++++--------- .../ProductInventoryClientImpl.java | 29 +++++++++-------- api-gateway/api-gateway-service/pom.xml | 4 --- .../iluwatar/api/gateway/ImageClientImpl.java | 30 +++++++++++------- .../iluwatar/api/gateway/PriceClientImpl.java | 31 ++++++++++++------- pom.xml | 6 ---- 7 files changed, 64 insertions(+), 68 deletions(-) diff --git a/aggregator-microservices/aggregator-service/pom.xml b/aggregator-microservices/aggregator-service/pom.xml index 62695d9e9cba..d6ebc823c307 100644 --- a/aggregator-microservices/aggregator-service/pom.xml +++ b/aggregator-microservices/aggregator-service/pom.xml @@ -53,10 +53,6 @@ mockito-core test - - org.apache.httpcomponents - httpclient - diff --git a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClientImpl.java b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClientImpl.java index 2588fac81e01..b42b5b55a337 100644 --- a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClientImpl.java +++ b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClientImpl.java @@ -22,18 +22,16 @@ */ package com.iluwatar.aggregator.microservices; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; -import org.apache.http.util.EntityUtils; +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; -import java.io.IOException; - /** * An adapter to communicate with information micro-service. */ @@ -45,15 +43,15 @@ public class ProductInformationClientImpl implements ProductInformationClient { @Override public String getProductTitle() { String response = null; - try (CloseableHttpClient httpClient = HttpClients.createDefault()) { - HttpGet httpGet = new HttpGet("http://localhost:51515/information"); - try (CloseableHttpResponse httpResponse = httpClient.execute(httpGet)) { - response = EntityUtils.toString(httpResponse.getEntity()); - } - } catch (ClientProtocolException cpe) { - LOGGER.error("ClientProtocolException Occured", cpe); + HttpRequest request = HttpRequest.newBuilder().GET().uri(URI.create("http://localhost:51515/information")).build(); + HttpClient client = HttpClient.newHttpClient(); + try { + HttpResponse httpResponse = client.send(request, HttpResponse.BodyHandlers.ofString()); + response = httpResponse.body(); } catch (IOException ioe) { LOGGER.error("IOException Occurred", ioe); + } catch (InterruptedException ie) { + LOGGER.error("InterruptedException Occurred", ie); } return response; } diff --git a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClientImpl.java b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClientImpl.java index 586699f85629..59a050c9e563 100644 --- a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClientImpl.java +++ b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClientImpl.java @@ -22,18 +22,16 @@ */ package com.iluwatar.aggregator.microservices; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; -import org.apache.http.util.EntityUtils; +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; -import java.io.IOException; - /** * An adapter to communicate with inventory micro-service. */ @@ -45,15 +43,16 @@ public class ProductInventoryClientImpl implements ProductInventoryClient { @Override public int getProductInventories() { String response = "0"; - try (CloseableHttpClient httpClient = HttpClients.createDefault()) { - HttpGet httpGet = new HttpGet("http://localhost:51516/inventories"); - try (CloseableHttpResponse httpResponse = httpClient.execute(httpGet)) { - response = EntityUtils.toString(httpResponse.getEntity()); - } - } catch (ClientProtocolException cpe) { - LOGGER.error("ClientProtocolException Occured", cpe); + + HttpRequest request = HttpRequest.newBuilder().GET().uri(URI.create("http://localhost:51516/inventories")).build(); + HttpClient client = HttpClient.newHttpClient(); + try { + HttpResponse httpResponse = client.send(request, HttpResponse.BodyHandlers.ofString()); + response = httpResponse.body(); } catch (IOException ioe) { LOGGER.error("IOException Occurred", ioe); + } catch (InterruptedException ie) { + LOGGER.error("InterruptedException Occurred", ie); } return Integer.parseInt(response); } diff --git a/api-gateway/api-gateway-service/pom.xml b/api-gateway/api-gateway-service/pom.xml index 8821d6b4f21c..fa3e7286ba85 100644 --- a/api-gateway/api-gateway-service/pom.xml +++ b/api-gateway/api-gateway-service/pom.xml @@ -39,10 +39,6 @@ org.springframework spring-webmvc - - org.apache.httpcomponents - httpclient - org.springframework.boot spring-boot-starter-web diff --git a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ImageClientImpl.java b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ImageClientImpl.java index e94657a6cd0b..dddd0dc20f60 100644 --- a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ImageClientImpl.java +++ b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ImageClientImpl.java @@ -22,14 +22,14 @@ */ package com.iluwatar.api.gateway; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; -import org.apache.http.util.EntityUtils; -import org.springframework.stereotype.Component; - import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.net.http.HttpResponse.BodyHandlers; + +import org.springframework.stereotype.Component; /** * An adapter to communicate with the Image microservice @@ -38,19 +38,25 @@ public class ImageClientImpl implements ImageClient { /** * Makes a simple HTTP Get request to the Image microservice + * * @return The path to the image */ @Override public String getImagePath() { String response = null; - try (CloseableHttpClient httpClient = HttpClients.createDefault()) { - HttpGet httpGet = new HttpGet("http://localhost:50005/image-path"); - try (CloseableHttpResponse httpResponse = httpClient.execute(httpGet)) { - response = EntityUtils.toString(httpResponse.getEntity()); - } + + HttpClient httpClient = HttpClient.newHttpClient(); + HttpRequest httpGet = HttpRequest.newBuilder().GET().uri(URI.create("http://localhost:50005/image-path")).build(); + + try { + HttpResponse httpResponse = httpClient.send(httpGet, BodyHandlers.ofString()); + response = httpResponse.body(); } catch (IOException e) { e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); } + return response; } } diff --git a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/PriceClientImpl.java b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/PriceClientImpl.java index 4a645b809f24..25d7f0b1169c 100644 --- a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/PriceClientImpl.java +++ b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/PriceClientImpl.java @@ -22,14 +22,14 @@ */ package com.iluwatar.api.gateway; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; -import org.apache.http.util.EntityUtils; -import org.springframework.stereotype.Component; - import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.net.http.HttpResponse.BodyHandlers; + +import org.springframework.stereotype.Component; /** * An adapter to communicate with the Price microservice @@ -38,19 +38,26 @@ public class PriceClientImpl implements PriceClient { /** * Makes a simple HTTP Get request to the Price microservice + * * @return The price of the product */ @Override public String getPrice() { + String response = null; - try (CloseableHttpClient httpClient = HttpClients.createDefault()) { - HttpGet httpGet = new HttpGet("http://localhost:50006/price"); - try (CloseableHttpResponse httpResponse = httpClient.execute(httpGet)) { - response = EntityUtils.toString(httpResponse.getEntity()); - } + + HttpClient httpClient = HttpClient.newHttpClient(); + HttpRequest httpGet = HttpRequest.newBuilder().GET().uri(URI.create("http://localhost:50006/price")).build(); + + try { + HttpResponse httpResponse = httpClient.send(httpGet, BodyHandlers.ofString()); + response = httpResponse.body(); } catch (IOException e) { e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); } + return response; } } diff --git a/pom.xml b/pom.xml index 9e61e716b864..d330bbfcb6cd 100644 --- a/pom.xml +++ b/pom.xml @@ -48,7 +48,6 @@ 2.24.0 19.0 1.10.19 - 4.5.10 2.22 4.0 3.3.0 @@ -216,11 +215,6 @@ spring-webmvc ${spring.version} - - org.apache.httpcomponents - httpclient - ${apache-httpcomponents.version} - com.h2database h2 From dd5997b49502495ec5a6b978fa48fe294dac708c Mon Sep 17 00:00:00 2001 From: Christopher O'Connell Date: Tue, 15 Oct 2019 12:21:07 -0400 Subject: [PATCH 17/68] 993: Fixed the pipeines project layout so that it will load in Eclipse (#1004) The source directory was not working in the 2019.09 version of Eclipse. The problem was in the layout of the project: after the src/main/java and src/test/java, the directory was naed com.iluwatar.pipeline. It should've been com/iluwatar/pipeline. This follows the hierarchy of all of the other patterns. Once these files were moved, the Pipeline project compiled without errors. --- .../{com.iluwatar.pipeline => com/iluwatar/pipeline}/App.java | 0 .../iluwatar/pipeline}/ConvertToCharArrayHandler.java | 0 .../{com.iluwatar.pipeline => com/iluwatar/pipeline}/Handler.java | 0 .../iluwatar/pipeline}/Pipeline.java | 0 .../iluwatar/pipeline}/RemoveAlphabetsHandler.java | 0 .../iluwatar/pipeline}/RemoveDigitsHandler.java | 0 .../{com.iluwatar.pipeline => com/iluwatar/pipeline}/AppTest.java | 0 .../iluwatar/pipeline}/PipelineTest.java | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename pipeline/src/main/java/{com.iluwatar.pipeline => com/iluwatar/pipeline}/App.java (100%) rename pipeline/src/main/java/{com.iluwatar.pipeline => com/iluwatar/pipeline}/ConvertToCharArrayHandler.java (100%) rename pipeline/src/main/java/{com.iluwatar.pipeline => com/iluwatar/pipeline}/Handler.java (100%) rename pipeline/src/main/java/{com.iluwatar.pipeline => com/iluwatar/pipeline}/Pipeline.java (100%) rename pipeline/src/main/java/{com.iluwatar.pipeline => com/iluwatar/pipeline}/RemoveAlphabetsHandler.java (100%) rename pipeline/src/main/java/{com.iluwatar.pipeline => com/iluwatar/pipeline}/RemoveDigitsHandler.java (100%) rename pipeline/src/test/java/{com.iluwatar.pipeline => com/iluwatar/pipeline}/AppTest.java (100%) rename pipeline/src/test/java/{com.iluwatar.pipeline => com/iluwatar/pipeline}/PipelineTest.java (100%) diff --git a/pipeline/src/main/java/com.iluwatar.pipeline/App.java b/pipeline/src/main/java/com/iluwatar/pipeline/App.java similarity index 100% rename from pipeline/src/main/java/com.iluwatar.pipeline/App.java rename to pipeline/src/main/java/com/iluwatar/pipeline/App.java diff --git a/pipeline/src/main/java/com.iluwatar.pipeline/ConvertToCharArrayHandler.java b/pipeline/src/main/java/com/iluwatar/pipeline/ConvertToCharArrayHandler.java similarity index 100% rename from pipeline/src/main/java/com.iluwatar.pipeline/ConvertToCharArrayHandler.java rename to pipeline/src/main/java/com/iluwatar/pipeline/ConvertToCharArrayHandler.java diff --git a/pipeline/src/main/java/com.iluwatar.pipeline/Handler.java b/pipeline/src/main/java/com/iluwatar/pipeline/Handler.java similarity index 100% rename from pipeline/src/main/java/com.iluwatar.pipeline/Handler.java rename to pipeline/src/main/java/com/iluwatar/pipeline/Handler.java diff --git a/pipeline/src/main/java/com.iluwatar.pipeline/Pipeline.java b/pipeline/src/main/java/com/iluwatar/pipeline/Pipeline.java similarity index 100% rename from pipeline/src/main/java/com.iluwatar.pipeline/Pipeline.java rename to pipeline/src/main/java/com/iluwatar/pipeline/Pipeline.java diff --git a/pipeline/src/main/java/com.iluwatar.pipeline/RemoveAlphabetsHandler.java b/pipeline/src/main/java/com/iluwatar/pipeline/RemoveAlphabetsHandler.java similarity index 100% rename from pipeline/src/main/java/com.iluwatar.pipeline/RemoveAlphabetsHandler.java rename to pipeline/src/main/java/com/iluwatar/pipeline/RemoveAlphabetsHandler.java diff --git a/pipeline/src/main/java/com.iluwatar.pipeline/RemoveDigitsHandler.java b/pipeline/src/main/java/com/iluwatar/pipeline/RemoveDigitsHandler.java similarity index 100% rename from pipeline/src/main/java/com.iluwatar.pipeline/RemoveDigitsHandler.java rename to pipeline/src/main/java/com/iluwatar/pipeline/RemoveDigitsHandler.java diff --git a/pipeline/src/test/java/com.iluwatar.pipeline/AppTest.java b/pipeline/src/test/java/com/iluwatar/pipeline/AppTest.java similarity index 100% rename from pipeline/src/test/java/com.iluwatar.pipeline/AppTest.java rename to pipeline/src/test/java/com/iluwatar/pipeline/AppTest.java diff --git a/pipeline/src/test/java/com.iluwatar.pipeline/PipelineTest.java b/pipeline/src/test/java/com/iluwatar/pipeline/PipelineTest.java similarity index 100% rename from pipeline/src/test/java/com.iluwatar.pipeline/PipelineTest.java rename to pipeline/src/test/java/com/iluwatar/pipeline/PipelineTest.java From c438ec0557b31cdc58a6c0bdbba0987a0525621e Mon Sep 17 00:00:00 2001 From: Sharad Paul Date: Tue, 15 Oct 2019 22:03:36 +0530 Subject: [PATCH 18/68] Intermittent test failure in Spatial Partition pattern #1001 (#1006) * Intermittent test failure in Spatial Partition pattern #1001 * Intermittent test failure in Spatial Partition pattern #1001 --- .../java/com/iluwatar/spatialpartition/QuadTreeTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/spatial-partition/src/test/java/com/iluwatar/spatialpartition/QuadTreeTest.java b/spatial-partition/src/test/java/com/iluwatar/spatialpartition/QuadTreeTest.java index 0f9dc1e4ea57..15f1022fdae9 100644 --- a/spatial-partition/src/test/java/com/iluwatar/spatialpartition/QuadTreeTest.java +++ b/spatial-partition/src/test/java/com/iluwatar/spatialpartition/QuadTreeTest.java @@ -26,6 +26,8 @@ import java.util.ArrayList; import java.util.Hashtable; import java.util.Random; + + import org.junit.jupiter.api.Test; /** @@ -50,12 +52,12 @@ void queryTest() { static Hashtable quadTreeTest(ArrayList points, Rect field, Rect queryRange) { //creating quadtree and inserting all points - QuadTree qTree = new QuadTree(field, 4); + QuadTree qTree = new QuadTree(queryRange, 4); for (int i = 0; i < points.size(); i++) { qTree.insert(points.get(i)); } - ArrayList queryResult = qTree.query(queryRange, new ArrayList()); + ArrayList queryResult = qTree.query(field, new ArrayList()); Hashtable result = new Hashtable(); for (int i = 0; i < queryResult.size(); i++) { Point p = queryResult.get(i); From 27c131c2cb850a92b5b346b24dce20eae91cc84f Mon Sep 17 00:00:00 2001 From: Michele Giacobazzi Date: Tue, 15 Oct 2019 18:37:35 +0200 Subject: [PATCH 19/68] #1001 fix intermittent test failure (#1008) --- .../main/java/com/iluwatar/spatialpartition/Rect.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Rect.java b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Rect.java index 3d2f01d77d3d..71d4eda5bfa7 100644 --- a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Rect.java +++ b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Rect.java @@ -28,14 +28,14 @@ */ public class Rect { - int x; - int y; - int width; - int height; + double x; + double y; + double width; + double height; //(x,y) - centre of rectangle - Rect(int x, int y, int width, int height) { + Rect(double x, double y, double width, double height) { this.x = x; this.y = y; this.width = width; From a5646b63c19455051fb49fd5a455a28159708d49 Mon Sep 17 00:00:00 2001 From: Azureyjt Date: Wed, 16 Oct 2019 23:21:06 +0800 Subject: [PATCH 20/68] #554: Subclass Sandbox pattern (#998) * Fix issue #761: ThreadSafeDoubleCheckLocking.java: Instantiating by Reflection call will be successful if you do that firstly * Create leader election module * Create Interface of Instance and MessageManager * Create implementations with token ring algorithm * Change package structure. Create basic message system. * Implement heartbeat and heartbeat invoking message system * Implement election message handler * Add leader message handler * Add main entry point * Add comments * Update README.md * Fix checkstyle issue * Add Unit Tests * Add Unit Tests * Add bully leader selection * Change System.out to log print. Add MIT license in each file. * Add More java doc comments * Add unit test * Add unit tests * Add subclass-sandbox * Add Unit Test * Add Unit Test * Fix Typo * Move dependency into parent pom.xml * Change local valuable reference to be var --- pom.xml | 9 +- subclass-sandbox/README.md | 29 ++++++ subclass-sandbox/pom.xml | 49 ++++++++++ .../com/iluwatar/subclasssandbox/App.java | 53 +++++++++++ .../iluwatar/subclasssandbox/GroundDive.java | 44 +++++++++ .../iluwatar/subclasssandbox/SkyLaunch.java | 44 +++++++++ .../iluwatar/subclasssandbox/Superpower.java | 69 ++++++++++++++ .../com/iluwatar/subclasssandbox/AppTest.java | 38 ++++++++ .../subclasssandbox/GroundDiveTest.java | 92 +++++++++++++++++++ .../subclasssandbox/SkyLaunchTest.java | 91 ++++++++++++++++++ 10 files changed, 517 insertions(+), 1 deletion(-) create mode 100644 subclass-sandbox/README.md create mode 100644 subclass-sandbox/pom.xml create mode 100644 subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/App.java create mode 100644 subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/GroundDive.java create mode 100644 subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/SkyLaunch.java create mode 100644 subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/Superpower.java create mode 100644 subclass-sandbox/src/test/java/com/iluwatar/subclasssandbox/AppTest.java create mode 100644 subclass-sandbox/src/test/java/com/iluwatar/subclasssandbox/GroundDiveTest.java create mode 100644 subclass-sandbox/src/test/java/com/iluwatar/subclasssandbox/SkyLaunchTest.java diff --git a/pom.xml b/pom.xml index d330bbfcb6cd..020c784c62fd 100644 --- a/pom.xml +++ b/pom.xml @@ -60,6 +60,7 @@ 2.3.1 2.3.2 1.3.2 + 1.19.0 abstract-factory @@ -180,8 +181,8 @@ bytecode leader-election data-locality + subclass-sandbox circuit-breaker - @@ -317,6 +318,12 @@ javassist 3.25.0-GA + + com.github.stefanbirkner + system-rules + ${system-rules.version} + test + diff --git a/subclass-sandbox/README.md b/subclass-sandbox/README.md new file mode 100644 index 000000000000..674991f0895c --- /dev/null +++ b/subclass-sandbox/README.md @@ -0,0 +1,29 @@ + +--- +layout: pattern +title: Subclass Sandbox +folder: subclass-sandbox +permalink: /patterns/subclass-sandbox/ +categories: Other +tags: + - Java + - Difficulty-Beginner +--- + +## Intent +The subclass sandbox pattern describes a basic idea, while not having a lot of detailed mechanics. You will need the pattern when you have several similar subclasses. If you have to make a tiny change, then change the base class, while all subclasses shouldn't have to be touched. So the base class has to be able to provide all of the operations a derived class needs to perform. + +## Applicability +The Subclass Sandbox pattern is a very simple, common pattern lurking in lots of codebases, even outside of games. If you have a non-virtual protected method laying around, you’re probably already using something like this. Subclass Sandbox is a good fit when: + +- You have a base class with a number of derived classes. + +- The base class is able to provide all of the operations that a derived class may need to perform. + +- There is behavioral overlap in the subclasses and you want to make it easier to share code between them. + +- You want to minimize coupling between those derived classes and the rest of the program. + +## Credits + +* [Game Programming Patterns - Subclass Sandbox]([http://gameprogrammingpatterns.com/subclass-sandbox.html](http://gameprogrammingpatterns.com/subclass-sandbox.html)) \ No newline at end of file diff --git a/subclass-sandbox/pom.xml b/subclass-sandbox/pom.xml new file mode 100644 index 000000000000..8016ba471ed0 --- /dev/null +++ b/subclass-sandbox/pom.xml @@ -0,0 +1,49 @@ + + + + + java-design-patterns + com.iluwatar + 1.22.0-SNAPSHOT + + 4.0.0 + + subclass-sandbox + + + + junit + junit + + + com.github.stefanbirkner + system-rules + + + + \ No newline at end of file diff --git a/subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/App.java b/subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/App.java new file mode 100644 index 000000000000..2e1f41c056c4 --- /dev/null +++ b/subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/App.java @@ -0,0 +1,53 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.subclasssandbox; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The subclass sandbox pattern describes a basic idea, while not having a lot + * of detailed mechanics. You will need the pattern when you have several similar + * subclasses. If you have to make a tiny change, then change the base class, + * while all subclasses shouldn't have to be touched. So the base class has to be + * able to provide all of the operations a derived class needs to perform. + */ +public class App { + + private static final Logger LOGGER = LoggerFactory.getLogger(App.class); + + /** + * Entry point of the main program. + * @param args Program runtime arguments. + */ + public static void main(String[] args) { + LOGGER.info("Use superpower: sky launch"); + var skyLaunch = new SkyLaunch(); + skyLaunch.activate(); + LOGGER.info("Use superpower: ground dive"); + var groundDive = new GroundDive(); + groundDive.activate(); + } + +} diff --git a/subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/GroundDive.java b/subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/GroundDive.java new file mode 100644 index 000000000000..f284e125fba7 --- /dev/null +++ b/subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/GroundDive.java @@ -0,0 +1,44 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.subclasssandbox; + +import org.slf4j.LoggerFactory; + +/** + * GroundDive superpower. + */ +public class GroundDive extends Superpower { + + public GroundDive() { + super(); + logger = LoggerFactory.getLogger(GroundDive.class); + } + + @Override + protected void activate() { + move(0, 0, -20); + playSound("GROUNDDIVE_SOUND", 5); + spawnParticles("GROUNDDIVE_PARTICLE", 20); + } +} diff --git a/subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/SkyLaunch.java b/subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/SkyLaunch.java new file mode 100644 index 000000000000..16c94bd0ca57 --- /dev/null +++ b/subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/SkyLaunch.java @@ -0,0 +1,44 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.subclasssandbox; + +import org.slf4j.LoggerFactory; + +/** + * SkyLaunch superpower. + */ +public class SkyLaunch extends Superpower { + + public SkyLaunch() { + super(); + logger = LoggerFactory.getLogger(SkyLaunch.class); + } + + @Override + protected void activate() { + move(0, 0, 20); + playSound("SKYLAUNCH_SOUND", 1); + spawnParticles("SKYLAUNCH_PARTICLE", 100); + } +} diff --git a/subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/Superpower.java b/subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/Superpower.java new file mode 100644 index 000000000000..d4875d586d62 --- /dev/null +++ b/subclass-sandbox/src/main/java/com/iluwatar/subclasssandbox/Superpower.java @@ -0,0 +1,69 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.subclasssandbox; + +import org.slf4j.Logger; + +/** + * Superpower abstract class. In this class the basic operations of all types of + * superpowers are provided as protected methods. + */ +public abstract class Superpower { + + protected Logger logger; + + /** + * Subclass of superpower should implement this sandbox method by calling the + * methods provided in this super class. + */ + protected abstract void activate(); + + /** + * Move to (x, y, z). + * @param x X coordinate. + * @param y Y coordinate. + * @param z Z coordinate. + */ + protected void move(double x, double y, double z) { + logger.info("Move to ( " + x + ", " + y + ", " + z + " )"); + } + + /** + * Play sound effect for the superpower. + * @param soundName Sound name. + * @param volumn Value of volumn. + */ + protected void playSound(String soundName, int volumn) { + logger.info("Play " + soundName + " with volumn " + volumn); + } + + /** + * Spawn particles for the superpower. + * @param particleType Particle type. + * @param count Count of particles to be spawned. + */ + protected void spawnParticles(String particleType, int count) { + logger.info("Spawn " + count + " particle with type " + particleType); + } +} diff --git a/subclass-sandbox/src/test/java/com/iluwatar/subclasssandbox/AppTest.java b/subclass-sandbox/src/test/java/com/iluwatar/subclasssandbox/AppTest.java new file mode 100644 index 000000000000..207c71ef9ef0 --- /dev/null +++ b/subclass-sandbox/src/test/java/com/iluwatar/subclasssandbox/AppTest.java @@ -0,0 +1,38 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.subclasssandbox; + +import org.junit.Test; + +/** + * App unit tests. + */ +public class AppTest { + + @Test + public void testMain() { + String[] args = {}; + App.main(args); + } +} diff --git a/subclass-sandbox/src/test/java/com/iluwatar/subclasssandbox/GroundDiveTest.java b/subclass-sandbox/src/test/java/com/iluwatar/subclasssandbox/GroundDiveTest.java new file mode 100644 index 000000000000..7b4645742376 --- /dev/null +++ b/subclass-sandbox/src/test/java/com/iluwatar/subclasssandbox/GroundDiveTest.java @@ -0,0 +1,92 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.subclasssandbox; + +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.junit.contrib.java.lang.system.SystemOutRule; + +/** + * GroundDive unit tests. + */ +public class GroundDiveTest { + + @Rule + public SystemOutRule log = new SystemOutRule().enableLog(); + + @Test + public void testMove() { + log.clearLog(); + var groundDive = new GroundDive(); + groundDive.move(1.0, 1.0, 1.0); + var outputLog = getLogContent(log.getLog()); + var expectedLog = "Move to ( 1.0, 1.0, 1.0 )"; + Assert.assertEquals(outputLog, expectedLog); + } + + @Test + public void testPlaySound() { + log.clearLog(); + var groundDive = new GroundDive(); + groundDive.playSound("SOUND_NAME", 1); + var outputLog = getLogContent(log.getLog()); + var expectedLog = "Play SOUND_NAME with volumn 1"; + Assert.assertEquals(outputLog, expectedLog); + } + + @Test + public void testSpawnParticles() { + log.clearLog(); + var groundDive = new GroundDive(); + groundDive.spawnParticles("PARTICLE_TYPE", 100); + final var outputLog = getLogContent(log.getLog()); + final var expectedLog = "Spawn 100 particle with type PARTICLE_TYPE"; + Assert.assertEquals(outputLog, expectedLog); + } + + @Test + public void testActivate() { + log.clearLog(); + var groundDive = new GroundDive(); + groundDive.activate();; + String[] logs = log.getLog().split("\n"); + final var expectedSize = 3; + final var log1 = logs[0].split("-")[1].trim() + " -" + logs[0].split("-")[2].trim(); + final var expectedLog1 = "Move to ( 0.0, 0.0, -20.0 )"; + final var log2 = getLogContent(logs[1]); + final var expectedLog2 = "Play GROUNDDIVE_SOUND with volumn 5"; + final var log3 = getLogContent(logs[2]); + final var expectedLog3 = "Spawn 20 particle with type GROUNDDIVE_PARTICLE"; + Assert.assertEquals(logs.length, expectedSize); + Assert.assertEquals(log1, expectedLog1); + Assert.assertEquals(log2, expectedLog2); + Assert.assertEquals(log3, expectedLog3); + } + + private String getLogContent(String log) { + return log.split("-")[1].trim(); + } + +} diff --git a/subclass-sandbox/src/test/java/com/iluwatar/subclasssandbox/SkyLaunchTest.java b/subclass-sandbox/src/test/java/com/iluwatar/subclasssandbox/SkyLaunchTest.java new file mode 100644 index 000000000000..5ba84c0b55cc --- /dev/null +++ b/subclass-sandbox/src/test/java/com/iluwatar/subclasssandbox/SkyLaunchTest.java @@ -0,0 +1,91 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.subclasssandbox; + +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.junit.contrib.java.lang.system.SystemOutRule; + +/** + * SkyLaunch unit tests. + */ +public class SkyLaunchTest { + + @Rule + public SystemOutRule log = new SystemOutRule().enableLog(); + + @Test + public void testMove() { + log.clearLog(); + var skyLaunch = new SkyLaunch(); + skyLaunch.move(1.0, 1.0, 1.0); + var outputLog = getLogContent(log.getLog()); + var expectedLog = "Move to ( 1.0, 1.0, 1.0 )"; + Assert.assertEquals(outputLog, expectedLog); + } + + @Test + public void testPlaySound() { + log.clearLog(); + var skyLaunch = new SkyLaunch(); + skyLaunch.playSound("SOUND_NAME", 1); + var outputLog = getLogContent(log.getLog()); + var expectedLog = "Play SOUND_NAME with volumn 1"; + Assert.assertEquals(outputLog, expectedLog); + } + + @Test + public void testSpawnParticles() { + log.clearLog(); + var skyLaunch = new SkyLaunch(); + skyLaunch.spawnParticles("PARTICLE_TYPE", 100); + var outputLog = getLogContent(log.getLog()); + var expectedLog = "Spawn 100 particle with type PARTICLE_TYPE"; + Assert.assertEquals(outputLog, expectedLog); + } + + @Test + public void testActivate() { + log.clearLog(); + var skyLaunch = new SkyLaunch(); + skyLaunch.activate();; + String[] logs = log.getLog().split("\n"); + final var expectedSize = 3; + final var log1 = getLogContent(logs[0]); + final var expectedLog1 = "Move to ( 0.0, 0.0, 20.0 )"; + final var log2 = getLogContent(logs[1]); + final var expectedLog2 = "Play SKYLAUNCH_SOUND with volumn 1"; + final var log3 = getLogContent(logs[2]); + final var expectedLog3 = "Spawn 100 particle with type SKYLAUNCH_PARTICLE"; + Assert.assertEquals(logs.length, expectedSize); + Assert.assertEquals(log1, expectedLog1); + Assert.assertEquals(log2, expectedLog2); + Assert.assertEquals(log3, expectedLog3); + } + + private String getLogContent(String log) { + return log.split("-")[1].trim(); + } +} From 880b234d8fa328619e2505650849fec4c319d9fa Mon Sep 17 00:00:00 2001 From: Kai Winter Date: Thu, 17 Oct 2019 20:00:32 +0200 Subject: [PATCH 21/68] Fixes #1007 by updating JUnit to 5.5.2 (#1015) The missing class PreconditionViolationException is contained in junit-platform-commons which comes in transitively by this JUnit version. junit-jupiter-api had to be added because spring-boot-dependencies imports an older version of this dependency. --- pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 020c784c62fd..22dedc14a59e 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,7 @@ 2.0.14.RELEASE 1.4.190 4.12 - 5.0.2 + 5.5.2 ${junit.version}.2 1.0.2 3.8.1 @@ -242,6 +242,12 @@ ${junit.version} test + + org.junit.jupiter + junit-jupiter-api + ${junit-jupiter.version} + test + org.junit.jupiter junit-jupiter-engine From c308ca09e5018aecd9ee409d6fdddb0d18d3a3de Mon Sep 17 00:00:00 2001 From: Christopher O'Connell Date: Fri, 18 Oct 2019 01:50:02 -0400 Subject: [PATCH 22/68] 1011: Fixed all of the SonarCloud blocking errors (#1017) * 1011: Added the method to the RequestMapping annotation * 1011: Changed all of the a href blank targets to include rel="noopener noreferrer" --- .../aggregator/microservices/Aggregator.java | 7 ++++--- .../java/com/iluwatar/api/gateway/ApiGateway.java | 5 +++-- .../webapp/src/main/webapp/about/index.html | 12 ++++++------ 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Aggregator.java b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Aggregator.java index cd30afc4807c..ccbe6f2fe68c 100644 --- a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Aggregator.java +++ b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Aggregator.java @@ -22,11 +22,12 @@ */ package com.iluwatar.aggregator.microservices; +import javax.annotation.Resource; + import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; - /** * The aggregator aggregates calls on various micro-services, collects * data and further publishes them under a REST endpoint. @@ -47,7 +48,7 @@ public class Aggregator { * * @return a Product. */ - @RequestMapping("/product") + @RequestMapping(path = "/product", method = RequestMethod.GET) public Product getProduct() { Product product = new Product(); product.setTitle(informationClient.getProductTitle()); diff --git a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ApiGateway.java b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ApiGateway.java index cbabad1e6ff6..dc4249c6eb3d 100644 --- a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ApiGateway.java +++ b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ApiGateway.java @@ -23,6 +23,7 @@ package com.iluwatar.api.gateway; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @@ -43,7 +44,7 @@ public class ApiGateway { * Retrieves product information that desktop clients need * @return Product information for clients on a desktop */ - @RequestMapping("/desktop") + @RequestMapping(path = "/desktop", method = RequestMethod.GET) public DesktopProduct getProductDesktop() { DesktopProduct desktopProduct = new DesktopProduct(); desktopProduct.setImagePath(imageClient.getImagePath()); @@ -55,7 +56,7 @@ public DesktopProduct getProductDesktop() { * Retrieves product information that mobile clients need * @return Product information for clients on a mobile device */ - @RequestMapping("/mobile") + @RequestMapping(path = "/mobile", method = RequestMethod.GET) public MobileProduct getProductMobile() { MobileProduct mobileProduct = new MobileProduct(); mobileProduct.setPrice(priceClient.getPrice()); diff --git a/naked-objects/webapp/src/main/webapp/about/index.html b/naked-objects/webapp/src/main/webapp/about/index.html index 176bfc13a3f6..e929c5b6da33 100644 --- a/naked-objects/webapp/src/main/webapp/about/index.html +++ b/naked-objects/webapp/src/main/webapp/about/index.html @@ -82,12 +82,12 @@

This app has been generated using Apache Isis' - SimpleApp archetype, + SimpleApp archetype, to create a purposefully minimal application that nevertheless includes fixture data, integration tests and BDD specs.

- The app itself consists of a single domain class, SimpleObject, - along with an equally simple (factory/repository) domain service, SimpleObjects. + The app itself consists of a single domain class, SimpleObject, + along with an equally simple (factory/repository) domain service, SimpleObjects.

To access the app:

@@ -98,8 +98,8 @@

provides accesses to a generic UI for end-users, - Isis' Wicket Viewer. - As its name suggests, this viewer is built on top of Apache Wicket™. + Isis' Wicket Viewer. + As its name suggests, this viewer is built on top of Apache Wicket™.

  • @@ -118,7 +118,7 @@

    The default user/password is sven/pass (as configured in the - shiro.ini file). + shiro.ini file).

    From 2982db456db68f5a1e30eb7f53bea1dac054f974 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Fri, 18 Oct 2019 23:09:27 +0300 Subject: [PATCH 23/68] Update README.md --- README.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c41a48a8898d..4642b9989c83 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,15 @@ are familiar with the patterns. # Getting started +This site showcases Java Design Patterns. The solutions have been developed by +experienced programmers and architects from the open source community. The +patterns can be browsed by their high level descriptions or by looking at their +source code. The source code examples are well commented and can be thought as +programming tutorials how to implement a specific pattern. We use the most +popular battle-proven open source Java technologies. + Before you dive into the material, you should be familiar with various -Programming/Software Design Principles. +software design principles. All designs should be as simple as possible. You should start with KISS, YAGNI, and Do The Simplest Thing That Could Possibly Work principles. Complexity and @@ -38,9 +45,14 @@ patterns by any of the following approaches - Using pattern categories, `Creational`, `Behavioral` and others. - Search for a specific pattern. Can't find one? Please report a new pattern [here](https://github.com/iluwatar/java-design-patterns/issues). +Hopefully you find the object oriented solutions presented on this site useful +in your architectures and have as much fun learning them as we had developing them. + # How to contribute -If you are willing to contribute to the project you will find the relevant information in our [developer wiki](https://github.com/iluwatar/java-design-patterns/wiki). We will help you and answer your questions in the [Gitter chatroom](https://gitter.im/iluwatar/java-design-patterns). +If you are willing to contribute to the project you will find the relevant information in +our [developer wiki](https://github.com/iluwatar/java-design-patterns/wiki). We will help +you and answer your questions in the [Gitter chatroom](https://gitter.im/iluwatar/java-design-patterns). # License From 0c60a95d8f0da0275db6b16f685444db96fe1837 Mon Sep 17 00:00:00 2001 From: Kai Winter Date: Sat, 19 Oct 2019 17:41:12 +0200 Subject: [PATCH 24/68] Switched to embedded Google checkstyle rules (#1018) * Switched to embedded Google checkstyle rules Moved the configuration out of the execution to make it used in all executions. Fixes #1016 * #1016: Moved checkstyle configuration back into execution This refactoring may be better done in a new issue as it may have too many implication. * Replaced consoleOutput and failsOnError by failOnViolation consoleOutput outputs everything while failsOnError just fails the build but doesn't log the error. failOnViolation fails on a violation and logs it (logViolationsToConsole defaults to true). --- checkstyle.xml | 197 ------------------------------------------------- pom.xml | 5 +- 2 files changed, 2 insertions(+), 200 deletions(-) delete mode 100644 checkstyle.xml diff --git a/checkstyle.xml b/checkstyle.xml deleted file mode 100644 index d66281f178c6..000000000000 --- a/checkstyle.xml +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pom.xml b/pom.xml index 22dedc14a59e..0ef4890ca065 100644 --- a/pom.xml +++ b/pom.xml @@ -395,11 +395,10 @@ validate - checkstyle.xml + google_checks.xml checkstyle-suppressions.xml UTF-8 - true - true + true true From 8a4844792ff7780dd35d781af792ed362f1fdc16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Sat, 19 Oct 2019 19:44:57 +0300 Subject: [PATCH 25/68] Remove obsolete file --- CODE_COVERAGE.md | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 CODE_COVERAGE.md diff --git a/CODE_COVERAGE.md b/CODE_COVERAGE.md deleted file mode 100644 index 333ee199f8e0..000000000000 --- a/CODE_COVERAGE.md +++ /dev/null @@ -1,13 +0,0 @@ -# Code Coverage Report generation - -To generate the code coverage report, execute the following command: -> mvn clean verify jacoco:report - -This will generate code coverage report in each of the modules. In order to view the same, open the following file in your browser. -> target/site/jacoco/index.html - -Please note that the above folder is created under each of the modules. For example: -* adapter/target/site/jacoco/index.html -* business-delegate/target/site/jacoco/index.html - - From 7c5d5f6b0d82942195ae12fb987c5dfd8eabaff5 Mon Sep 17 00:00:00 2001 From: Christopher O'Connell Date: Sat, 19 Oct 2019 13:04:44 -0400 Subject: [PATCH 26/68] 1010: Fixed all of the blocking and critical Sonarcloud errors (#1020) * 1011: Added SuppressWarnings for SonarCloud errors All of these files are causing SonarCloud to report the following error: Loops should not be infinite Since these instances all require an infinite loop that will never end, these warnings should be disabled so that SonarCloud no longer reports them as error. The rule is: squid:S2189 * 1011: Made all of the randoms static and final According to SonarCloud rule: "Random" objects should be reused, randoms should not be recreated. This commit has taken all of the Randoms and made them constant variables in the files that are using them. --- .../src/main/java/com/iluwatar/circuitbreaker/App.java | 1 + commander/src/main/java/com/iluwatar/commander/Order.java | 4 ++-- commander/src/main/java/com/iluwatar/commander/Retry.java | 5 +++-- commander/src/main/java/com/iluwatar/commander/Service.java | 4 ++-- .../java/com/iluwatar/hexagonal/sampledata/SampleData.java | 4 ++-- .../java/com/iluwatar/leaderelection/AbstractInstance.java | 1 + .../java/com/iluwatar/masterworker/ArrayUtilityMethods.java | 5 +++-- .../src/main/java/com/iluwatar/priority/queue/Worker.java | 1 + .../main/java/com/iluwatar/producer/consumer/Producer.java | 5 +++-- .../java/com/iluwatar/retry/RetryExponentialBackoff.java | 4 ++-- .../src/main/java/com/iluwatar/spatialpartition/Bubble.java | 6 +++--- .../src/main/java/com/iluwatar/typeobject/CellPool.java | 4 ++-- 12 files changed, 25 insertions(+), 19 deletions(-) diff --git a/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/App.java b/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/App.java index d1d361b16063..2520b64ceb3c 100644 --- a/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/App.java +++ b/circuit-breaker/src/main/java/com/iluwatar/circuitbreaker/App.java @@ -66,6 +66,7 @@ public class App { * * @param args command line args */ + @SuppressWarnings("squid:S2189") public static void main(String[] args) { //Create an object of monitoring service which makes both local and remote calls var obj = new MonitoringService(); diff --git a/commander/src/main/java/com/iluwatar/commander/Order.java b/commander/src/main/java/com/iluwatar/commander/Order.java index 9a454a5f7782..959ebd93ccc2 100644 --- a/commander/src/main/java/com/iluwatar/commander/Order.java +++ b/commander/src/main/java/com/iluwatar/commander/Order.java @@ -44,6 +44,7 @@ enum MessageSent { public final String id; final float price; final long createdTime; + private static final Random RANDOM = new Random(); private static final String ALL_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; private static final Hashtable USED_IDS = new Hashtable(); PaymentStatus paid; @@ -70,9 +71,8 @@ enum MessageSent { String createUniqueId() { StringBuilder random = new StringBuilder(); - Random rand = new Random(); while (random.length() < 12) { // length of the random string. - int index = (int) (rand.nextFloat() * ALL_CHARS.length()); + int index = (int) (RANDOM.nextFloat() * ALL_CHARS.length()); random.append(ALL_CHARS.charAt(index)); } return random.toString(); diff --git a/commander/src/main/java/com/iluwatar/commander/Retry.java b/commander/src/main/java/com/iluwatar/commander/Retry.java index d4da5e8dac4d..e9c9fb1f6689 100644 --- a/commander/src/main/java/com/iluwatar/commander/Retry.java +++ b/commander/src/main/java/com/iluwatar/commander/Retry.java @@ -51,6 +51,8 @@ public interface Operation { public interface HandleErrorIssue { void handleIssue(T obj, Exception e); } + + private static final Random RANDOM = new Random(); private final Operation op; private final HandleErrorIssue handleError; @@ -89,8 +91,7 @@ public void perform(ArrayList list, T obj) throws Exception { return; //return here...dont go further } try { - Random rand = new Random(); - long testDelay = (long) Math.pow(2, this.attempts.intValue()) * 1000 + rand.nextInt(1000); + long testDelay = (long) Math.pow(2, this.attempts.intValue()) * 1000 + RANDOM.nextInt(1000); long delay = testDelay < this.maxDelay ? testDelay : maxDelay; Thread.sleep(delay); } catch (InterruptedException f) { diff --git a/commander/src/main/java/com/iluwatar/commander/Service.java b/commander/src/main/java/com/iluwatar/commander/Service.java index 8c64d1d18410..259b8c6cc56c 100644 --- a/commander/src/main/java/com/iluwatar/commander/Service.java +++ b/commander/src/main/java/com/iluwatar/commander/Service.java @@ -42,6 +42,7 @@ public abstract class Service { protected final Database database; public ArrayList exceptionsList; + private static final Random RANDOM = new Random(); private static final String ALL_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; private static final Hashtable USED_IDS = new Hashtable(); @@ -55,9 +56,8 @@ protected Service(Database db, Exception...exc) { protected String generateId() { StringBuilder random = new StringBuilder(); - Random rand = new Random(); while (random.length() < 12) { // length of the random string. - int index = (int) (rand.nextFloat() * ALL_CHARS.length()); + int index = (int) (RANDOM.nextFloat() * ALL_CHARS.length()); random.append(ALL_CHARS.charAt(index)); } String id = random.toString(); diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java index 3dddb6d9b4f6..bc4e963e1808 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java @@ -40,6 +40,7 @@ public class SampleData { private static final List PLAYERS; + private static final Random RANDOM = new Random(); static { PLAYERS = new ArrayList<>(); @@ -83,10 +84,9 @@ public class SampleData { PLAYERS.add(new PlayerDetails("xavier@google.com", "143-947", "+375245")); PLAYERS.add(new PlayerDetails("harriet@google.com", "842-404", "+131243252")); InMemoryBank wireTransfers = new InMemoryBank(); - Random random = new Random(); for (PlayerDetails player : PLAYERS) { wireTransfers.setFunds(player.getBankAccount(), - random.nextInt(LotteryConstants.PLAYER_MAX_BALANCE)); + RANDOM.nextInt(LotteryConstants.PLAYER_MAX_BALANCE)); } } diff --git a/leader-election/src/main/java/com/iluwatar/leaderelection/AbstractInstance.java b/leader-election/src/main/java/com/iluwatar/leaderelection/AbstractInstance.java index 556d725da0b1..abece1edc0ee 100644 --- a/leader-election/src/main/java/com/iluwatar/leaderelection/AbstractInstance.java +++ b/leader-election/src/main/java/com/iluwatar/leaderelection/AbstractInstance.java @@ -58,6 +58,7 @@ public AbstractInstance(MessageManager messageManager, int localId, int leaderId * The instance will execute the message in its message queue periodically once it is alive. */ @Override + @SuppressWarnings("squid:S2189") public void run() { while (true) { if (!this.messageQueue.isEmpty()) { diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java index fb27e5b486a4..576ffb6bf000 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java @@ -34,6 +34,8 @@ public class ArrayUtilityMethods { private static final Logger LOGGER = LoggerFactory.getLogger(ArrayUtilityMethods.class); + + private static final Random RANDOM = new Random(); /** * Method arraysSame compares 2 arrays @param a1 and @param a2 * and @return whether their values are equal (boolean). @@ -86,11 +88,10 @@ public static boolean matricesSame(int[][] m1, int[][] m2) { public static int[][] createRandomIntMatrix(int rows, int columns) { int[][] matrix = new int[rows][columns]; - Random rand = new Random(); for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { //filling cells in matrix - matrix[i][j] = rand.nextInt(10); + matrix[i][j] = RANDOM.nextInt(10); } } return matrix; diff --git a/priority-queue/src/main/java/com/iluwatar/priority/queue/Worker.java b/priority-queue/src/main/java/com/iluwatar/priority/queue/Worker.java index dbccd5d66cbd..e37feb679d3e 100644 --- a/priority-queue/src/main/java/com/iluwatar/priority/queue/Worker.java +++ b/priority-queue/src/main/java/com/iluwatar/priority/queue/Worker.java @@ -41,6 +41,7 @@ public Worker(QueueManager queueManager) { /** * Keep checking queue for message */ + @SuppressWarnings("squid:S2189") public void run() throws Exception { while (true) { Message message = queueManager.receiveMessage(); diff --git a/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Producer.java b/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Producer.java index 4cc1a6567d87..3681c017d223 100644 --- a/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Producer.java +++ b/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Producer.java @@ -29,6 +29,8 @@ * to queue */ public class Producer { + + private static final Random RANDOM = new Random(); private final ItemQueue queue; @@ -48,7 +50,6 @@ public void produce() throws InterruptedException { Item item = new Item(name, itemId++); queue.put(item); - Random random = new Random(); - Thread.sleep(random.nextInt(2000)); + Thread.sleep(RANDOM.nextInt(2000)); } } diff --git a/retry/src/main/java/com/iluwatar/retry/RetryExponentialBackoff.java b/retry/src/main/java/com/iluwatar/retry/RetryExponentialBackoff.java index 551914dad138..b7024c9184d0 100644 --- a/retry/src/main/java/com/iluwatar/retry/RetryExponentialBackoff.java +++ b/retry/src/main/java/com/iluwatar/retry/RetryExponentialBackoff.java @@ -37,6 +37,7 @@ * @param the remote op's return type */ public final class RetryExponentialBackoff implements BusinessOperation { + private static final Random RANDOM = new Random(); private final BusinessOperation op; private final int maxAttempts; private final long maxDelay; @@ -98,8 +99,7 @@ public T perform() throws BusinessException { } try { - Random rand = new Random(); - long testDelay = (long) Math.pow(2, this.attempts()) * 1000 + rand.nextInt(1000); + long testDelay = (long) Math.pow(2, this.attempts()) * 1000 + RANDOM.nextInt(1000); long delay = testDelay < this.maxDelay ? testDelay : maxDelay; Thread.sleep(delay); } catch (InterruptedException f) { diff --git a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Bubble.java b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Bubble.java index 01faa8371378..8147c4ea3f5d 100644 --- a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Bubble.java +++ b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Bubble.java @@ -36,6 +36,7 @@ public class Bubble extends Point { private static final Logger LOGGER = LoggerFactory.getLogger(Bubble.class); + private static final Random RANDOM = new Random(); final int radius; @@ -45,10 +46,9 @@ public class Bubble extends Point { } void move() { - Random rand = new Random(); //moves by 1 unit in either direction - this.x += rand.nextInt(3) - 1; - this.y += rand.nextInt(3) - 1; + this.x += RANDOM.nextInt(3) - 1; + this.y += RANDOM.nextInt(3) - 1; } boolean touches(Bubble b) { diff --git a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CellPool.java b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CellPool.java index 9e855b4d6d61..e04cce4f018a 100644 --- a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CellPool.java +++ b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CellPool.java @@ -37,6 +37,7 @@ */ public class CellPool { + private static final Random RANDOM = new Random(); ArrayList pool; int pointer; Candy[] randomCode; @@ -57,8 +58,7 @@ public class CellPool { } for (int i = 0; i < num; i++) { Cell c = new Cell(); - Random rand = new Random(); - c.candy = randomCode[rand.nextInt(randomCode.length)]; + c.candy = randomCode[RANDOM.nextInt(randomCode.length)]; this.pool.add(c); } this.pointer = num - 1; From f671f03d13966c9c5b3b65625224912336db86dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Sat, 19 Oct 2019 22:14:01 +0300 Subject: [PATCH 27/68] Update FAQ metadata --- faq.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/faq.md b/faq.md index f630c0e4eb13..141f5090d996 100644 --- a/faq.md +++ b/faq.md @@ -1,6 +1,8 @@ --- layout: page -title: FAQ +link-title: FAQ +title: FAQ - Java Design Patterns +description: design patterns java program best practises tutorials design principles development examples coders programmers developers architects paradigms object oriented systems architecture solutions problems permalink: /faq/ icon: fa-question page-index: 5 From 82f9a6c2323b412036965fc51e5ec155b6cf7741 Mon Sep 17 00:00:00 2001 From: Christopher O'Connell Date: Sun, 20 Oct 2019 02:02:36 -0400 Subject: [PATCH 28/68] 1010: Fixed the two remaining SonarCloud errors (#1023) The two remaining files were still creating a Random everytime the method was called. These were missed in the previous commit because the previous commit had fixed only one of the methods; in other words, there were multiple methods that were creating the Random object on each call. --- .../java/com/iluwatar/hexagonal/sampledata/SampleData.java | 3 +-- .../src/main/java/com/iluwatar/typeobject/CellPool.java | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java index bc4e963e1808..29a9d3233889 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java @@ -102,8 +102,7 @@ public static void submitTickets(LotteryService lotteryService, int numTickets) } private static PlayerDetails getRandomPlayerDetails() { - Random random = new Random(); - int idx = random.nextInt(PLAYERS.size()); + int idx = RANDOM.nextInt(PLAYERS.size()); return PLAYERS.get(idx); } } diff --git a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CellPool.java b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CellPool.java index e04cce4f018a..6014da0cf1ce 100644 --- a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CellPool.java +++ b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CellPool.java @@ -71,8 +71,7 @@ Cell getNewCell() { } void addNewCell(Cell c) { - Random rand = new Random(); - c.candy = randomCode[rand.nextInt(randomCode.length)]; //changing candytype to new + c.candy = randomCode[RANDOM.nextInt(randomCode.length)]; //changing candytype to new this.pool.add(c); pointer++; } From 2217fbc5ff5deeff78be4540499061db21840e1d Mon Sep 17 00:00:00 2001 From: Azureyjt Date: Sun, 20 Oct 2019 23:55:36 +0800 Subject: [PATCH 29/68] Issue#550: double buffer pattern (#1024) * Basic implementation * implement double buffer * add unit test * add unit test * Add Readme * Change local value declaration to var * Remove unused fields --- double-buffer/README.md | 29 ++++++ double-buffer/pom.xml | 49 ++++++++++ .../java/com/iluwatar/doublebuffer/App.java | 85 ++++++++++++++++ .../com/iluwatar/doublebuffer/Buffer.java | 56 +++++++++++ .../iluwatar/doublebuffer/FrameBuffer.java | 68 +++++++++++++ .../java/com/iluwatar/doublebuffer/Pixel.java | 39 ++++++++ .../java/com/iluwatar/doublebuffer/Scene.java | 86 ++++++++++++++++ .../com/iluwatar/doublebuffer/AppTest.java | 39 ++++++++ .../doublebuffer/FrameBufferTest.java | 97 +++++++++++++++++++ .../com/iluwatar/doublebuffer/SceneTest.java | 74 ++++++++++++++ pom.xml | 1 + 11 files changed, 623 insertions(+) create mode 100644 double-buffer/README.md create mode 100644 double-buffer/pom.xml create mode 100644 double-buffer/src/main/java/com/iluwatar/doublebuffer/App.java create mode 100644 double-buffer/src/main/java/com/iluwatar/doublebuffer/Buffer.java create mode 100644 double-buffer/src/main/java/com/iluwatar/doublebuffer/FrameBuffer.java create mode 100644 double-buffer/src/main/java/com/iluwatar/doublebuffer/Pixel.java create mode 100644 double-buffer/src/main/java/com/iluwatar/doublebuffer/Scene.java create mode 100644 double-buffer/src/test/java/com/iluwatar/doublebuffer/AppTest.java create mode 100644 double-buffer/src/test/java/com/iluwatar/doublebuffer/FrameBufferTest.java create mode 100644 double-buffer/src/test/java/com/iluwatar/doublebuffer/SceneTest.java diff --git a/double-buffer/README.md b/double-buffer/README.md new file mode 100644 index 000000000000..8e8e7acf6bfd --- /dev/null +++ b/double-buffer/README.md @@ -0,0 +1,29 @@ + +--- +layout: pattern +title: Double Buffer +folder: double-buffer +permalink: /patterns/double-buffer/ +categories: Other +tags: + - Java + - Difficulty-Beginner +--- + +## Intent +Double buffering is a term used to describe a device that has two buffers. The usage of multiple buffers increases the overall throughput of a device and helps prevents bottlenecks. This example shows using double buffer pattern on graphics. It is used to show one image or frame while a separate frame is being buffered to be shown next. This method makes animations and games look more realistic than the same done in a single buffer mode. + +## Applicability +This pattern is one of those ones where you’ll know when you need it. If you have a system that lacks double buffering, it will probably look visibly wrong (tearing, etc.) or will behave incorrectly. But saying, “you’ll know when you need it” doesn’t give you much to go on. More specifically, this pattern is appropriate when all of these are true: + +- We have some state that is being modified incrementally. + +- That same state may be accessed in the middle of modification. + +- We want to prevent the code that’s accessing the state from seeing the work in progress. + +- We want to be able to read the state and we don’t want to have to wait while it’s being written. + +## Credits + +* [Game Programming Patterns - Double Buffer]([http://gameprogrammingpatterns.com/double-buffer.html](http://gameprogrammingpatterns.com/double-buffer.html)) \ No newline at end of file diff --git a/double-buffer/pom.xml b/double-buffer/pom.xml new file mode 100644 index 000000000000..a904c58842ef --- /dev/null +++ b/double-buffer/pom.xml @@ -0,0 +1,49 @@ + + + + + java-design-patterns + com.iluwatar + 1.22.0-SNAPSHOT + + 4.0.0 + + double-buffer + + + + junit + junit + + + org.apache.commons + commons-lang3 + + + + \ No newline at end of file diff --git a/double-buffer/src/main/java/com/iluwatar/doublebuffer/App.java b/double-buffer/src/main/java/com/iluwatar/doublebuffer/App.java new file mode 100644 index 000000000000..78c4a747a867 --- /dev/null +++ b/double-buffer/src/main/java/com/iluwatar/doublebuffer/App.java @@ -0,0 +1,85 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

    + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

    + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

    + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.doublebuffer; + +import org.apache.commons.lang3.tuple.MutablePair; +import org.apache.commons.lang3.tuple.Pair; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; + +/** + * Double buffering is a term used to describe a device that has two buffers. + * The usage of multiple buffers increases the overall throughput of a device + * and helps prevents bottlenecks. This example shows using double buffer pattern + * on graphics. It is used to show one image or frame while a separate frame + * is being buffered to be shown next. This method makes animations and games + * look more realistic than the same done in a single buffer mode. + */ +public class App { + + private static final Logger LOGGER = LoggerFactory.getLogger(App.class); + + /** + * Program main entry point. + * @param args runtime arguments + */ + public static void main(String[] args) { + var scene = new Scene(); + List> drawPixels = new ArrayList<>(); + Pair pixel1 = new MutablePair<>(1, 1); + Pair pixel2 = new MutablePair<>(5, 6); + Pair pixel3 = new MutablePair<>(3, 2); + drawPixels.add(pixel1); + drawPixels.add(pixel2); + drawPixels.add(pixel3); + scene.draw(drawPixels); + var buffer1 = scene.getBuffer(); + printBlackPixelCoordinate(buffer1); + + drawPixels.clear(); + Pair pixel4 = new MutablePair<>(3, 7); + Pair pixel5 = new MutablePair<>(6, 1); + drawPixels.add(pixel4); + drawPixels.add(pixel5); + scene.draw(drawPixels); + Buffer buffer2 = scene.getBuffer(); + printBlackPixelCoordinate(buffer2); + } + + private static void printBlackPixelCoordinate(Buffer buffer) { + var log = "Black Pixels: "; + Pixel[] pixels = buffer.getPixels(); + for (var i = 0; i < pixels.length; ++i) { + if (pixels[i] == Pixel.BLACK) { + var y = i / FrameBuffer.WIDTH; + var x = i % FrameBuffer.WIDTH; + log += " (" + x + ", " + y + ")"; + } + } + LOGGER.info(log); + } +} diff --git a/double-buffer/src/main/java/com/iluwatar/doublebuffer/Buffer.java b/double-buffer/src/main/java/com/iluwatar/doublebuffer/Buffer.java new file mode 100644 index 000000000000..b8c15a914e35 --- /dev/null +++ b/double-buffer/src/main/java/com/iluwatar/doublebuffer/Buffer.java @@ -0,0 +1,56 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

    + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

    + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

    + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.doublebuffer; + +/** + * Buffer interface. + */ +public interface Buffer { + + /** + * Clear the pixel in (x, y). + * @param x X coordinate + * @param y Y coordinate + */ + void clear(int x, int y); + + /** + * Draw the pixel in (x, y). + * @param x X coordinate + * @param y Y coordinate + */ + void draw(int x, int y); + + /** + * Clear all the pixels. + */ + void clearAll(); + + /** + * Get all the pixels. + * @return pixel list + */ + Pixel[] getPixels(); + +} diff --git a/double-buffer/src/main/java/com/iluwatar/doublebuffer/FrameBuffer.java b/double-buffer/src/main/java/com/iluwatar/doublebuffer/FrameBuffer.java new file mode 100644 index 000000000000..2730140a3d99 --- /dev/null +++ b/double-buffer/src/main/java/com/iluwatar/doublebuffer/FrameBuffer.java @@ -0,0 +1,68 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

    + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

    + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

    + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.doublebuffer; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * FrameBuffer implementation class. + */ +public class FrameBuffer implements Buffer { + + public static final int WIDTH = 10; + public static final int HEIGHT = 8; + + private Pixel[] pixels = new Pixel[WIDTH * HEIGHT]; + + public FrameBuffer() { + clearAll(); + } + + @Override + public void clear(int x, int y) { + pixels[getIndex(x, y)] = Pixel.WHITE; + } + + @Override + public void draw(int x, int y) { + pixels[getIndex(x, y)] = Pixel.BLACK; + } + + @Override + public void clearAll() { + for (var i = 0; i < pixels.length; ++i) { + pixels[i] = Pixel.WHITE; + } + } + + @Override + public Pixel[] getPixels() { + return pixels; + } + + private int getIndex(int x, int y) { + return x + WIDTH * y; + } +} diff --git a/double-buffer/src/main/java/com/iluwatar/doublebuffer/Pixel.java b/double-buffer/src/main/java/com/iluwatar/doublebuffer/Pixel.java new file mode 100644 index 000000000000..d693f4e2801c --- /dev/null +++ b/double-buffer/src/main/java/com/iluwatar/doublebuffer/Pixel.java @@ -0,0 +1,39 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

    + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

    + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

    + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.doublebuffer; + +/** + * Pixel enum. Each pixel can be white (not drawn) or black (drawn). + */ +public enum Pixel { + + WHITE(0), + BLACK(1); + + private int color; + + Pixel(int color) { + this.color = color; + } +} diff --git a/double-buffer/src/main/java/com/iluwatar/doublebuffer/Scene.java b/double-buffer/src/main/java/com/iluwatar/doublebuffer/Scene.java new file mode 100644 index 000000000000..2f5b668e2ac0 --- /dev/null +++ b/double-buffer/src/main/java/com/iluwatar/doublebuffer/Scene.java @@ -0,0 +1,86 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

    + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

    + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

    + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.doublebuffer; + +import org.apache.commons.lang3.tuple.Pair; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +/** + * Scene class. Render the output frame. + */ +public class Scene { + + private static final Logger LOGGER = LoggerFactory.getLogger(Scene.class); + + private Buffer[] frameBuffers; + + private int current; + + private int next; + + /** + * Constructor of Scene. + */ + public Scene() { + frameBuffers = new FrameBuffer[2]; + frameBuffers[0] = new FrameBuffer(); + frameBuffers[1] = new FrameBuffer(); + current = 0; + next = 1; + } + + /** + * Draw the next frame. + * @param coordinateList list of pixels of which the color should be black + */ + public void draw(List> coordinateList) { + LOGGER.info("Start drawing next frame"); + LOGGER.info("Current buffer: " + current + " Next buffer: " + next); + frameBuffers[next].clearAll(); + for (Pair coordinate : coordinateList) { + var x = coordinate.getKey(); + var y = coordinate.getValue(); + frameBuffers[next].draw(x, y); + } + LOGGER.info("Swap current and next buffer"); + swap(); + LOGGER.info("Finish swapping"); + LOGGER.info("Current buffer: " + current + " Next buffer: " + next); + } + + public Buffer getBuffer() { + LOGGER.info("Get current buffer: " + current); + return frameBuffers[current]; + } + + private void swap() { + current = current ^ next; + next = current ^ next; + current = current ^ next; + } + +} diff --git a/double-buffer/src/test/java/com/iluwatar/doublebuffer/AppTest.java b/double-buffer/src/test/java/com/iluwatar/doublebuffer/AppTest.java new file mode 100644 index 000000000000..ebbabf980476 --- /dev/null +++ b/double-buffer/src/test/java/com/iluwatar/doublebuffer/AppTest.java @@ -0,0 +1,39 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

    + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

    + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

    + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.doublebuffer; + +import org.junit.Test; + +/** + * App unit test. + */ +public class AppTest { + + @Test + public void testMain() { + String[] args = {}; + App.main(args); + } + +} diff --git a/double-buffer/src/test/java/com/iluwatar/doublebuffer/FrameBufferTest.java b/double-buffer/src/test/java/com/iluwatar/doublebuffer/FrameBufferTest.java new file mode 100644 index 000000000000..689af2919e9f --- /dev/null +++ b/double-buffer/src/test/java/com/iluwatar/doublebuffer/FrameBufferTest.java @@ -0,0 +1,97 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

    + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

    + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

    + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.doublebuffer; + +import org.junit.Assert; +import org.junit.Test; + +/** + * FrameBuffer unit test. + */ +public class FrameBufferTest { + + @Test + public void testClearAll() { + try { + var field = FrameBuffer.class.getDeclaredField("pixels"); + Pixel[] pixels = new Pixel[FrameBuffer.HEIGHT * FrameBuffer.WIDTH]; + for (int i = 0; i < pixels.length; ++i) { + pixels[i] = Pixel.WHITE; + } + pixels[0] = Pixel.BLACK; + var frameBuffer = new FrameBuffer(); + field.setAccessible(true); + field.set(frameBuffer, pixels); + frameBuffer.clearAll(); + Assert.assertEquals(Pixel.WHITE, frameBuffer.getPixels()[0]); + } catch (NoSuchFieldException | IllegalAccessException e) { + Assert.fail("Fail to modify field access."); + } + } + + @Test + public void testClear() { + try { + var field = FrameBuffer.class.getDeclaredField("pixels"); + Pixel[] pixels = new Pixel[FrameBuffer.HEIGHT * FrameBuffer.WIDTH]; + for (int i = 0; i < pixels.length; ++i) { + pixels[i] = Pixel.WHITE; + } + pixels[0] = Pixel.BLACK; + var frameBuffer = new FrameBuffer(); + field.setAccessible(true); + field.set(frameBuffer, pixels); + frameBuffer.clear(0, 0); + Assert.assertEquals(Pixel.WHITE, frameBuffer.getPixels()[0]); + } catch (NoSuchFieldException | IllegalAccessException e) { + Assert.fail("Fail to modify field access."); + } + } + + @Test + public void testDraw() { + var frameBuffer = new FrameBuffer(); + frameBuffer.draw(0, 0); + Assert.assertEquals(Pixel.BLACK, frameBuffer.getPixels()[0]); + } + + @Test + public void testGetPixels() { + try { + var field = FrameBuffer.class.getDeclaredField("pixels"); + Pixel[] pixels = new Pixel[FrameBuffer.HEIGHT * FrameBuffer.WIDTH]; + for (int i = 0; i < pixels.length; ++i) { + pixels[i] = Pixel.WHITE; + } + pixels[0] = Pixel.BLACK; + var frameBuffer = new FrameBuffer(); + field.setAccessible(true); + field.set(frameBuffer, pixels); + Assert.assertEquals(pixels, frameBuffer.getPixels()); + } catch (NoSuchFieldException | IllegalAccessException e) { + Assert.fail("Fail to modify field access."); + } + } + +} diff --git a/double-buffer/src/test/java/com/iluwatar/doublebuffer/SceneTest.java b/double-buffer/src/test/java/com/iluwatar/doublebuffer/SceneTest.java new file mode 100644 index 000000000000..ab332aa22360 --- /dev/null +++ b/double-buffer/src/test/java/com/iluwatar/doublebuffer/SceneTest.java @@ -0,0 +1,74 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

    + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

    + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

    + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.doublebuffer; + +import org.junit.Assert; +import org.junit.Test; + +import java.lang.reflect.Field; +import java.util.ArrayList; + +/** + * Scene unit tests. + */ +public class SceneTest { + + @Test + public void testGetBuffer() { + try { + var scene = new Scene(); + var field1 = Scene.class.getDeclaredField("current"); + field1.setAccessible(true); + field1.set(scene, 0); + FrameBuffer[] frameBuffers = new FrameBuffer[2]; + FrameBuffer frameBuffer = new FrameBuffer(); + frameBuffer.draw(0, 0); + frameBuffers[0] = frameBuffer; + var field2 = Scene.class.getDeclaredField("frameBuffers"); + field2.setAccessible(true); + field2.set(scene, frameBuffers); + Assert.assertEquals(frameBuffer, scene.getBuffer()); + } catch (NoSuchFieldException | IllegalAccessException e) { + Assert.fail("Fail to access private field."); + } + } + + @Test + public void testDraw() { + try { + var scene = new Scene(); + var field1 = Scene.class.getDeclaredField("current"); + var field2 = Scene.class.getDeclaredField("next"); + field1.setAccessible(true); + field1.set(scene, 0); + field2.setAccessible(true); + field2.set(scene, 1); + scene.draw(new ArrayList<>()); + Assert.assertEquals(1, field1.get(scene)); + Assert.assertEquals(0, field2.get(scene)); + } catch (NoSuchFieldException | IllegalAccessException e) { + Assert.fail("Fail to access private field"); + } + } +} diff --git a/pom.xml b/pom.xml index 0ef4890ca065..913f600e7aff 100644 --- a/pom.xml +++ b/pom.xml @@ -183,6 +183,7 @@ data-locality subclass-sandbox circuit-breaker + double-buffer From f00ebe1a8de224dadcc1526e1771825522be8c15 Mon Sep 17 00:00:00 2001 From: Anurag870 Date: Sun, 20 Oct 2019 21:31:02 +0530 Subject: [PATCH 30/68] #984 local variable inference changes (#1025) * #984 Fix for abstract-document, abstract-factory, acyclic-visitor, adapter, aggregator-microservices * #984 Fix for abstract-document, abstract-factory, acyclic-visitor, adapter, aggregator-microservices --- .../iluwatar/abstractdocument/AbstractDocument.java | 2 +- .../java/com/iluwatar/abstractdocument/App.java | 9 ++++----- .../main/java/com/iluwatar/acyclicvisitor/App.java | 8 ++++---- .../acyclicvisitor/ConfigureForDosVisitorTest.java | 12 ++---------- .../acyclicvisitor/ConfigureForUnixVisitorTest.java | 4 ++-- .../java/com/iluwatar/acyclicvisitor/HayesTest.java | 13 ++++--------- .../java/com/iluwatar/acyclicvisitor/ZoomTest.java | 13 ++++--------- adapter/src/main/java/com/iluwatar/adapter/App.java | 2 +- .../com/iluwatar/adapter/AdapterPatternTest.java | 6 +++--- .../aggregator/microservices/Aggregator.java | 2 +- .../microservices/ProductInformationClientImpl.java | 6 +++--- .../microservices/ProductInventoryClientImpl.java | 8 ++++---- 12 files changed, 33 insertions(+), 52 deletions(-) diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/AbstractDocument.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/AbstractDocument.java index ec5ff822ec7d..dee8302c1539 100644 --- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/AbstractDocument.java +++ b/abstract-document/src/main/java/com/iluwatar/abstractdocument/AbstractDocument.java @@ -61,7 +61,7 @@ public Stream children(String key, Function, T> const @Override public String toString() { - StringBuilder builder = new StringBuilder(); + var builder = new StringBuilder(); builder.append(getClass().getName()).append("["); properties.forEach((key, value) -> builder.append("[").append(key).append(" : ").append(value).append("]")); builder.append("]"); diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java index 1566b32f1b42..e8b2410a8bb6 100644 --- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java +++ b/abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java @@ -24,7 +24,6 @@ import java.util.Arrays; import java.util.HashMap; -import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,23 +51,23 @@ public class App { public App() { LOGGER.info("Constructing parts and car"); - Map carProperties = new HashMap<>(); + var carProperties = new HashMap(); carProperties.put(Property.MODEL.toString(), "300SL"); carProperties.put(Property.PRICE.toString(), 10000L); - Map wheelProperties = new HashMap<>(); + var wheelProperties = new HashMap(); wheelProperties.put(Property.TYPE.toString(), "wheel"); wheelProperties.put(Property.MODEL.toString(), "15C"); wheelProperties.put(Property.PRICE.toString(), 100L); - Map doorProperties = new HashMap<>(); + var doorProperties = new HashMap(); doorProperties.put(Property.TYPE.toString(), "door"); doorProperties.put(Property.MODEL.toString(), "Lambo"); doorProperties.put(Property.PRICE.toString(), 300L); carProperties.put(Property.PARTS.toString(), Arrays.asList(wheelProperties, doorProperties)); - Car car = new Car(carProperties); + var car = new Car(carProperties); LOGGER.info("Here is our car:"); LOGGER.info("-> model: {}", car.getModel().get()); diff --git a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/App.java b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/App.java index 19a48ef6131e..be96f3a60d31 100644 --- a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/App.java +++ b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/App.java @@ -41,11 +41,11 @@ public class App { */ public static void main(String[] args) { - ConfigureForUnixVisitor conUnix = new ConfigureForUnixVisitor(); - ConfigureForDosVisitor conDos = new ConfigureForDosVisitor(); + var conUnix = new ConfigureForUnixVisitor(); + var conDos = new ConfigureForDosVisitor(); - Zoom zoom = new Zoom(); - Hayes hayes = new Hayes(); + var zoom = new Zoom(); + var hayes = new Hayes(); hayes.accept(conDos); // Hayes modem with Dos configurator zoom.accept(conDos); // Zoom modem with Dos configurator diff --git a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForDosVisitorTest.java b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForDosVisitorTest.java index db7856b7ca8c..b90bafb0f5e6 100644 --- a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForDosVisitorTest.java +++ b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForDosVisitorTest.java @@ -24,18 +24,10 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.groups.Tuple.tuple; -import static org.mockito.Mockito.mock; import static uk.org.lidalia.slf4jext.Level.INFO; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; - -import com.iluwatar.acyclicvisitor.ConfigureForDosVisitor; -import com.iluwatar.acyclicvisitor.Hayes; -import com.iluwatar.acyclicvisitor.HayesVisitor; -import com.iluwatar.acyclicvisitor.Zoom; -import com.iluwatar.acyclicvisitor.ZoomVisitor; - import uk.org.lidalia.slf4jtest.TestLogger; import uk.org.lidalia.slf4jtest.TestLoggerFactory; @@ -48,8 +40,8 @@ public class ConfigureForDosVisitorTest { @Test public void testVisitForZoom() { - ConfigureForDosVisitor conDos = new ConfigureForDosVisitor(); - Zoom zoom = new Zoom(); + var conDos = new ConfigureForDosVisitor(); + var zoom = new Zoom(); conDos.visit(zoom); diff --git a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForUnixVisitorTest.java b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForUnixVisitorTest.java index 394bd95586b6..ef6fd4d8ede3 100644 --- a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForUnixVisitorTest.java +++ b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForUnixVisitorTest.java @@ -46,8 +46,8 @@ public void clearLoggers() { @Test public void testVisitForZoom() { - ConfigureForUnixVisitor conUnix = new ConfigureForUnixVisitor(); - Zoom zoom = new Zoom(); + var conUnix = new ConfigureForUnixVisitor(); + var zoom = new Zoom(); conUnix.visit(zoom); diff --git a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/HayesTest.java b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/HayesTest.java index d18b7a34fc03..477354b1347f 100644 --- a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/HayesTest.java +++ b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/HayesTest.java @@ -29,11 +29,6 @@ import org.junit.jupiter.api.Test; -import com.iluwatar.acyclicvisitor.ConfigureForDosVisitor; -import com.iluwatar.acyclicvisitor.ConfigureForUnixVisitor; -import com.iluwatar.acyclicvisitor.Hayes; -import com.iluwatar.acyclicvisitor.HayesVisitor; - /** * Hayes test class */ @@ -41,8 +36,8 @@ public class HayesTest { @Test public void testAcceptForDos() { - Hayes hayes = new Hayes(); - ConfigureForDosVisitor mockVisitor = mock(ConfigureForDosVisitor.class); + var hayes = new Hayes(); + var mockVisitor = mock(ConfigureForDosVisitor.class); hayes.accept(mockVisitor); verify((HayesVisitor)mockVisitor).visit(eq(hayes)); @@ -50,8 +45,8 @@ public void testAcceptForDos() { @Test public void testAcceptForUnix() { - Hayes hayes = new Hayes(); - ConfigureForUnixVisitor mockVisitor = mock(ConfigureForUnixVisitor.class); + var hayes = new Hayes(); + var mockVisitor = mock(ConfigureForUnixVisitor.class); hayes.accept(mockVisitor); diff --git a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ZoomTest.java b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ZoomTest.java index 924d97b2e1b7..ff24d526d227 100644 --- a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ZoomTest.java +++ b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ZoomTest.java @@ -29,11 +29,6 @@ import org.junit.jupiter.api.Test; -import com.iluwatar.acyclicvisitor.ConfigureForDosVisitor; -import com.iluwatar.acyclicvisitor.ConfigureForUnixVisitor; -import com.iluwatar.acyclicvisitor.Zoom; -import com.iluwatar.acyclicvisitor.ZoomVisitor; - /** * Zoom test class */ @@ -41,8 +36,8 @@ public class ZoomTest { @Test public void testAcceptForDos() { - Zoom zoom = new Zoom(); - ConfigureForDosVisitor mockVisitor = mock(ConfigureForDosVisitor.class); + var zoom = new Zoom(); + var mockVisitor = mock(ConfigureForDosVisitor.class); zoom.accept(mockVisitor); verify((ZoomVisitor)mockVisitor).visit(eq(zoom)); @@ -50,8 +45,8 @@ public void testAcceptForDos() { @Test public void testAcceptForUnix() { - Zoom zoom = new Zoom(); - ConfigureForUnixVisitor mockVisitor = mock(ConfigureForUnixVisitor.class); + var zoom = new Zoom(); + var mockVisitor = mock(ConfigureForUnixVisitor.class); zoom.accept(mockVisitor); verify((ZoomVisitor)mockVisitor).visit(eq(zoom)); diff --git a/adapter/src/main/java/com/iluwatar/adapter/App.java b/adapter/src/main/java/com/iluwatar/adapter/App.java index f04e26e76281..4f31af795f6b 100644 --- a/adapter/src/main/java/com/iluwatar/adapter/App.java +++ b/adapter/src/main/java/com/iluwatar/adapter/App.java @@ -54,7 +54,7 @@ public class App { */ public static void main(String[] args) { // The captain can only operate rowing boats but with adapter he is able to use fishing boats as well - Captain captain = new Captain(new FishingBoatAdapter()); + var captain = new Captain(new FishingBoatAdapter()); captain.row(); } } diff --git a/adapter/src/test/java/com/iluwatar/adapter/AdapterPatternTest.java b/adapter/src/test/java/com/iluwatar/adapter/AdapterPatternTest.java index d76f37403cf0..b5164c68de2f 100644 --- a/adapter/src/test/java/com/iluwatar/adapter/AdapterPatternTest.java +++ b/adapter/src/test/java/com/iluwatar/adapter/AdapterPatternTest.java @@ -53,7 +53,7 @@ public void setup() { FishingBoatAdapter fishingBoatAdapter = spy(new FishingBoatAdapter()); beans.put(FISHING_BEAN, fishingBoatAdapter); - Captain captain = new Captain(); + var captain = new Captain(); captain.setRowingBoat((FishingBoatAdapter) beans.get(FISHING_BEAN)); beans.put(ROWING_BEAN, captain); } @@ -66,13 +66,13 @@ public void setup() { */ @Test public void testAdapter() { - Captain captain = (Captain) beans.get(ROWING_BEAN); + var captain = (Captain) beans.get(ROWING_BEAN); // when captain moves captain.row(); // the captain internally calls the battleship object to move - RowingBoat adapter = (RowingBoat) beans.get(FISHING_BEAN); + var adapter = (RowingBoat) beans.get(FISHING_BEAN); verify(adapter).row(); } } diff --git a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Aggregator.java b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Aggregator.java index ccbe6f2fe68c..593d83e1378e 100644 --- a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Aggregator.java +++ b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Aggregator.java @@ -50,7 +50,7 @@ public class Aggregator { */ @RequestMapping(path = "/product", method = RequestMethod.GET) public Product getProduct() { - Product product = new Product(); + var product = new Product(); product.setTitle(informationClient.getProductTitle()); product.setProductInventories(inventoryClient.getProductInventories()); return product; diff --git a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClientImpl.java b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClientImpl.java index b42b5b55a337..f04906b476d2 100644 --- a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClientImpl.java +++ b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClientImpl.java @@ -43,10 +43,10 @@ public class ProductInformationClientImpl implements ProductInformationClient { @Override public String getProductTitle() { String response = null; - HttpRequest request = HttpRequest.newBuilder().GET().uri(URI.create("http://localhost:51515/information")).build(); - HttpClient client = HttpClient.newHttpClient(); + var request = HttpRequest.newBuilder().GET().uri(URI.create("http://localhost:51515/information")).build(); + var client = HttpClient.newHttpClient(); try { - HttpResponse httpResponse = client.send(request, HttpResponse.BodyHandlers.ofString()); + var httpResponse = client.send(request, HttpResponse.BodyHandlers.ofString()); response = httpResponse.body(); } catch (IOException ioe) { LOGGER.error("IOException Occurred", ioe); diff --git a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClientImpl.java b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClientImpl.java index 59a050c9e563..c92eb678c152 100644 --- a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClientImpl.java +++ b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClientImpl.java @@ -42,12 +42,12 @@ public class ProductInventoryClientImpl implements ProductInventoryClient { @Override public int getProductInventories() { - String response = "0"; + var response = "0"; - HttpRequest request = HttpRequest.newBuilder().GET().uri(URI.create("http://localhost:51516/inventories")).build(); - HttpClient client = HttpClient.newHttpClient(); + var request = HttpRequest.newBuilder().GET().uri(URI.create("http://localhost:51516/inventories")).build(); + var client = HttpClient.newHttpClient(); try { - HttpResponse httpResponse = client.send(request, HttpResponse.BodyHandlers.ofString()); + var httpResponse = client.send(request, HttpResponse.BodyHandlers.ofString()); response = httpResponse.body(); } catch (IOException ioe) { LOGGER.error("IOException Occurred", ioe); From 5fc03ee9f820307ccf2667b946057d0d53ec0a70 Mon Sep 17 00:00:00 2001 From: Jonathan Lao-kan Date: Sun, 20 Oct 2019 22:21:48 +0200 Subject: [PATCH 31/68] improve grammar of README (#945) * improve grammar of README * Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4642b9989c83..1d8245d5dc7a 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ solve common problems when designing an application or system. Design patterns can speed up the development process by providing tested, proven development paradigms. -Reusing design patterns help prevent subtle issues which cause major +Reusing design patterns help prevent subtle issues that cause major problems, and it also improves code readability for coders and architects who are familiar with the patterns. @@ -42,7 +42,7 @@ Once you are familiar with these concepts you can start drilling down into patterns by any of the following approaches - Using difficulty tags, `Difficulty-Beginner`, `Difficulty-Intermediate` & `Difficulty-Expert`. - - Using pattern categories, `Creational`, `Behavioral` and others. + - Using pattern categories, `Creational`, `Behavioral`, and others. - Search for a specific pattern. Can't find one? Please report a new pattern [here](https://github.com/iluwatar/java-design-patterns/issues). Hopefully you find the object oriented solutions presented on this site useful From c81c3ff1c7c5509f3421d230e61893beb1d587bb Mon Sep 17 00:00:00 2001 From: Zack Beach Date: Mon, 21 Oct 2019 01:09:29 -0400 Subject: [PATCH 32/68] Use local variable type inference (#995) * "visitor" pattern: Use local variable type inference Update "visitor" pattern with local variable type inference. * "value-object" pattern: Use local variable type inference Update "value-object" pattern with local variable type inference. * "unit-of-work" pattern: Use local variable type inference Update "value-object" pattern with local variable type inference. * "typeobjectpattern" pattern: Use local variable type inference Update "value-object" pattern with local variable type inference. --- .../java/com/iluwatar/typeobject/App.java | 18 ++++---- .../com/iluwatar/typeobject/CandyGame.java | 46 +++++++++---------- .../java/com/iluwatar/typeobject/Cell.java | 6 +-- .../com/iluwatar/typeobject/CellPool.java | 14 +++--- .../com/iluwatar/typeobject/JsonParser.java | 22 ++++----- .../iluwatar/typeobject/CandyGameTest.java | 26 +++++------ .../com/iluwatar/typeobject/CellPoolTest.java | 8 ++-- .../com/iluwatar/typeobject/CellTest.java | 18 ++++---- .../java/com/iluwatar/unitofwork/App.java | 10 ++-- .../unitofwork/StudentRepository.java | 14 +++--- .../unitofwork/StudentRepositoryTest.java | 4 +- .../java/com/iluwatar/value/object/App.java | 6 +-- .../com/iluwatar/value/object/HeroStat.java | 6 +-- .../iluwatar/value/object/HeroStatTest.java | 10 ++-- .../main/java/com/iluwatar/visitor/App.java | 2 +- .../main/java/com/iluwatar/visitor/Unit.java | 2 +- .../java/com/iluwatar/visitor/UnitTest.java | 8 ++-- 17 files changed, 110 insertions(+), 110 deletions(-) diff --git a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/App.java b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/App.java index 2e6db9dd68a3..daa1539acd22 100644 --- a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/App.java +++ b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/App.java @@ -53,17 +53,17 @@ public class App { * @param args command line args */ public static void main(String[] args) throws FileNotFoundException, IOException, ParseException { - int givenTime = 50; //50ms - int toWin = 500; //points - int pointsWon = 0; - int numOfRows = 3; - long start = System.currentTimeMillis(); - long end = System.currentTimeMillis(); - int round = 0; + var givenTime = 50; //50ms + var toWin = 500; //points + var pointsWon = 0; + var numOfRows = 3; + var start = System.currentTimeMillis(); + var end = System.currentTimeMillis(); + var round = 0; while (pointsWon < toWin && end - start < givenTime) { round++; - CellPool pool = new CellPool(numOfRows * numOfRows + 5); - CandyGame cg = new CandyGame(numOfRows, pool); + var pool = new CellPool(numOfRows * numOfRows + 5); + var cg = new CandyGame(numOfRows, pool); if (round > 1) { LOGGER.info("Refreshing.."); } else { diff --git a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CandyGame.java b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CandyGame.java index 516b4cf76bfd..5932acfc6c97 100644 --- a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CandyGame.java +++ b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CandyGame.java @@ -44,8 +44,8 @@ public class CandyGame { this.cells = new Cell[num][num]; this.pool = pool; this.totalPoints = 0; - for (int i = 0; i < num; i++) { - for (int j = 0; j < num; j++) { + for (var i = 0; i < num; i++) { + for (var j = 0; j < num; j++) { this.cells[i][j] = this.pool.getNewCell(); this.cells[i][j].xIndex = j; this.cells[i][j].yIndex = i; @@ -55,7 +55,7 @@ public class CandyGame { static String numOfSpaces(int num) { String result = ""; - for (int i = 0; i < num; i++) { + for (var i = 0; i < num; i++) { result += " "; } return result; @@ -63,11 +63,11 @@ static String numOfSpaces(int num) { void printGameStatus() { LOGGER.info(""); - for (int i = 0; i < cells.length; i++) { - for (int j = 0; j < cells.length; j++) { - String candyName = cells[i][j].candy.name; + for (var i = 0; i < cells.length; i++) { + for (var j = 0; j < cells.length; j++) { + var candyName = cells[i][j].candy.name; if (candyName.length() < 20) { - int totalSpaces = 20 - candyName.length(); + var totalSpaces = 20 - candyName.length(); LOGGER.info(numOfSpaces(totalSpaces / 2) + cells[i][j].candy.name + numOfSpaces(totalSpaces - totalSpaces / 2) + "|"); } else { @@ -105,16 +105,16 @@ ArrayList adjacentCells(int yIndex, int xIndex) { } boolean continueRound() { - for (int i = 0; i < this.cells.length; i++) { + for (var i = 0; i < this.cells.length; i++) { if (this.cells[cells.length - 1][i].candy.getType().equals(Type.rewardFruit)) { return true; } } - for (int i = 0; i < this.cells.length; i++) { - for (int j = 0; j < this.cells.length; j++) { + for (var i = 0; i < this.cells.length; i++) { + for (var j = 0; j < this.cells.length; j++) { if (!this.cells[i][j].candy.getType().equals(Type.rewardFruit)) { - ArrayList adj = adjacentCells(i,j); - for (int a = 0; a < adj.size(); a++) { + var adj = adjacentCells(i,j); + for (var a = 0; a < adj.size(); a++) { if (this.cells[i][j].candy.name.equals(adj.get(a).candy.name)) { return true; } @@ -132,21 +132,21 @@ void handleChange(int points) { } void round(int timeSoFar, int totalTime) { - long start = System.currentTimeMillis(); - long end = System.currentTimeMillis(); + var start = System.currentTimeMillis(); + var end = System.currentTimeMillis(); while (end - start + timeSoFar < totalTime && continueRound()) { - for (int i = 0; i < this.cells.length; i++) { - int points = 0; - int j = this.cells.length - 1; + for (var i = 0; i < this.cells.length; i++) { + var points = 0; + var j = this.cells.length - 1; while (this.cells[j][i].candy.getType().equals(Type.rewardFruit)) { points = this.cells[j][i].candy.getPoints(); this.cells[j][i].crush(pool, this.cells); handleChange(points); } } - for (int i = 0; i < this.cells.length; i++) { - int j = cells.length - 1; - int points = 0; + for (var i = 0; i < this.cells.length; i++) { + var j = cells.length - 1; + var points = 0; while (j > 0) { points = this.cells[j][i].interact(this.cells[j - 1][i], this.pool, this.cells); if (points != 0) { @@ -156,9 +156,9 @@ void round(int timeSoFar, int totalTime) { } } } - for (int i = 0; i < this.cells.length; i++) { - int j = 0; - int points = 0; + for (var i = 0; i < this.cells.length; i++) { + var j = 0; + var points = 0; while (j < cells.length - 1) { points = this.cells[i][j].interact(this.cells[i][j + 1], this.pool, this.cells); if (points != 0) { diff --git a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/Cell.java b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/Cell.java index 9171cc03064d..bf6b671c71ac 100644 --- a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/Cell.java +++ b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/Cell.java @@ -53,11 +53,11 @@ void crush(CellPool pool, Cell[][] cellMatrix) { } void fillThisSpace(CellPool pool, Cell[][] cellMatrix) { - for (int y = this.yIndex; y > 0; y--) { + for (var y = this.yIndex; y > 0; y--) { cellMatrix[y][this.xIndex] = cellMatrix[y - 1][this.xIndex]; cellMatrix[y][this.xIndex].yIndex = y; } - Cell newC = pool.getNewCell(); + var newC = pool.getNewCell(); cellMatrix[0][this.xIndex] = newC; cellMatrix[0][this.xIndex].xIndex = this.xIndex; cellMatrix[0][this.xIndex].yIndex = 0; @@ -78,7 +78,7 @@ int interact(Cell c, CellPool pool, Cell[][] cellMatrix) { return 0; } else { if (this.candy.name.equals(c.candy.name)) { - int pointsWon = this.candy.getPoints() + c.candy.getPoints(); + var pointsWon = this.candy.getPoints() + c.candy.getPoints(); handleCrush(c,pool,cellMatrix); return pointsWon; } else { diff --git a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CellPool.java b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CellPool.java index 6014da0cf1ce..c381c23f6cfb 100644 --- a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CellPool.java +++ b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/CellPool.java @@ -57,7 +57,7 @@ public class CellPool { randomCode[4] = new Candy("orange gum", "candy", Type.crushableCandy, 10); } for (int i = 0; i < num; i++) { - Cell c = new Cell(); + var c = new Cell(); c.candy = randomCode[RANDOM.nextInt(randomCode.length)]; this.pool.add(c); } @@ -65,7 +65,7 @@ public class CellPool { } Cell getNewCell() { - Cell newCell = this.pool.remove(pointer); + var newCell = this.pool.remove(pointer); pointer--; return newCell; } @@ -77,12 +77,12 @@ void addNewCell(Cell c) { } Candy[] assignRandomCandytypes() throws FileNotFoundException, IOException, ParseException { - JsonParser jp = new JsonParser(); + var jp = new JsonParser(); jp.parse(); - Candy[] randomCode = new Candy[jp.candies.size() - 2]; //exclude generic types 'fruit' and 'candy' - int i = 0; - for (Enumeration e = jp.candies.keys(); e.hasMoreElements();) { - String s = e.nextElement(); + var randomCode = new Candy[jp.candies.size() - 2]; //exclude generic types 'fruit' and 'candy' + var i = 0; + for (var e = jp.candies.keys(); e.hasMoreElements();) { + var s = e.nextElement(); if (!s.equals("fruit") && !s.equals("candy")) { //not generic randomCode[i] = jp.candies.get(s); diff --git a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/JsonParser.java b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/JsonParser.java index 55c25e1ef5ab..36234da4c5d2 100644 --- a/typeobjectpattern/src/main/java/com/iluwatar/typeobject/JsonParser.java +++ b/typeobjectpattern/src/main/java/com/iluwatar/typeobject/JsonParser.java @@ -47,23 +47,23 @@ public class JsonParser { } void parse() throws FileNotFoundException, IOException, ParseException { - JSONParser parser = new JSONParser(); - JSONObject jo = (JSONObject) parser.parse(new FileReader(new File("").getAbsolutePath() + var parser = new JSONParser(); + var jo = (JSONObject) parser.parse(new FileReader(new File("").getAbsolutePath() + "\\src\\main\\java\\com\\iluwatar\\typeobject\\candy.json")); - JSONArray a = (JSONArray) jo.get("candies"); - for (Object o : a) { - JSONObject candy = (JSONObject) o; - String name = (String) candy.get("name"); - String parentName = (String) candy.get("parent"); - String t = (String) candy.get("type"); + var a = (JSONArray) jo.get("candies"); + for (var o : a) { + var candy = (JSONObject) o; + var name = (String) candy.get("name"); + var parentName = (String) candy.get("parent"); + var t = (String) candy.get("type"); Type type = null; if (t.equals("rewardFruit")) { type = Type.rewardFruit; } else { type = Type.crushableCandy; } - int points = Integer.parseInt((String) candy.get("points")); - Candy c = new Candy(name, parentName, type, points); + var points = Integer.parseInt((String) candy.get("points")); + var c = new Candy(name, parentName, type, points); this.candies.put(name, c); } setParentAndPoints(); @@ -71,7 +71,7 @@ void parse() throws FileNotFoundException, IOException, ParseException { void setParentAndPoints() { for (Enumeration e = this.candies.keys(); e.hasMoreElements();) { - Candy c = this.candies.get(e.nextElement()); + var c = this.candies.get(e.nextElement()); if (c.parentName == null) { c.parent = null; } else { diff --git a/typeobjectpattern/src/test/java/com/iluwatar/typeobject/CandyGameTest.java b/typeobjectpattern/src/test/java/com/iluwatar/typeobject/CandyGameTest.java index b813ee881c2a..7192ff507e6a 100644 --- a/typeobjectpattern/src/test/java/com/iluwatar/typeobject/CandyGameTest.java +++ b/typeobjectpattern/src/test/java/com/iluwatar/typeobject/CandyGameTest.java @@ -35,33 +35,33 @@ class CandyGameTest { @Test void adjacentCellsTest() { - CandyGame cg = new CandyGame(3,new CellPool(9)); - ArrayList arr1 = cg.adjacentCells(0, 0); - ArrayList arr2 = cg.adjacentCells(1, 2); - ArrayList arr3 = cg.adjacentCells(1, 1); + var cg = new CandyGame(3,new CellPool(9)); + var arr1 = cg.adjacentCells(0, 0); + var arr2 = cg.adjacentCells(1, 2); + var arr3 = cg.adjacentCells(1, 1); assertTrue(arr1.size() == 2 && arr2.size() == 3 && arr3.size() == 4); } @Test void continueRoundTest() { - Cell[][] matrix = new Cell[2][2]; - Candy c1 = new Candy("green jelly", "jelly", Type.crushableCandy, 5); - Candy c2 = new Candy("purple jelly", "jelly", Type.crushableCandy, 5); - Candy c3 = new Candy("green apple", "apple", Type.rewardFruit, 10); + var matrix = new Cell[2][2]; + var c1 = new Candy("green jelly", "jelly", Type.crushableCandy, 5); + var c2 = new Candy("purple jelly", "jelly", Type.crushableCandy, 5); + var c3 = new Candy("green apple", "apple", Type.rewardFruit, 10); matrix[0][0] = new Cell(c1,0,0);; matrix[0][1] = new Cell(c2,1,0); matrix[1][0] = new Cell(c3,0,1); matrix[1][1] = new Cell(c2,1,1); - CellPool p = new CellPool(4); - CandyGame cg = new CandyGame(2,p); + var p = new CellPool(4); + var cg = new CandyGame(2,p); cg.cells = matrix; - boolean fruitInLastRow = cg.continueRound(); + var fruitInLastRow = cg.continueRound(); matrix[1][0].crush(p, matrix); matrix[0][0] = new Cell(c3,0,0); - boolean matchingCandy = cg.continueRound(); + var matchingCandy = cg.continueRound(); matrix[0][1].crush(p,matrix); matrix[0][1] = new Cell(c3,1,0); - boolean noneLeft = cg.continueRound(); + var noneLeft = cg.continueRound(); assertTrue(fruitInLastRow && matchingCandy && !noneLeft); } diff --git a/typeobjectpattern/src/test/java/com/iluwatar/typeobject/CellPoolTest.java b/typeobjectpattern/src/test/java/com/iluwatar/typeobject/CellPoolTest.java index 289c7b944766..4de7589f2629 100644 --- a/typeobjectpattern/src/test/java/com/iluwatar/typeobject/CellPoolTest.java +++ b/typeobjectpattern/src/test/java/com/iluwatar/typeobject/CellPoolTest.java @@ -34,10 +34,10 @@ class CellPoolTest { @Test void assignRandomCandyTypesTest() { - CellPool cp = new CellPool(10); - Hashtable ht = new Hashtable(); - int parentTypes = 0; - for (int i = 0; i < cp.randomCode.length; i++) { + var cp = new CellPool(10); + var ht = new Hashtable(); + var parentTypes = 0; + for (var i = 0; i < cp.randomCode.length; i++) { if (ht.get(cp.randomCode[i].name) == null) { ht.put(cp.randomCode[i].name, true); } diff --git a/typeobjectpattern/src/test/java/com/iluwatar/typeobject/CellTest.java b/typeobjectpattern/src/test/java/com/iluwatar/typeobject/CellTest.java index c7beefdb15f7..b9cf09a4c5ee 100644 --- a/typeobjectpattern/src/test/java/com/iluwatar/typeobject/CellTest.java +++ b/typeobjectpattern/src/test/java/com/iluwatar/typeobject/CellTest.java @@ -34,24 +34,24 @@ class CellTest { @Test void interactTest() { - Candy c1 = new Candy("green jelly", "jelly", Type.crushableCandy, 5); - Candy c2 = new Candy("green apple", "apple", Type.rewardFruit, 10); - Cell[][] matrix = new Cell[4][4]; + var c1 = new Candy("green jelly", "jelly", Type.crushableCandy, 5); + var c2 = new Candy("green apple", "apple", Type.rewardFruit, 10); + var matrix = new Cell[4][4]; matrix[0][0] = new Cell(c1,0,0); matrix[0][1] = new Cell(c1,1,0); matrix[0][2] = new Cell(c2,2,0); matrix[0][3] = new Cell(c1,3,0); - CellPool cp = new CellPool(5); - int points1 = matrix[0][0].interact(matrix[0][1], cp, matrix); - int points2 = matrix[0][2].interact(matrix[0][3], cp, matrix); + var cp = new CellPool(5); + var points1 = matrix[0][0].interact(matrix[0][1], cp, matrix); + var points2 = matrix[0][2].interact(matrix[0][3], cp, matrix); assertTrue(points1 > 0 && points2 == 0); } @Test void crushTest() { - Candy c1 = new Candy("green jelly", "jelly", Type.crushableCandy, 5); - Candy c2 = new Candy("purple candy", "candy", Type.crushableCandy, 5); - Cell[][] matrix = new Cell[4][4]; + var c1 = new Candy("green jelly", "jelly", Type.crushableCandy, 5); + var c2 = new Candy("purple candy", "candy", Type.crushableCandy, 5); + var matrix = new Cell[4][4]; matrix[0][0] = new Cell(c1,0,0); matrix[1][0] = new Cell(c2,0,1); matrix[1][0].crush(new CellPool(5), matrix); diff --git a/unit-of-work/src/main/java/com/iluwatar/unitofwork/App.java b/unit-of-work/src/main/java/com/iluwatar/unitofwork/App.java index 38cc474108b5..7ef9b566fd9c 100644 --- a/unit-of-work/src/main/java/com/iluwatar/unitofwork/App.java +++ b/unit-of-work/src/main/java/com/iluwatar/unitofwork/App.java @@ -34,13 +34,13 @@ public class App { * @param args no argument sent */ public static void main(String[] args) { - Student ram = new Student(1, "Ram", "Street 9, Cupertino"); - Student shyam = new Student(2, "Shyam", "Z bridge, Pune"); - Student gopi = new Student(3, "Gopi", "Street 10, Mumbai"); + var ram = new Student(1, "Ram", "Street 9, Cupertino"); + var shyam = new Student(2, "Shyam", "Z bridge, Pune"); + var gopi = new Student(3, "Gopi", "Street 10, Mumbai"); HashMap> context = new HashMap<>(); - StudentDatabase studentDatabase = new StudentDatabase(); - StudentRepository studentRepository = new StudentRepository(context, studentDatabase); + var studentDatabase = new StudentDatabase(); + var studentRepository = new StudentRepository(context, studentDatabase); studentRepository.registerNew(ram); studentRepository.registerModified(shyam); diff --git a/unit-of-work/src/main/java/com/iluwatar/unitofwork/StudentRepository.java b/unit-of-work/src/main/java/com/iluwatar/unitofwork/StudentRepository.java index 2ca1977c68bc..081b0f13a51c 100644 --- a/unit-of-work/src/main/java/com/iluwatar/unitofwork/StudentRepository.java +++ b/unit-of-work/src/main/java/com/iluwatar/unitofwork/StudentRepository.java @@ -68,7 +68,7 @@ public void registerDeleted(Student student) { } private void register(Student student, String operation) { - List studentsToOperate = context.get(operation); + var studentsToOperate = context.get(operation); if (studentsToOperate == null) { studentsToOperate = new ArrayList<>(); } @@ -99,24 +99,24 @@ public void commit() { } private void commitInsert() { - List studentsToBeInserted = context.get(IUnitOfWork.INSERT); - for (Student student : studentsToBeInserted) { + var studentsToBeInserted = context.get(IUnitOfWork.INSERT); + for (var student : studentsToBeInserted) { LOGGER.info("Saving {} to database.", student.getName()); studentDatabase.insert(student); } } private void commitModify() { - List modifiedStudents = context.get(IUnitOfWork.MODIFY); - for (Student student : modifiedStudents) { + var modifiedStudents = context.get(IUnitOfWork.MODIFY); + for (var student : modifiedStudents) { LOGGER.info("Modifying {} to database.", student.getName()); studentDatabase.modify(student); } } private void commitDelete() { - List deletedStudents = context.get(IUnitOfWork.DELETE); - for (Student student : deletedStudents) { + var deletedStudents = context.get(IUnitOfWork.DELETE); + for (var student : deletedStudents) { LOGGER.info("Deleting {} to database.", student.getName()); studentDatabase.delete(student); } diff --git a/unit-of-work/src/test/java/com/iluwatar/unitofwork/StudentRepositoryTest.java b/unit-of-work/src/test/java/com/iluwatar/unitofwork/StudentRepositoryTest.java index c4f45b8b5b4a..5a75be8b583d 100644 --- a/unit-of-work/src/test/java/com/iluwatar/unitofwork/StudentRepositoryTest.java +++ b/unit-of-work/src/test/java/com/iluwatar/unitofwork/StudentRepositoryTest.java @@ -97,7 +97,7 @@ public void shouldSaveAllLocalChangesToDb() { @Test public void shouldNotWriteToDbIfContextIsNull() { - StudentRepository studentRepository = new StudentRepository(null, studentDatabase); + var studentRepository = new StudentRepository(null, studentDatabase); studentRepository.commit(); @@ -106,7 +106,7 @@ public void shouldNotWriteToDbIfContextIsNull() { @Test public void shouldNotWriteToDbIfNothingToCommit() { - StudentRepository studentRepository = new StudentRepository(new HashMap<>(), studentDatabase); + var studentRepository = new StudentRepository(new HashMap<>(), studentDatabase); studentRepository.commit(); diff --git a/value-object/src/main/java/com/iluwatar/value/object/App.java b/value-object/src/main/java/com/iluwatar/value/object/App.java index 9cc62f24602f..f2d773373fd6 100644 --- a/value-object/src/main/java/com/iluwatar/value/object/App.java +++ b/value-object/src/main/java/com/iluwatar/value/object/App.java @@ -48,9 +48,9 @@ public class App { * This practice creates three HeroStats(Value object) and checks equality between those. */ public static void main(String[] args) { - HeroStat statA = HeroStat.valueOf(10, 5, 0); - HeroStat statB = HeroStat.valueOf(10, 5, 0); - HeroStat statC = HeroStat.valueOf(5, 1, 8); + var statA = HeroStat.valueOf(10, 5, 0); + var statB = HeroStat.valueOf(10, 5, 0); + var statC = HeroStat.valueOf(5, 1, 8); LOGGER.info(statA.toString()); diff --git a/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java b/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java index 6ec2f541f5c0..f31f29d9dafa 100644 --- a/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java +++ b/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java @@ -76,8 +76,8 @@ public String toString() { @Override public int hashCode() { - final int prime = 31; - int result = 1; + final var prime = 31; + var result = 1; result = prime * result + intelligence; result = prime * result + luck; result = prime * result + strength; @@ -95,7 +95,7 @@ public boolean equals(Object obj) { if (getClass() != obj.getClass()) { return false; } - HeroStat other = (HeroStat) obj; + var other = (HeroStat) obj; if (intelligence != other.intelligence) { return false; } diff --git a/value-object/src/test/java/com/iluwatar/value/object/HeroStatTest.java b/value-object/src/test/java/com/iluwatar/value/object/HeroStatTest.java index e6c3f89525ae..a78092d363f6 100644 --- a/value-object/src/test/java/com/iluwatar/value/object/HeroStatTest.java +++ b/value-object/src/test/java/com/iluwatar/value/object/HeroStatTest.java @@ -45,8 +45,8 @@ public class HeroStatTest { */ @Test public void testEquals() { - HeroStat heroStatA = HeroStat.valueOf(3, 9, 2); - HeroStat heroStatB = HeroStat.valueOf(3, 9, 2); + var heroStatA = HeroStat.valueOf(3, 9, 2); + var heroStatB = HeroStat.valueOf(3, 9, 2); new EqualsTester().addEqualityGroup(heroStatA, heroStatB).testEquals(); } @@ -56,9 +56,9 @@ public void testEquals() { */ @Test public void testToString() { - HeroStat heroStatA = HeroStat.valueOf(3, 9, 2); - HeroStat heroStatB = HeroStat.valueOf(3, 9, 2); - HeroStat heroStatC = HeroStat.valueOf(3, 9, 8); + var heroStatA = HeroStat.valueOf(3, 9, 2); + var heroStatB = HeroStat.valueOf(3, 9, 2); + var heroStatC = HeroStat.valueOf(3, 9, 8); assertThat(heroStatA.toString(), is(heroStatB.toString())); assertThat(heroStatA.toString(), is(not(heroStatC.toString()))); diff --git a/visitor/src/main/java/com/iluwatar/visitor/App.java b/visitor/src/main/java/com/iluwatar/visitor/App.java index 9c8359cb1d8c..143b915d823e 100644 --- a/visitor/src/main/java/com/iluwatar/visitor/App.java +++ b/visitor/src/main/java/com/iluwatar/visitor/App.java @@ -41,7 +41,7 @@ public class App { */ public static void main(String[] args) { - Commander commander = + var commander = new Commander(new Sergeant(new Soldier(), new Soldier(), new Soldier()), new Sergeant( new Soldier(), new Soldier(), new Soldier())); commander.accept(new SoldierVisitor()); diff --git a/visitor/src/main/java/com/iluwatar/visitor/Unit.java b/visitor/src/main/java/com/iluwatar/visitor/Unit.java index 27bcc26de566..794308aaf0af 100644 --- a/visitor/src/main/java/com/iluwatar/visitor/Unit.java +++ b/visitor/src/main/java/com/iluwatar/visitor/Unit.java @@ -39,7 +39,7 @@ public Unit(Unit... children) { * Accept visitor */ public void accept(UnitVisitor visitor) { - for (Unit child : children) { + for (var child : children) { child.accept(visitor); } } diff --git a/visitor/src/test/java/com/iluwatar/visitor/UnitTest.java b/visitor/src/test/java/com/iluwatar/visitor/UnitTest.java index d0807bab814f..e375f4ce4609 100644 --- a/visitor/src/test/java/com/iluwatar/visitor/UnitTest.java +++ b/visitor/src/test/java/com/iluwatar/visitor/UnitTest.java @@ -56,15 +56,15 @@ public UnitTest(final Function factory) { @Test public void testAccept() { - final Unit[] children = new Unit[5]; + final var children = new Unit[5]; Arrays.setAll(children, (i) -> mock(Unit.class)); - final U unit = this.factory.apply(children); - final UnitVisitor visitor = mock(UnitVisitor.class); + final var unit = this.factory.apply(children); + final var visitor = mock(UnitVisitor.class); unit.accept(visitor); verifyVisit(unit, visitor); - for (final Unit child : children) { + for (final var child : children) { verify(child).accept(eq(visitor)); } From 4904d7eea047b5b924dcf33092ed887300f44d10 Mon Sep 17 00:00:00 2001 From: Alexander Ivanov Date: Tue, 22 Oct 2019 07:15:35 +0200 Subject: [PATCH 33/68] #1021: Fix checkstyle warnings by changing the license header template (#1027) * Add custom license header style in order to comply with Google's Checkstyle format * Update license headers to comply with Google's Checkstyle format --- .../abstractdocument/AbstractDocument.java | 3 +- .../com/iluwatar/abstractdocument/App.java | 3 +- .../iluwatar/abstractdocument/Document.java | 3 +- .../iluwatar/abstractdocument/domain/Car.java | 3 +- .../abstractdocument/domain/HasModel.java | 3 +- .../abstractdocument/domain/HasParts.java | 3 +- .../abstractdocument/domain/HasPrice.java | 3 +- .../abstractdocument/domain/HasType.java | 3 +- .../abstractdocument/domain/Part.java | 3 +- .../domain/enums/Property.java | 3 +- .../AbstractDocumentTest.java | 3 +- .../iluwatar/abstractdocument/AppTest.java | 3 +- .../iluwatar/abstractdocument/DomainTest.java | 3 +- .../com/iluwatar/abstractfactory/App.java | 3 +- .../com/iluwatar/abstractfactory/Army.java | 3 +- .../com/iluwatar/abstractfactory/Castle.java | 3 +- .../com/iluwatar/abstractfactory/ElfArmy.java | 3 +- .../iluwatar/abstractfactory/ElfCastle.java | 3 +- .../com/iluwatar/abstractfactory/ElfKing.java | 3 +- .../abstractfactory/ElfKingdomFactory.java | 3 +- .../com/iluwatar/abstractfactory/King.java | 3 +- .../abstractfactory/KingdomFactory.java | 3 +- .../com/iluwatar/abstractfactory/OrcArmy.java | 3 +- .../iluwatar/abstractfactory/OrcCastle.java | 3 +- .../com/iluwatar/abstractfactory/OrcKing.java | 3 +- .../abstractfactory/OrcKingdomFactory.java | 3 +- .../abstractfactory/AbstractFactoryTest.java | 3 +- .../com/iluwatar/abstractfactory/AppTest.java | 3 +- .../acyclicvisitor/AllModemVisitor.java | 3 +- .../java/com/iluwatar/acyclicvisitor/App.java | 3 +- .../ConfigureForDosVisitor.java | 3 +- .../ConfigureForUnixVisitor.java | 3 +- .../com/iluwatar/acyclicvisitor/Hayes.java | 3 +- .../iluwatar/acyclicvisitor/HayesVisitor.java | 3 +- .../com/iluwatar/acyclicvisitor/Modem.java | 3 +- .../iluwatar/acyclicvisitor/ModemVisitor.java | 3 +- .../com/iluwatar/acyclicvisitor/Zoom.java | 3 +- .../iluwatar/acyclicvisitor/ZoomVisitor.java | 3 +- .../com/iluwatar/acyclicvisitor/AppTest.java | 3 +- .../ConfigureForDosVisitorTest.java | 3 +- .../ConfigureForUnixVisitorTest.java | 3 +- .../iluwatar/acyclicvisitor/HayesTest.java | 3 +- .../com/iluwatar/acyclicvisitor/ZoomTest.java | 3 +- .../main/java/com/iluwatar/adapter/App.java | 3 +- .../java/com/iluwatar/adapter/Captain.java | 3 +- .../com/iluwatar/adapter/FishingBoat.java | 3 +- .../iluwatar/adapter/FishingBoatAdapter.java | 3 +- .../java/com/iluwatar/adapter/RowingBoat.java | 3 +- .../iluwatar/adapter/AdapterPatternTest.java | 3 +- .../java/com/iluwatar/adapter/AppTest.java | 3 +- .../aggregator/microservices/Aggregator.java | 3 +- .../aggregator/microservices/App.java | 3 +- .../aggregator/microservices/Product.java | 3 +- .../ProductInformationClient.java | 3 +- .../ProductInformationClientImpl.java | 3 +- .../microservices/ProductInventoryClient.java | 3 +- .../ProductInventoryClientImpl.java | 3 +- .../microservices/AggregatorTest.java | 3 +- .../microservice/InformationApplication.java | 3 +- .../microservice/InformationController.java | 3 +- .../InformationControllerTest.java | 3 +- .../microservice/InventoryApplication.java | 3 +- .../microservice/InventoryController.java | 3 +- .../microservice/InventoryControllerTest.java | 3 +- .../java/com/iluwatar/ambassador/App.java | 3 +- .../java/com/iluwatar/ambassador/Client.java | 3 +- .../iluwatar/ambassador/RemoteService.java | 3 +- .../ambassador/RemoteServiceInterface.java | 3 +- .../ambassador/ServiceAmbassador.java | 3 +- .../ambassador/util/RandomProvider.java | 3 +- .../java/com/iluwatar/ambassador/AppTest.java | 3 +- .../com/iluwatar/ambassador/ClientTest.java | 3 +- .../ambassador/RemoteServiceTest.java | 3 +- .../ambassador/ServiceAmbassadorTest.java | 3 +- .../com/iluwatar/api/gateway/ApiGateway.java | 3 +- .../java/com/iluwatar/api/gateway/App.java | 3 +- .../iluwatar/api/gateway/DesktopProduct.java | 3 +- .../com/iluwatar/api/gateway/ImageClient.java | 3 +- .../iluwatar/api/gateway/ImageClientImpl.java | 3 +- .../iluwatar/api/gateway/MobileProduct.java | 3 +- .../com/iluwatar/api/gateway/PriceClient.java | 3 +- .../iluwatar/api/gateway/PriceClientImpl.java | 3 +- .../iluwatar/api/gateway/ApiGatewayTest.java | 3 +- .../image/microservice/ImageApplication.java | 3 +- .../image/microservice/ImageController.java | 3 +- .../microservice/ImageControllerTest.java | 3 +- .../price/microservice/PriceApplication.java | 3 +- .../price/microservice/PriceController.java | 3 +- .../microservice/PriceControllerTest.java | 3 +- .../iluwatar/async/method/invocation/App.java | 3 +- .../method/invocation/AsyncCallback.java | 3 +- .../method/invocation/AsyncExecutor.java | 3 +- .../async/method/invocation/AsyncResult.java | 3 +- .../invocation/ThreadAsyncExecutor.java | 3 +- .../async/method/invocation/AppTest.java | 3 +- .../invocation/ThreadAsyncExecutorTest.java | 3 +- .../main/java/com/iluwatar/balking/App.java | 3 +- .../com/iluwatar/balking/DelayProvider.java | 3 +- .../com/iluwatar/balking/WashingMachine.java | 3 +- .../iluwatar/balking/WashingMachineState.java | 3 +- .../java/com/iluwatar/balking/AppTest.java | 3 +- .../iluwatar/balking/WashingMachineTest.java | 3 +- .../main/java/com/iluwatar/bridge/App.java | 3 +- .../java/com/iluwatar/bridge/Enchantment.java | 3 +- .../iluwatar/bridge/FlyingEnchantment.java | 3 +- .../main/java/com/iluwatar/bridge/Hammer.java | 3 +- .../bridge/SoulEatingEnchantment.java | 3 +- .../main/java/com/iluwatar/bridge/Sword.java | 3 +- .../main/java/com/iluwatar/bridge/Weapon.java | 3 +- .../java/com/iluwatar/bridge/AppTest.java | 3 +- .../java/com/iluwatar/bridge/HammerTest.java | 3 +- .../java/com/iluwatar/bridge/SwordTest.java | 3 +- .../java/com/iluwatar/bridge/WeaponTest.java | 3 +- .../main/java/com/iluwatar/builder/App.java | 3 +- .../main/java/com/iluwatar/builder/Armor.java | 3 +- .../java/com/iluwatar/builder/HairColor.java | 3 +- .../java/com/iluwatar/builder/HairType.java | 3 +- .../main/java/com/iluwatar/builder/Hero.java | 3 +- .../java/com/iluwatar/builder/Profession.java | 3 +- .../java/com/iluwatar/builder/Weapon.java | 3 +- .../java/com/iluwatar/builder/AppTest.java | 3 +- .../java/com/iluwatar/builder/HeroTest.java | 3 +- .../com/iluwatar/business/delegate/App.java | 3 +- .../business/delegate/BusinessDelegate.java | 3 +- .../business/delegate/BusinessLookup.java | 3 +- .../business/delegate/BusinessService.java | 3 +- .../iluwatar/business/delegate/Client.java | 3 +- .../business/delegate/EjbService.java | 3 +- .../business/delegate/JmsService.java | 3 +- .../business/delegate/ServiceType.java | 3 +- .../iluwatar/business/delegate/AppTest.java | 3 +- .../delegate/BusinessDelegateTest.java | 3 +- .../main/java/com/iluwatar/bytecode/App.java | 3 +- .../com/iluwatar/bytecode/Instruction.java | 3 +- .../com/iluwatar/bytecode/VirtualMachine.java | 3 +- .../java/com/iluwatar/bytecode/Wizard.java | 3 +- .../util/InstructionConverterUtil.java | 3 +- .../java/com/iluwatar/bytecode/AppTest.java | 3 +- .../iluwatar/bytecode/VirtualMachineTest.java | 3 +- .../util/InstructionConverterUtilTest.java | 3 +- .../main/java/com/iluwatar/caching/App.java | 3 +- .../java/com/iluwatar/caching/AppManager.java | 3 +- .../java/com/iluwatar/caching/CacheStore.java | 3 +- .../com/iluwatar/caching/CachingPolicy.java | 3 +- .../java/com/iluwatar/caching/DbManager.java | 3 +- .../java/com/iluwatar/caching/LruCache.java | 3 +- .../com/iluwatar/caching/UserAccount.java | 3 +- .../caching/constants/CachingConstants.java | 3 +- .../java/com/iluwatar/caching/AppTest.java | 3 +- .../com/iluwatar/caching/CachingTest.java | 3 +- .../main/java/com/iluwatar/callback/App.java | 3 +- .../java/com/iluwatar/callback/Callback.java | 3 +- .../com/iluwatar/callback/LambdasApp.java | 3 +- .../com/iluwatar/callback/SimpleTask.java | 3 +- .../main/java/com/iluwatar/callback/Task.java | 3 +- .../java/com/iluwatar/callback/AppTest.java | 3 +- .../com/iluwatar/callback/CallbackTest.java | 3 +- .../src/main/java/com/iluwatar/chain/App.java | 3 +- .../java/com/iluwatar/chain/OrcCommander.java | 3 +- .../main/java/com/iluwatar/chain/OrcKing.java | 3 +- .../java/com/iluwatar/chain/OrcOfficer.java | 3 +- .../java/com/iluwatar/chain/OrcSoldier.java | 3 +- .../main/java/com/iluwatar/chain/Request.java | 3 +- .../com/iluwatar/chain/RequestHandler.java | 3 +- .../java/com/iluwatar/chain/RequestType.java | 3 +- .../test/java/com/iluwatar/chain/AppTest.java | 3 +- .../java/com/iluwatar/chain/OrcKingTest.java | 3 +- circuit-breaker/pom.xml | 2 +- .../java/com/iluwatar/circuitbreaker/App.java | 4 +- .../circuitbreaker/CircuitBreaker.java | 4 +- .../circuitbreaker/DelayedService.java | 5 ++- .../circuitbreaker/MonitoringService.java | 4 +- .../com/iluwatar/circuitbreaker/State.java | 4 +- .../circuitbreaker/CircuitBreakerTest.java | 4 +- .../circuitbreaker/DelayedServiceTest.java | 4 +- .../circuitbreaker/MonitoringServiceTest.java | 4 +- .../com/iluwatar/collectionpipeline/App.java | 3 +- .../com/iluwatar/collectionpipeline/Car.java | 3 +- .../collectionpipeline/CarFactory.java | 3 +- .../iluwatar/collectionpipeline/Category.java | 3 +- .../FunctionalProgramming.java | 3 +- .../ImperativeProgramming.java | 3 +- .../iluwatar/collectionpipeline/Person.java | 3 +- .../iluwatar/collectionpipeline/AppTest.java | 3 +- .../main/java/com/iluwatar/command/App.java | 3 +- .../java/com/iluwatar/command/Command.java | 3 +- .../java/com/iluwatar/command/Goblin.java | 3 +- .../iluwatar/command/InvisibilitySpell.java | 3 +- .../com/iluwatar/command/ShrinkSpell.java | 3 +- .../main/java/com/iluwatar/command/Size.java | 3 +- .../java/com/iluwatar/command/Target.java | 3 +- .../java/com/iluwatar/command/Visibility.java | 3 +- .../java/com/iluwatar/command/Wizard.java | 3 +- .../java/com/iluwatar/command/AppTest.java | 3 +- .../com/iluwatar/command/CommandTest.java | 3 +- .../commander/AppEmployeeDbFailCases.java | 3 +- .../commander/AppMessagingFailCases.java | 3 +- .../commander/AppPaymentFailCases.java | 3 +- .../iluwatar/commander/AppQueueFailCases.java | 3 +- .../commander/AppShippingFailCases.java | 3 +- .../com/iluwatar/commander/Commander.java | 3 +- .../java/com/iluwatar/commander/Database.java | 3 +- .../java/com/iluwatar/commander/Order.java | 3 +- .../java/com/iluwatar/commander/Retry.java | 3 +- .../java/com/iluwatar/commander/Service.java | 3 +- .../java/com/iluwatar/commander/User.java | 3 +- .../employeehandle/EmployeeDatabase.java | 3 +- .../employeehandle/EmployeeHandle.java | 3 +- .../DatabaseUnavailableException.java | 3 +- .../exceptions/IsEmptyException.java | 3 +- .../exceptions/ItemUnavailableException.java | 3 +- .../PaymentDetailsErrorException.java | 3 +- .../ShippingNotPossibleException.java | 3 +- .../messagingservice/MessagingDatabase.java | 3 +- .../messagingservice/MessagingService.java | 3 +- .../paymentservice/PaymentDatabase.java | 3 +- .../paymentservice/PaymentService.java | 3 +- .../com/iluwatar/commander/queue/Queue.java | 3 +- .../commander/queue/QueueDatabase.java | 3 +- .../iluwatar/commander/queue/QueueTask.java | 3 +- .../shippingservice/ShippingDatabase.java | 3 +- .../shippingservice/ShippingService.java | 3 +- .../com/iluwatar/commander/RetryTest.java | 3 +- .../main/java/com/iluwatar/composite/App.java | 3 +- .../java/com/iluwatar/composite/Letter.java | 3 +- .../iluwatar/composite/LetterComposite.java | 3 +- .../com/iluwatar/composite/Messenger.java | 3 +- .../java/com/iluwatar/composite/Sentence.java | 3 +- .../java/com/iluwatar/composite/Word.java | 3 +- .../java/com/iluwatar/composite/AppTest.java | 3 +- .../com/iluwatar/composite/MessengerTest.java | 3 +- .../main/java/com/iluwatar/converter/App.java | 3 +- .../com/iluwatar/converter/Converter.java | 3 +- .../java/com/iluwatar/converter/User.java | 3 +- .../com/iluwatar/converter/UserConverter.java | 3 +- .../java/com/iluwatar/converter/UserDto.java | 3 +- .../java/com/iluwatar/converter/AppTest.java | 3 +- .../com/iluwatar/converter/ConverterTest.java | 3 +- .../main/java/com/iluwatar/cqrs/app/App.java | 3 +- .../cqrs/commandes/CommandServiceImpl.java | 3 +- .../cqrs/commandes/ICommandService.java | 3 +- .../iluwatar/cqrs/constants/AppConstants.java | 3 +- .../iluwatar/cqrs/domain/model/Author.java | 3 +- .../com/iluwatar/cqrs/domain/model/Book.java | 3 +- .../java/com/iluwatar/cqrs/dto/Author.java | 3 +- .../main/java/com/iluwatar/cqrs/dto/Book.java | 3 +- .../iluwatar/cqrs/queries/IQueryService.java | 3 +- .../cqrs/queries/QueryServiceImpl.java | 3 +- .../com/iluwatar/cqrs/util/HibernateUtil.java | 3 +- .../com/iluwatar/cqrs/IntegrationTest.java | 3 +- dao/src/main/java/com/iluwatar/dao/App.java | 3 +- .../com/iluwatar/dao/CustomException.java | 3 +- .../main/java/com/iluwatar/dao/Customer.java | 3 +- .../java/com/iluwatar/dao/CustomerDao.java | 3 +- .../com/iluwatar/dao/CustomerSchemaSql.java | 3 +- .../java/com/iluwatar/dao/DbCustomerDao.java | 3 +- .../com/iluwatar/dao/InMemoryCustomerDao.java | 3 +- .../test/java/com/iluwatar/dao/AppTest.java | 3 +- .../java/com/iluwatar/dao/CustomerTest.java | 3 +- .../com/iluwatar/dao/DbCustomerDaoTest.java | 3 +- .../iluwatar/dao/InMemoryCustomerDaoTest.java | 3 +- .../iluwatar/databus/AbstractDataType.java | 3 +- .../main/java/com/iluwatar/databus/App.java | 3 +- .../java/com/iluwatar/databus/DataBus.java | 3 +- .../java/com/iluwatar/databus/DataType.java | 3 +- .../java/com/iluwatar/databus/Member.java | 3 +- .../iluwatar/databus/data/MessageData.java | 3 +- .../iluwatar/databus/data/StartingData.java | 3 +- .../iluwatar/databus/data/StoppingData.java | 3 +- .../members/MessageCollectorMember.java | 3 +- .../databus/members/StatusMember.java | 3 +- .../com/iluwatar/databus/DataBusTest.java | 3 +- .../members/MessageCollectorMemberTest.java | 3 +- .../databus/members/StatusMemberTest.java | 3 +- .../iluwatar/data/locality/Application.java | 3 +- .../data/locality/game/GameEntity.java | 3 +- .../locality/game/component/AiComponent.java | 3 +- .../locality/game/component/Component.java | 3 +- .../game/component/PhysicsComponent.java | 3 +- .../game/component/RenderComponent.java | 3 +- .../component/manager/AiComponentManager.java | 3 +- .../manager/PhysicsComponentManager.java | 3 +- .../manager/RenderComponentManager.java | 3 +- .../data/locality/ApplicationTest.java | 3 +- .../java/com/iluwatar/datamapper/App.java | 3 +- .../datamapper/DataMapperException.java | 3 +- .../java/com/iluwatar/datamapper/Student.java | 3 +- .../datamapper/StudentDataMapper.java | 3 +- .../datamapper/StudentDataMapperImpl.java | 3 +- .../java/com/iluwatar/datamapper/AppTest.java | 3 +- .../iluwatar/datamapper/DataMapperTest.java | 3 +- .../com/iluwatar/datamapper/StudentTest.java | 3 +- .../datatransfer/CustomerClientApp.java | 3 +- .../iluwatar/datatransfer/CustomerDto.java | 3 +- .../datatransfer/CustomerResource.java | 3 +- .../datatransfer/CustomerResourceTest.java | 3 +- .../main/java/com/iluwatar/decorator/App.java | 3 +- .../com/iluwatar/decorator/ClubbedTroll.java | 3 +- .../com/iluwatar/decorator/SimpleTroll.java | 3 +- .../java/com/iluwatar/decorator/Troll.java | 3 +- .../java/com/iluwatar/decorator/AppTest.java | 3 +- .../iluwatar/decorator/ClubbedTrollTest.java | 3 +- .../iluwatar/decorator/SimpleTrollTest.java | 3 +- .../com/iluwatar/delegation/simple/App.java | 3 +- .../iluwatar/delegation/simple/Printer.java | 3 +- .../delegation/simple/PrinterController.java | 3 +- .../simple/printers/CanonPrinter.java | 3 +- .../simple/printers/EpsonPrinter.java | 3 +- .../delegation/simple/printers/HpPrinter.java | 3 +- .../iluwatar/delegation/simple/AppTest.java | 3 +- .../delegation/simple/DelegateTest.java | 3 +- .../injection/AdvancedSorceress.java | 3 +- .../dependency/injection/AdvancedWizard.java | 3 +- .../iluwatar/dependency/injection/App.java | 3 +- .../dependency/injection/GuiceWizard.java | 3 +- .../dependency/injection/OldTobyTobacco.java | 3 +- .../injection/RivendellTobacco.java | 3 +- .../injection/SecondBreakfastTobacco.java | 3 +- .../dependency/injection/SimpleWizard.java | 3 +- .../dependency/injection/Tobacco.java | 3 +- .../dependency/injection/TobaccoModule.java | 3 +- .../iluwatar/dependency/injection/Wizard.java | 3 +- .../injection/AdvancedSorceressTest.java | 3 +- .../injection/AdvancedWizardTest.java | 3 +- .../dependency/injection/AppTest.java | 3 +- .../dependency/injection/GuiceWizardTest.java | 3 +- .../injection/SimpleWizardTest.java | 3 +- .../injection/utils/InMemoryAppender.java | 3 +- .../main/java/com/iluwatar/dirtyflag/App.java | 3 +- .../com/iluwatar/dirtyflag/DataFetcher.java | 3 +- .../java/com/iluwatar/dirtyflag/World.java | 3 +- .../src/test/java/org/dirty/flag/AppTest.java | 3 +- .../java/org/dirty/flag/DirtyFlagTest.java | 3 +- .../java/com/iluwatar/doublebuffer/App.java | 10 ++--- .../com/iluwatar/doublebuffer/Buffer.java | 10 ++--- .../iluwatar/doublebuffer/FrameBuffer.java | 10 ++--- .../java/com/iluwatar/doublebuffer/Pixel.java | 10 ++--- .../java/com/iluwatar/doublebuffer/Scene.java | 10 ++--- .../com/iluwatar/doublebuffer/AppTest.java | 10 ++--- .../doublebuffer/FrameBufferTest.java | 10 ++--- .../com/iluwatar/doublebuffer/SceneTest.java | 10 ++--- .../iluwatar/doublechecked/locking/App.java | 3 +- .../doublechecked/locking/Inventory.java | 3 +- .../iluwatar/doublechecked/locking/Item.java | 3 +- .../doublechecked/locking/AppTest.java | 3 +- .../doublechecked/locking/InventoryTest.java | 3 +- .../java/com/iluwatar/doubledispatch/App.java | 3 +- .../doubledispatch/FlamingAsteroid.java | 3 +- .../iluwatar/doubledispatch/GameObject.java | 3 +- .../iluwatar/doubledispatch/Meteoroid.java | 3 +- .../iluwatar/doubledispatch/Rectangle.java | 3 +- .../doubledispatch/SpaceStationIss.java | 3 +- .../doubledispatch/SpaceStationMir.java | 3 +- .../constants/AppConstants.java | 3 +- .../com/iluwatar/doubledispatch/AppTest.java | 3 +- .../doubledispatch/CollisionTest.java | 3 +- .../doubledispatch/FlamingAsteroidTest.java | 3 +- .../doubledispatch/MeteoroidTest.java | 3 +- .../doubledispatch/RectangleTest.java | 3 +- .../doubledispatch/SpaceStationIssTest.java | 3 +- .../doubledispatch/SpaceStationMirTest.java | 3 +- .../java/com/iluwatar/eip/aggregator/App.java | 3 +- .../aggregator/routes/AggregatorRoute.java | 3 +- .../routes/MessageAggregationStrategy.java | 3 +- .../com/iluwatar/eip/aggregator/AppTest.java | 3 +- .../routes/AggregatorRouteTest.java | 3 +- .../MessageAggregationStrategyTest.java | 3 +- .../com/iluwatar/eip/message/channel/App.java | 3 +- .../iluwatar/eip/message/channel/AppTest.java | 3 +- .../iluwatar/eip/publish/subscribe/App.java | 3 +- .../eip/publish/subscribe/AppTest.java | 3 +- .../java/com/iluwatar/eip/splitter/App.java | 3 +- .../eip/splitter/routes/SplitterRoute.java | 3 +- .../com/iluwatar/eip/splitter/AppTest.java | 3 +- .../splitter/routes/SplitterRouteTest.java | 3 +- .../java/com/iluwatar/eip/wiretap/App.java | 3 +- .../eip/wiretap/routes/WireTapRoute.java | 3 +- .../com/iluwatar/eip/wiretap/AppTest.java | 3 +- .../eip/wiretap/routes/WireTapRouteTest.java | 3 +- .../com/iluwatar/event/aggregator/App.java | 3 +- .../com/iluwatar/event/aggregator/Event.java | 3 +- .../event/aggregator/EventEmitter.java | 3 +- .../event/aggregator/EventObserver.java | 3 +- .../event/aggregator/KingJoffrey.java | 3 +- .../iluwatar/event/aggregator/KingsHand.java | 3 +- .../event/aggregator/LordBaelish.java | 3 +- .../iluwatar/event/aggregator/LordVarys.java | 3 +- .../com/iluwatar/event/aggregator/Scout.java | 3 +- .../iluwatar/event/aggregator/Weekday.java | 3 +- .../iluwatar/event/aggregator/AppTest.java | 3 +- .../event/aggregator/EventEmitterTest.java | 3 +- .../iluwatar/event/aggregator/EventTest.java | 3 +- .../event/aggregator/KingJoffreyTest.java | 3 +- .../event/aggregator/KingsHandTest.java | 3 +- .../event/aggregator/LordBaelishTest.java | 3 +- .../event/aggregator/LordVarysTest.java | 3 +- .../iluwatar/event/aggregator/ScoutTest.java | 3 +- .../event/aggregator/WeekdayTest.java | 3 +- .../com/iluwatar/event/asynchronous/App.java | 3 +- .../iluwatar/event/asynchronous/Event.java | 3 +- .../EventDoesNotExistException.java | 3 +- .../event/asynchronous/EventManager.java | 3 +- .../iluwatar/event/asynchronous/IEvent.java | 3 +- .../InvalidOperationException.java | 3 +- .../LongRunningEventException.java | 3 +- .../MaxNumOfEventsAllowedException.java | 3 +- .../asynchronous/ThreadCompleteListener.java | 3 +- .../iluwatar/event/asynchronous/AppTest.java | 3 +- .../asynchronous/EventAsynchronousTest.java | 3 +- .../src/main/java/com/iluwatar/eda/App.java | 3 +- .../com/iluwatar/eda/event/AbstractEvent.java | 3 +- .../iluwatar/eda/event/UserCreatedEvent.java | 3 +- .../iluwatar/eda/event/UserUpdatedEvent.java | 3 +- .../com/iluwatar/eda/framework/Event.java | 3 +- .../eda/framework/EventDispatcher.java | 3 +- .../com/iluwatar/eda/framework/Handler.java | 3 +- .../eda/handler/UserCreatedEventHandler.java | 3 +- .../eda/handler/UserUpdatedEventHandler.java | 3 +- .../java/com/iluwatar/eda/model/User.java | 3 +- .../test/java/com/iluwatar/eda/AppTest.java | 3 +- .../eda/event/UserCreatedEventTest.java | 3 +- .../eda/framework/EventDispatcherTest.java | 3 +- .../java/com/iluwatar/event/queue/App.java | 3 +- .../java/com/iluwatar/event/queue/Audio.java | 3 +- .../com/iluwatar/event/queue/PlayMessage.java | 3 +- .../com/iluwatar/event/queue/AudioTest.java | 3 +- .../com/iluwatar/event/sourcing/app/App.java | 3 +- .../event/sourcing/domain/Account.java | 3 +- .../sourcing/event/AccountCreateEvent.java | 3 +- .../event/sourcing/event/DomainEvent.java | 3 +- .../sourcing/event/MoneyDepositEvent.java | 3 +- .../sourcing/event/MoneyTransferEvent.java | 3 +- .../processor/DomainEventProcessor.java | 3 +- .../sourcing/processor/JsonFileJournal.java | 3 +- .../sourcing/state/AccountAggregate.java | 3 +- .../src/test/java/IntegrationTest.java | 3 +- .../java/com/iluwatar/execute/around/App.java | 3 +- .../execute/around/FileWriterAction.java | 3 +- .../execute/around/SimpleFileWriter.java | 3 +- .../com/iluwatar/execute/around/AppTest.java | 3 +- .../execute/around/SimpleFileWriterTest.java | 3 +- extension-objects/src/main/java/App.java | 3 +- .../CommanderExtension.java | 3 +- .../abstractextensions/SergeantExtension.java | 3 +- .../abstractextensions/SoldierExtension.java | 3 +- .../abstractextensions/UnitExtension.java | 3 +- .../java/concreteextensions/Commander.java | 3 +- .../java/concreteextensions/Sergeant.java | 3 +- .../main/java/concreteextensions/Soldier.java | 3 +- .../src/main/java/units/CommanderUnit.java | 3 +- .../src/main/java/units/SergeantUnit.java | 3 +- .../src/main/java/units/SoldierUnit.java | 3 +- .../src/main/java/units/Unit.java | 3 +- extension-objects/src/test/java/AppTest.java | 3 +- .../concreteextensions/CommanderTest.java | 3 +- .../java/concreteextensions/SergeantTest.java | 3 +- .../java/concreteextensions/SoldierTest.java | 3 +- .../test/java/units/CommanderUnitTest.java | 3 +- .../src/test/java/units/SergeantUnitTest.java | 3 +- .../src/test/java/units/SoldierUnitTest.java | 3 +- .../src/test/java/units/UnitTest.java | 3 +- .../main/java/com/iluwatar/facade/App.java | 3 +- .../iluwatar/facade/DwarvenCartOperator.java | 3 +- .../iluwatar/facade/DwarvenGoldDigger.java | 3 +- .../facade/DwarvenGoldmineFacade.java | 3 +- .../iluwatar/facade/DwarvenMineWorker.java | 3 +- .../iluwatar/facade/DwarvenTunnelDigger.java | 3 +- .../java/com/iluwatar/facade/AppTest.java | 3 +- .../facade/DwarvenGoldmineFacadeTest.java | 3 +- .../java/com/iluwatar/factorykit/App.java | 3 +- .../java/com/iluwatar/factorykit/Axe.java | 3 +- .../java/com/iluwatar/factorykit/Bow.java | 3 +- .../java/com/iluwatar/factorykit/Builder.java | 3 +- .../java/com/iluwatar/factorykit/Spear.java | 3 +- .../java/com/iluwatar/factorykit/Sword.java | 3 +- .../java/com/iluwatar/factorykit/Weapon.java | 3 +- .../iluwatar/factorykit/WeaponFactory.java | 3 +- .../com/iluwatar/factorykit/WeaponType.java | 3 +- .../com/iluwatar/factorykit/app/AppTest.java | 3 +- .../factorykit/factorykit/FactoryKitTest.java | 3 +- .../java/com/iluwatar/factory/method/App.java | 3 +- .../iluwatar/factory/method/Blacksmith.java | 3 +- .../factory/method/ElfBlacksmith.java | 3 +- .../iluwatar/factory/method/ElfWeapon.java | 3 +- .../factory/method/OrcBlacksmith.java | 3 +- .../iluwatar/factory/method/OrcWeapon.java | 3 +- .../com/iluwatar/factory/method/Weapon.java | 3 +- .../iluwatar/factory/method/WeaponType.java | 3 +- .../com/iluwatar/factory/method/AppTest.java | 3 +- .../factory/method/FactoryMethodTest.java | 3 +- .../java/com/iluwatar/featuretoggle/App.java | 3 +- .../featuretoggle/pattern/Service.java | 3 +- .../PropertiesFeatureToggleVersion.java | 3 +- .../TieredFeatureToggleVersion.java | 3 +- .../com/iluwatar/featuretoggle/user/User.java | 3 +- .../featuretoggle/user/UserGroup.java | 3 +- .../PropertiesFeatureToggleVersionTest.java | 3 +- .../TieredFeatureToggleVersionTest.java | 3 +- .../featuretoggle/user/UserGroupTest.java | 3 +- .../com/iluwatar/fluentinterface/app/App.java | 3 +- .../fluentiterable/FluentIterable.java | 3 +- .../lazy/DecoratingIterator.java | 3 +- .../lazy/LazyFluentIterable.java | 3 +- .../simple/SimpleFluentIterable.java | 3 +- .../iluwatar/fluentinterface/app/AppTest.java | 3 +- .../fluentiterable/FluentIterableTest.java | 3 +- .../lazy/LazyFluentIterableTest.java | 3 +- .../simple/SimpleFluentIterableTest.java | 3 +- .../java/com/iluwatar/flux/action/Action.java | 3 +- .../com/iluwatar/flux/action/ActionType.java | 3 +- .../com/iluwatar/flux/action/Content.java | 3 +- .../iluwatar/flux/action/ContentAction.java | 3 +- .../com/iluwatar/flux/action/MenuAction.java | 3 +- .../com/iluwatar/flux/action/MenuItem.java | 3 +- .../main/java/com/iluwatar/flux/app/App.java | 3 +- .../iluwatar/flux/dispatcher/Dispatcher.java | 3 +- .../com/iluwatar/flux/store/ContentStore.java | 3 +- .../com/iluwatar/flux/store/MenuStore.java | 3 +- .../java/com/iluwatar/flux/store/Store.java | 3 +- .../com/iluwatar/flux/view/ContentView.java | 3 +- .../java/com/iluwatar/flux/view/MenuView.java | 3 +- .../java/com/iluwatar/flux/view/View.java | 3 +- .../com/iluwatar/flux/action/ContentTest.java | 3 +- .../iluwatar/flux/action/MenuItemTest.java | 3 +- .../java/com/iluwatar/flux/app/AppTest.java | 3 +- .../flux/dispatcher/DispatcherTest.java | 3 +- .../iluwatar/flux/store/ContentStoreTest.java | 3 +- .../iluwatar/flux/store/MenuStoreTest.java | 3 +- .../iluwatar/flux/view/ContentViewTest.java | 3 +- .../com/iluwatar/flux/view/MenuViewTest.java | 3 +- .../com/iluwatar/flyweight/AlchemistShop.java | 3 +- .../main/java/com/iluwatar/flyweight/App.java | 3 +- .../com/iluwatar/flyweight/HealingPotion.java | 3 +- .../iluwatar/flyweight/HolyWaterPotion.java | 3 +- .../flyweight/InvisibilityPotion.java | 3 +- .../com/iluwatar/flyweight/PoisonPotion.java | 3 +- .../java/com/iluwatar/flyweight/Potion.java | 3 +- .../com/iluwatar/flyweight/PotionFactory.java | 3 +- .../com/iluwatar/flyweight/PotionType.java | 3 +- .../iluwatar/flyweight/StrengthPotion.java | 3 +- .../iluwatar/flyweight/AlchemistShopTest.java | 3 +- .../java/com/iluwatar/flyweight/AppTest.java | 3 +- .../com/iluwatar/front/controller/App.java | 3 +- .../controller/ApplicationException.java | 3 +- .../front/controller/ArcherCommand.java | 3 +- .../iluwatar/front/controller/ArcherView.java | 3 +- .../front/controller/CatapultCommand.java | 3 +- .../front/controller/CatapultView.java | 3 +- .../iluwatar/front/controller/Command.java | 3 +- .../iluwatar/front/controller/ErrorView.java | 3 +- .../front/controller/FrontController.java | 3 +- .../front/controller/UnknownCommand.java | 3 +- .../com/iluwatar/front/controller/View.java | 3 +- .../iluwatar/front/controller/AppTest.java | 3 +- .../controller/ApplicationExceptionTest.java | 3 +- .../front/controller/CommandTest.java | 3 +- .../front/controller/FrontControllerTest.java | 3 +- .../iluwatar/front/controller/ViewTest.java | 3 +- .../controller/utils/InMemoryAppender.java | 3 +- .../com/iluwatar/guarded/suspension/App.java | 3 +- .../guarded/suspension/GuardedQueue.java | 3 +- .../guarded/suspension/GuardedQueueTest.java | 3 +- .../com/iluwatar/halfsynchalfasync/App.java | 3 +- .../iluwatar/halfsynchalfasync/AsyncTask.java | 3 +- .../AsynchronousService.java | 3 +- .../iluwatar/halfsynchalfasync/AppTest.java | 3 +- .../AsynchronousServiceTest.java | 3 +- .../main/java/com/iluwatar/hexagonal/App.java | 3 +- .../administration/ConsoleAdministration.java | 3 +- .../ConsoleAdministrationSrv.java | 3 +- .../ConsoleAdministrationSrvImpl.java | 3 +- .../hexagonal/banking/InMemoryBank.java | 3 +- .../iluwatar/hexagonal/banking/MongoBank.java | 3 +- .../hexagonal/banking/WireTransfers.java | 3 +- .../database/InMemoryTicketRepository.java | 3 +- .../database/LotteryTicketRepository.java | 3 +- .../database/MongoTicketRepository.java | 3 +- .../domain/LotteryAdministration.java | 3 +- .../hexagonal/domain/LotteryConstants.java | 3 +- .../hexagonal/domain/LotteryNumbers.java | 3 +- .../hexagonal/domain/LotteryService.java | 3 +- .../hexagonal/domain/LotteryTicket.java | 3 +- .../domain/LotteryTicketCheckResult.java | 3 +- .../hexagonal/domain/LotteryTicketId.java | 3 +- .../hexagonal/domain/LotteryUtils.java | 3 +- .../hexagonal/domain/PlayerDetails.java | 3 +- .../hexagonal/eventlog/LotteryEventLog.java | 3 +- .../hexagonal/eventlog/MongoEventLog.java | 3 +- .../hexagonal/eventlog/StdOutEventLog.java | 3 +- .../hexagonal/module/LotteryModule.java | 3 +- .../module/LotteryTestingModule.java | 3 +- .../MongoConnectionPropertiesLoader.java | 3 +- .../hexagonal/sampledata/SampleData.java | 3 +- .../hexagonal/service/ConsoleLottery.java | 3 +- .../service/LotteryConsoleService.java | 3 +- .../service/LotteryConsoleServiceImpl.java | 3 +- .../java/com/iluwatar/hexagonal/AppTest.java | 3 +- .../hexagonal/banking/InMemoryBankTest.java | 3 +- .../hexagonal/banking/MongoBankTest.java | 3 +- .../InMemoryTicketRepositoryTest.java | 3 +- .../database/MongoTicketRepositoryTest.java | 3 +- .../hexagonal/domain/LotteryNumbersTest.java | 3 +- .../hexagonal/domain/LotteryTest.java | 3 +- .../domain/LotteryTicketCheckResultTest.java | 3 +- .../hexagonal/domain/LotteryTicketIdTest.java | 3 +- .../hexagonal/domain/LotteryTicketTest.java | 3 +- .../hexagonal/domain/PlayerDetailsTest.java | 3 +- .../hexagonal/eventlog/MongoEventLogTest.java | 3 +- .../hexagonal/test/LotteryTestUtils.java | 3 +- .../intercepting/filter/AbstractFilter.java | 3 +- .../intercepting/filter/AddressFilter.java | 3 +- .../com/iluwatar/intercepting/filter/App.java | 3 +- .../iluwatar/intercepting/filter/Client.java | 3 +- .../intercepting/filter/ContactFilter.java | 3 +- .../intercepting/filter/DepositFilter.java | 3 +- .../iluwatar/intercepting/filter/Filter.java | 3 +- .../intercepting/filter/FilterChain.java | 3 +- .../intercepting/filter/FilterManager.java | 3 +- .../intercepting/filter/NameFilter.java | 3 +- .../iluwatar/intercepting/filter/Order.java | 3 +- .../intercepting/filter/OrderFilter.java | 3 +- .../iluwatar/intercepting/filter/Target.java | 3 +- .../iluwatar/intercepting/filter/AppTest.java | 3 +- .../filter/FilterManagerTest.java | 3 +- .../intercepting/filter/FilterTest.java | 3 +- .../intercepting/filter/OrderTest.java | 3 +- .../java/com/iluwatar/interpreter/App.java | 3 +- .../com/iluwatar/interpreter/Expression.java | 3 +- .../iluwatar/interpreter/MinusExpression.java | 3 +- .../interpreter/MultiplyExpression.java | 3 +- .../interpreter/NumberExpression.java | 3 +- .../iluwatar/interpreter/PlusExpression.java | 3 +- .../com/iluwatar/interpreter/AppTest.java | 3 +- .../iluwatar/interpreter/ExpressionTest.java | 3 +- .../interpreter/MinusExpressionTest.java | 3 +- .../interpreter/MultiplyExpressionTest.java | 3 +- .../interpreter/NumberExpressionTest.java | 3 +- .../interpreter/PlusExpressionTest.java | 3 +- .../main/java/com/iluwatar/iterator/App.java | 3 +- .../java/com/iluwatar/iterator/Iterator.java | 3 +- .../iluwatar/iterator/bst/BstIterator.java | 3 +- .../com/iluwatar/iterator/bst/TreeNode.java | 3 +- .../java/com/iluwatar/iterator/list/Item.java | 3 +- .../com/iluwatar/iterator/list/ItemType.java | 3 +- .../iluwatar/iterator/list/TreasureChest.java | 3 +- .../list/TreasureChestItemIterator.java | 3 +- .../java/com/iluwatar/iterator/AppTest.java | 3 +- .../iterator/bst/BstIteratorTest.java | 3 +- .../iterator/list/TreasureChestTest.java | 3 +- .../main/java/com/iluwatar/layers/App.java | 3 +- .../main/java/com/iluwatar/layers/Cake.java | 3 +- .../iluwatar/layers/CakeBakingException.java | 3 +- .../iluwatar/layers/CakeBakingService.java | 3 +- .../layers/CakeBakingServiceImpl.java | 3 +- .../java/com/iluwatar/layers/CakeDao.java | 3 +- .../java/com/iluwatar/layers/CakeInfo.java | 3 +- .../java/com/iluwatar/layers/CakeLayer.java | 3 +- .../com/iluwatar/layers/CakeLayerDao.java | 3 +- .../com/iluwatar/layers/CakeLayerInfo.java | 3 +- .../java/com/iluwatar/layers/CakeTopping.java | 3 +- .../com/iluwatar/layers/CakeToppingDao.java | 3 +- .../com/iluwatar/layers/CakeToppingInfo.java | 3 +- .../com/iluwatar/layers/CakeViewImpl.java | 3 +- .../main/java/com/iluwatar/layers/View.java | 3 +- .../java/com/iluwatar/layers/AppTest.java | 3 +- .../layers/CakeBakingExceptionTest.java | 3 +- .../layers/CakeBakingServiceImplTest.java | 3 +- .../java/com/iluwatar/layers/CakeTest.java | 3 +- .../com/iluwatar/layers/CakeViewImplTest.java | 3 +- .../java/com/iluwatar/lazy/loading/App.java | 3 +- .../java/com/iluwatar/lazy/loading/Heavy.java | 3 +- .../iluwatar/lazy/loading/HolderNaive.java | 3 +- .../lazy/loading/HolderThreadSafe.java | 3 +- .../iluwatar/lazy/loading/Java8Holder.java | 3 +- .../lazy/loading/AbstractHolderTest.java | 3 +- .../com/iluwatar/lazy/loading/AppTest.java | 3 +- .../lazy/loading/HolderNaiveTest.java | 3 +- .../lazy/loading/HolderThreadSafeTest.java | 3 +- .../lazy/loading/Java8HolderTest.java | 3 +- .../leaderelection/AbstractInstance.java | 3 +- .../AbstractMessageManager.java | 3 +- .../com/iluwatar/leaderelection/Instance.java | 3 +- .../com/iluwatar/leaderelection/Message.java | 3 +- .../leaderelection/MessageManager.java | 3 +- .../iluwatar/leaderelection/MessageType.java | 3 +- .../leaderelection/bully/BullyApp.java | 3 +- .../leaderelection/bully/BullyInstance.java | 3 +- .../bully/BullyMessageManager.java | 3 +- .../iluwatar/leaderelection/ring/RingApp.java | 3 +- .../leaderelection/ring/RingInstance.java | 3 +- .../ring/RingMessageManager.java | 3 +- .../iluwatar/leaderelection/MessageTest.java | 3 +- .../leaderelection/bully/BullyAppTest.java | 3 +- .../bully/BullyMessageManagerTest.java | 3 +- .../bully/BullyinstanceTest.java | 3 +- .../leaderelection/ring/RingAppTest.java | 3 +- .../leaderelection/ring/RingInstanceTest.java | 3 +- .../ring/RingMessageManagerTest.java | 3 +- license-plugin-header-style.xml | 41 +++++++++++++++++++ marker/src/main/java/App.java | 3 +- marker/src/main/java/Guard.java | 3 +- marker/src/main/java/Permission.java | 3 +- marker/src/main/java/Thief.java | 3 +- marker/src/test/java/AppTest.java | 3 +- marker/src/test/java/GuardTest.java | 3 +- marker/src/test/java/ThiefTest.java | 3 +- .../java/com/iluwatar/masterworker/App.java | 3 +- .../com/iluwatar/masterworker/ArrayInput.java | 3 +- .../iluwatar/masterworker/ArrayResult.java | 3 +- .../masterworker/ArrayUtilityMethods.java | 3 +- .../java/com/iluwatar/masterworker/Input.java | 3 +- .../com/iluwatar/masterworker/Result.java | 3 +- .../system/ArrayTransposeMasterWorker.java | 3 +- .../masterworker/system/MasterWorker.java | 3 +- .../systemmaster/ArrayTransposeMaster.java | 3 +- .../system/systemmaster/Master.java | 3 +- .../systemworkers/ArrayTransposeWorker.java | 3 +- .../system/systemworkers/Worker.java | 3 +- .../iluwatar/masterworker/ArrayInputTest.java | 3 +- .../masterworker/ArrayUtilityMethodsTest.java | 3 +- .../ArrayTransposeMasterWorkerTest.java | 3 +- .../ArrayTransposeWorkerTest.java | 3 +- .../java/com/iluwatar/mediator/Action.java | 3 +- .../main/java/com/iluwatar/mediator/App.java | 3 +- .../java/com/iluwatar/mediator/Hobbit.java | 3 +- .../java/com/iluwatar/mediator/Hunter.java | 3 +- .../java/com/iluwatar/mediator/Party.java | 3 +- .../java/com/iluwatar/mediator/PartyImpl.java | 3 +- .../com/iluwatar/mediator/PartyMember.java | 3 +- .../iluwatar/mediator/PartyMemberBase.java | 3 +- .../java/com/iluwatar/mediator/Rogue.java | 3 +- .../java/com/iluwatar/mediator/Wizard.java | 3 +- .../java/com/iluwatar/mediator/AppTest.java | 3 +- .../com/iluwatar/mediator/PartyImplTest.java | 3 +- .../iluwatar/mediator/PartyMemberTest.java | 3 +- .../main/java/com/iluwatar/memento/App.java | 3 +- .../main/java/com/iluwatar/memento/Star.java | 3 +- .../com/iluwatar/memento/StarMemento.java | 3 +- .../java/com/iluwatar/memento/StarType.java | 3 +- .../java/com/iluwatar/memento/AppTest.java | 3 +- .../java/com/iluwatar/memento/StarTest.java | 3 +- .../iluwatar/model/view/controller/App.java | 3 +- .../model/view/controller/Fatigue.java | 3 +- .../view/controller/GiantController.java | 3 +- .../model/view/controller/GiantModel.java | 3 +- .../model/view/controller/GiantView.java | 3 +- .../model/view/controller/Health.java | 3 +- .../model/view/controller/Nourishment.java | 3 +- .../model/view/controller/AppTest.java | 3 +- .../view/controller/GiantControllerTest.java | 3 +- .../model/view/controller/GiantModelTest.java | 3 +- .../model/view/controller/GiantViewTest.java | 3 +- .../iluwatar/model/view/presenter/App.java | 3 +- .../model/view/presenter/FileLoader.java | 3 +- .../view/presenter/FileSelectorJFrame.java | 3 +- .../view/presenter/FileSelectorPresenter.java | 3 +- .../view/presenter/FileSelectorStub.java | 3 +- .../view/presenter/FileSelectorView.java | 3 +- .../model/view/presenter/AppTest.java | 3 +- .../model/view/presenter/FileLoaderTest.java | 3 +- .../presenter/FileSelectorPresenterTest.java | 3 +- .../main/java/com/iluwatar/module/App.java | 3 +- .../iluwatar/module/ConsoleLoggerModule.java | 3 +- .../com/iluwatar/module/FileLoggerModule.java | 3 +- .../java/com/iluwatar/module/AppTest.java | 3 +- .../iluwatar/module/FileLoggerModuleTest.java | 3 +- .../src/main/java/com/iluwatar/monad/App.java | 3 +- .../src/main/java/com/iluwatar/monad/Sex.java | 3 +- .../main/java/com/iluwatar/monad/User.java | 3 +- .../java/com/iluwatar/monad/Validator.java | 3 +- .../test/java/com/iluwatar/monad/AppTest.java | 3 +- .../java/com/iluwatar/monad/MonadTest.java | 3 +- .../main/java/com/iluwatar/monostate/App.java | 3 +- .../com/iluwatar/monostate/LoadBalancer.java | 3 +- .../java/com/iluwatar/monostate/Request.java | 3 +- .../java/com/iluwatar/monostate/Server.java | 3 +- .../java/com/iluwatar/monostate/AppTest.java | 3 +- .../iluwatar/monostate/LoadBalancerTest.java | 3 +- .../main/java/com/iluwatar/multiton/App.java | 3 +- .../java/com/iluwatar/multiton/Nazgul.java | 3 +- .../com/iluwatar/multiton/NazgulEnum.java | 3 +- .../com/iluwatar/multiton/NazgulName.java | 3 +- .../java/com/iluwatar/multiton/AppTest.java | 3 +- .../com/iluwatar/multiton/NazgulEnumTest.java | 3 +- .../com/iluwatar/multiton/NazgulTest.java | 3 +- .../src/main/java/com/iluwatar/mute/App.java | 3 +- .../com/iluwatar/mute/CheckedRunnable.java | 3 +- .../src/main/java/com/iluwatar/mute/Mute.java | 3 +- .../main/java/com/iluwatar/mute/Resource.java | 3 +- .../test/java/com/iluwatar/mute/AppTest.java | 3 +- .../test/java/com/iluwatar/mute/MuteTest.java | 3 +- .../src/main/java/com/iluwatar/mutex/App.java | 3 +- .../src/main/java/com/iluwatar/mutex/Jar.java | 3 +- .../main/java/com/iluwatar/mutex/Lock.java | 3 +- .../main/java/com/iluwatar/mutex/Mutex.java | 3 +- .../main/java/com/iluwatar/mutex/Thief.java | 3 +- .../test/java/com/iluwatar/mutex/AppTest.java | 3 +- .../test/java/com/iluwatar/mutex/JarTest.java | 3 +- .../java/com/iluwatar/mutex/MutexTest.java | 3 +- .../dom/app/homepage/HomePageService.java | 3 +- .../dom/app/homepage/HomePageViewModel.java | 3 +- .../dom/modules/simple/SimpleObject.java | 3 +- .../dom/modules/simple/SimpleObjects.java | 3 +- .../dom/modules/simple/SimpleObjectTest.java | 3 +- .../dom/modules/simple/SimpleObjectsTest.java | 3 +- .../fixture/DomainAppFixturesProvider.java | 3 +- .../modules/simple/SimpleObjectCreate.java | 3 +- .../modules/simple/SimpleObjectsTearDown.java | 3 +- .../scenarios/RecreateSimpleObjects.java | 3 +- .../bootstrap/SimpleAppSystemInitializer.java | 3 +- .../specglue/BootstrappingGlue.java | 3 +- .../specglue/CatalogOfFixturesGlue.java | 3 +- .../modules/simple/SimpleObjectGlue.java | 3 +- .../domainapp/integtests/specs/RunSpecs.java | 3 +- .../integtests/tests/SimpleAppIntegTest.java | 3 +- .../modules/simple/SimpleObjectIntegTest.java | 3 +- .../simple/SimpleObjectsIntegTest.java | 3 +- .../domainapp/webapp/SimpleApplication.java | 3 +- .../java/com/iluwatar/nullobject/App.java | 3 +- .../java/com/iluwatar/nullobject/Node.java | 3 +- .../com/iluwatar/nullobject/NodeImpl.java | 3 +- .../com/iluwatar/nullobject/NullNode.java | 3 +- .../java/com/iluwatar/nullobject/AppTest.java | 3 +- .../com/iluwatar/nullobject/NullNodeTest.java | 3 +- .../com/iluwatar/nullobject/TreeTest.java | 3 +- .../java/com/iluwatar/objectmother/King.java | 3 +- .../java/com/iluwatar/objectmother/Queen.java | 3 +- .../com/iluwatar/objectmother/Royalty.java | 3 +- .../objectmother/RoyaltyObjectMother.java | 3 +- .../test/RoyaltyObjectMotherTest.java | 3 +- .../java/com/iluwatar/object/pool/App.java | 3 +- .../com/iluwatar/object/pool/ObjectPool.java | 3 +- .../com/iluwatar/object/pool/Oliphaunt.java | 3 +- .../iluwatar/object/pool/OliphauntPool.java | 3 +- .../com/iluwatar/object/pool/AppTest.java | 3 +- .../object/pool/OliphauntPoolTest.java | 3 +- .../main/java/com/iluwatar/observer/App.java | 3 +- .../java/com/iluwatar/observer/Hobbits.java | 3 +- .../main/java/com/iluwatar/observer/Orcs.java | 3 +- .../java/com/iluwatar/observer/Weather.java | 3 +- .../iluwatar/observer/WeatherObserver.java | 3 +- .../com/iluwatar/observer/WeatherType.java | 3 +- .../iluwatar/observer/generic/GHobbits.java | 3 +- .../com/iluwatar/observer/generic/GOrcs.java | 3 +- .../iluwatar/observer/generic/GWeather.java | 3 +- .../iluwatar/observer/generic/Observable.java | 3 +- .../iluwatar/observer/generic/Observer.java | 3 +- .../com/iluwatar/observer/generic/Race.java | 3 +- .../java/com/iluwatar/observer/AppTest.java | 3 +- .../com/iluwatar/observer/HobbitsTest.java | 3 +- .../java/com/iluwatar/observer/OrcsTest.java | 3 +- .../observer/WeatherObserverTest.java | 3 +- .../com/iluwatar/observer/WeatherTest.java | 3 +- .../observer/generic/GHobbitsTest.java | 3 +- .../observer/generic/GWeatherTest.java | 3 +- .../observer/generic/ObserverTest.java | 3 +- .../iluwatar/observer/generic/OrcsTest.java | 3 +- .../observer/utils/InMemoryAppender.java | 3 +- .../java/com/iluwatar/pageobject/App.java | 3 +- .../java/com/iluwatar/pageobject/App.java | 3 +- .../pageobject/AlbumListPageTest.java | 3 +- .../iluwatar/pageobject/AlbumPageTest.java | 3 +- .../iluwatar/pageobject/LoginPageTest.java | 3 +- .../pageobject/pages/AlbumListPage.java | 3 +- .../iluwatar/pageobject/pages/AlbumPage.java | 3 +- .../iluwatar/pageobject/pages/LoginPage.java | 3 +- .../com/iluwatar/pageobject/pages/Page.java | 3 +- .../iluwatar/pageobject/AlbumListPage.java | 3 +- .../com/iluwatar/pageobject/AlbumPage.java | 3 +- .../com/iluwatar/pageobject/LoginPage.java | 3 +- .../java/com/iluwatar/pageobject/Page.java | 3 +- .../pageobject/AlbumListPageTest.java | 3 +- .../iluwatar/pageobject/AlbumPageTest.java | 3 +- .../iluwatar/pageobject/LoginPageTest.java | 3 +- .../com/iluwatar/partialresponse/App.java | 3 +- .../partialresponse/FieldJsonMapper.java | 3 +- .../com/iluwatar/partialresponse/Video.java | 3 +- .../partialresponse/VideoResource.java | 3 +- .../com/iluwatar/partialresponse/AppTest.java | 3 +- .../partialresponse/FieldJsonMapperTest.java | 3 +- .../partialresponse/VideoResourceTest.java | 3 +- .../main/java/com/iluwatar/pipeline/App.java | 3 +- .../pipeline/ConvertToCharArrayHandler.java | 3 +- .../java/com/iluwatar/pipeline/Handler.java | 3 +- .../java/com/iluwatar/pipeline/Pipeline.java | 3 +- .../pipeline/RemoveAlphabetsHandler.java | 3 +- .../pipeline/RemoveDigitsHandler.java | 3 +- .../java/com/iluwatar/pipeline/AppTest.java | 3 +- .../com/iluwatar/pipeline/PipelineTest.java | 3 +- .../java/com/iluwatar/poison/pill/App.java | 3 +- .../com/iluwatar/poison/pill/Consumer.java | 3 +- .../com/iluwatar/poison/pill/Message.java | 3 +- .../iluwatar/poison/pill/MessageQueue.java | 3 +- .../iluwatar/poison/pill/MqPublishPoint.java | 3 +- .../poison/pill/MqSubscribePoint.java | 3 +- .../com/iluwatar/poison/pill/Producer.java | 3 +- .../iluwatar/poison/pill/SimpleMessage.java | 3 +- .../poison/pill/SimpleMessageQueue.java | 3 +- .../com/iluwatar/poison/pill/AppTest.java | 3 +- .../iluwatar/poison/pill/ConsumerTest.java | 3 +- .../poison/pill/PoisonMessageTest.java | 3 +- .../iluwatar/poison/pill/ProducerTest.java | 3 +- .../poison/pill/SimpleMessageTest.java | 3 +- pom.xml | 6 +++ .../iluwatar/priority/queue/Application.java | 3 +- .../com/iluwatar/priority/queue/Message.java | 3 +- .../priority/queue/PriorityMessageQueue.java | 3 +- .../iluwatar/priority/queue/QueueManager.java | 3 +- .../com/iluwatar/priority/queue/Worker.java | 3 +- .../queue/PriorityMessageQueueTest.java | 3 +- .../priority/queue/QueueManagerTest.java | 3 +- .../com/iluwatar/privateclassdata/App.java | 3 +- .../privateclassdata/ImmutableStew.java | 3 +- .../com/iluwatar/privateclassdata/Stew.java | 3 +- .../iluwatar/privateclassdata/StewData.java | 3 +- .../iluwatar/privateclassdata/AppTest.java | 3 +- .../privateclassdata/ImmutableStewTest.java | 3 +- .../iluwatar/privateclassdata/StewTest.java | 3 +- .../utils/InMemoryAppender.java | 3 +- .../com/iluwatar/producer/consumer/App.java | 3 +- .../iluwatar/producer/consumer/Consumer.java | 3 +- .../com/iluwatar/producer/consumer/Item.java | 3 +- .../iluwatar/producer/consumer/ItemQueue.java | 3 +- .../iluwatar/producer/consumer/Producer.java | 3 +- .../iluwatar/producer/consumer/AppTest.java | 3 +- .../producer/consumer/ConsumerTest.java | 3 +- .../producer/consumer/ProducerTest.java | 3 +- .../main/java/com/iluwatar/promise/App.java | 3 +- .../java/com/iluwatar/promise/Promise.java | 3 +- .../com/iluwatar/promise/PromiseSupport.java | 3 +- .../java/com/iluwatar/promise/Utility.java | 3 +- .../java/com/iluwatar/promise/AppTest.java | 3 +- .../com/iluwatar/promise/PromiseTest.java | 3 +- .../main/java/com/iluwatar/property/App.java | 3 +- .../java/com/iluwatar/property/Character.java | 3 +- .../java/com/iluwatar/property/Prototype.java | 3 +- .../java/com/iluwatar/property/Stats.java | 3 +- .../java/com/iluwatar/property/AppTest.java | 3 +- .../com/iluwatar/property/CharacterTest.java | 3 +- .../main/java/com/iluwatar/prototype/App.java | 3 +- .../java/com/iluwatar/prototype/Beast.java | 3 +- .../java/com/iluwatar/prototype/ElfBeast.java | 3 +- .../java/com/iluwatar/prototype/ElfMage.java | 3 +- .../com/iluwatar/prototype/ElfWarlord.java | 3 +- .../com/iluwatar/prototype/HeroFactory.java | 3 +- .../iluwatar/prototype/HeroFactoryImpl.java | 3 +- .../java/com/iluwatar/prototype/Mage.java | 3 +- .../java/com/iluwatar/prototype/OrcBeast.java | 3 +- .../java/com/iluwatar/prototype/OrcMage.java | 3 +- .../com/iluwatar/prototype/OrcWarlord.java | 3 +- .../com/iluwatar/prototype/Prototype.java | 3 +- .../java/com/iluwatar/prototype/Warlord.java | 3 +- .../java/com/iluwatar/prototype/AppTest.java | 3 +- .../prototype/HeroFactoryImplTest.java | 3 +- .../com/iluwatar/prototype/PrototypeTest.java | 3 +- .../src/main/java/com/iluwatar/proxy/App.java | 3 +- .../java/com/iluwatar/proxy/IvoryTower.java | 3 +- .../main/java/com/iluwatar/proxy/Wizard.java | 3 +- .../java/com/iluwatar/proxy/WizardTower.java | 3 +- .../com/iluwatar/proxy/WizardTowerProxy.java | 3 +- .../test/java/com/iluwatar/proxy/AppTest.java | 3 +- .../com/iluwatar/proxy/IvoryTowerTest.java | 3 +- .../java/com/iluwatar/proxy/WizardTest.java | 3 +- .../iluwatar/proxy/WizardTowerProxyTest.java | 3 +- .../proxy/utils/InMemoryAppender.java | 3 +- .../com/iluwatar/queue/load/leveling/App.java | 3 +- .../iluwatar/queue/load/leveling/Message.java | 3 +- .../queue/load/leveling/MessageQueue.java | 3 +- .../queue/load/leveling/ServiceExecutor.java | 3 +- .../iluwatar/queue/load/leveling/Task.java | 3 +- .../queue/load/leveling/TaskGenerator.java | 3 +- .../iluwatar/queue/load/leveling/AppTest.java | 3 +- .../queue/load/leveling/MessageQueueTest.java | 3 +- .../queue/load/leveling/MessageTest.java | 3 +- .../load/leveling/TaskGenSrvExeTest.java | 3 +- .../java/com/iluwatar/reactor/app/App.java | 3 +- .../com/iluwatar/reactor/app/AppClient.java | 3 +- .../iluwatar/reactor/app/LoggingHandler.java | 3 +- .../reactor/framework/AbstractNioChannel.java | 3 +- .../reactor/framework/ChannelHandler.java | 3 +- .../reactor/framework/Dispatcher.java | 3 +- .../reactor/framework/NioDatagramChannel.java | 3 +- .../reactor/framework/NioReactor.java | 3 +- .../framework/NioServerSocketChannel.java | 3 +- .../framework/SameThreadDispatcher.java | 3 +- .../framework/ThreadPoolDispatcher.java | 3 +- .../com/iluwatar/reactor/app/ReactorTest.java | 3 +- .../com/iluwatar/reader/writer/lock/App.java | 3 +- .../iluwatar/reader/writer/lock/Reader.java | 3 +- .../reader/writer/lock/ReaderWriterLock.java | 3 +- .../iluwatar/reader/writer/lock/Writer.java | 3 +- .../iluwatar/reader/writer/lock/AppTest.java | 3 +- .../writer/lock/ReaderAndWriterTest.java | 3 +- .../reader/writer/lock/ReaderTest.java | 3 +- .../reader/writer/lock/WriterTest.java | 3 +- .../writer/lock/utils/InMemoryAppender.java | 3 +- .../java/com/iluwatar/repository/App.java | 3 +- .../com/iluwatar/repository/AppConfig.java | 3 +- .../java/com/iluwatar/repository/Person.java | 3 +- .../iluwatar/repository/PersonRepository.java | 3 +- .../repository/PersonSpecifications.java | 3 +- .../AnnotationBasedRepositoryTest.java | 3 +- .../iluwatar/repository/AppConfigTest.java | 3 +- .../java/com/iluwatar/repository/AppTest.java | 3 +- .../iluwatar/repository/RepositoryTest.java | 3 +- .../acquisition/is/initialization/App.java | 3 +- .../is/initialization/SlidingDoor.java | 3 +- .../is/initialization/TreasureChest.java | 3 +- .../is/initialization/AppTest.java | 3 +- .../is/initialization/ClosableTest.java | 3 +- .../src/main/java/com/iluwatar/retry/App.java | 3 +- .../com/iluwatar/retry/BusinessException.java | 3 +- .../com/iluwatar/retry/BusinessOperation.java | 3 +- .../retry/CustomerNotFoundException.java | 3 +- .../retry/DatabaseNotAvailableException.java | 3 +- .../java/com/iluwatar/retry/FindCustomer.java | 3 +- .../main/java/com/iluwatar/retry/Retry.java | 3 +- .../retry/RetryExponentialBackoff.java | 3 +- .../com/iluwatar/retry/FindCustomerTest.java | 3 +- .../retry/RetryExponentialBackoffTest.java | 3 +- .../java/com/iluwatar/retry/RetryTest.java | 3 +- .../main/java/com/iluwatar/semaphore/App.java | 3 +- .../java/com/iluwatar/semaphore/Customer.java | 3 +- .../java/com/iluwatar/semaphore/Fruit.java | 3 +- .../com/iluwatar/semaphore/FruitBowl.java | 3 +- .../com/iluwatar/semaphore/FruitShop.java | 3 +- .../java/com/iluwatar/semaphore/Lock.java | 3 +- .../com/iluwatar/semaphore/Semaphore.java | 3 +- .../java/com/iluwatar/semaphore/AppTest.java | 3 +- .../com/iluwatar/semaphore/FruitBowlTest.java | 3 +- .../com/iluwatar/semaphore/SemaphoreTest.java | 3 +- .../main/java/com/iluwatar/servant/App.java | 3 +- .../main/java/com/iluwatar/servant/King.java | 3 +- .../main/java/com/iluwatar/servant/Queen.java | 3 +- .../java/com/iluwatar/servant/Royalty.java | 3 +- .../java/com/iluwatar/servant/Servant.java | 3 +- .../java/com/iluwatar/servant/AppTest.java | 3 +- .../java/com/iluwatar/servant/KingTest.java | 3 +- .../java/com/iluwatar/servant/QueenTest.java | 3 +- .../com/iluwatar/servant/ServantTest.java | 3 +- .../baas/api/AbstractDynamoDbHandler.java | 3 +- .../baas/api/FindPersonApiHandler.java | 3 +- .../baas/api/SavePersonApiHandler.java | 3 +- .../serverless/baas/model/Address.java | 3 +- .../serverless/baas/model/Person.java | 3 +- .../serverless/faas/ApiGatewayResponse.java | 3 +- .../iluwatar/serverless/faas/LambdaInfo.java | 3 +- .../faas/api/LambdaInfoApiHandler.java | 3 +- .../baas/api/FindPersonApiHandlerTest.java | 3 +- .../baas/api/SavePersonApiHandlerTest.java | 3 +- .../faas/api/LambdaInfoApiHandlerTest.java | 3 +- .../com/iluwatar/servicelayer/app/App.java | 3 +- .../servicelayer/common/BaseEntity.java | 3 +- .../com/iluwatar/servicelayer/common/Dao.java | 3 +- .../servicelayer/common/DaoBaseImpl.java | 3 +- .../servicelayer/hibernate/HibernateUtil.java | 3 +- .../servicelayer/magic/MagicService.java | 3 +- .../servicelayer/magic/MagicServiceImpl.java | 3 +- .../iluwatar/servicelayer/spell/Spell.java | 3 +- .../iluwatar/servicelayer/spell/SpellDao.java | 3 +- .../servicelayer/spell/SpellDaoImpl.java | 3 +- .../servicelayer/spellbook/Spellbook.java | 3 +- .../servicelayer/spellbook/SpellbookDao.java | 3 +- .../spellbook/SpellbookDaoImpl.java | 3 +- .../iluwatar/servicelayer/wizard/Wizard.java | 3 +- .../servicelayer/wizard/WizardDao.java | 3 +- .../servicelayer/wizard/WizardDaoImpl.java | 3 +- .../iluwatar/servicelayer/app/AppTest.java | 3 +- .../servicelayer/common/BaseDaoTest.java | 3 +- .../magic/MagicServiceImplTest.java | 3 +- .../servicelayer/spell/SpellDaoImplTest.java | 3 +- .../spellbook/SpellbookDaoImplTest.java | 3 +- .../wizard/WizardDaoImplTest.java | 3 +- .../java/com/iluwatar/servicelocator/App.java | 3 +- .../iluwatar/servicelocator/InitContext.java | 3 +- .../com/iluwatar/servicelocator/Service.java | 3 +- .../iluwatar/servicelocator/ServiceCache.java | 3 +- .../iluwatar/servicelocator/ServiceImpl.java | 3 +- .../servicelocator/ServiceLocator.java | 3 +- .../com/iluwatar/servicelocator/AppTest.java | 3 +- .../servicelocator/ServiceLocatorTest.java | 3 +- .../main/java/com/iluwatar/singleton/App.java | 3 +- .../iluwatar/singleton/EnumIvoryTower.java | 3 +- .../InitializingOnDemandHolderIdiom.java | 3 +- .../com/iluwatar/singleton/IvoryTower.java | 3 +- .../ThreadSafeDoubleCheckLocking.java | 3 +- .../ThreadSafeLazyLoadedIvoryTower.java | 3 +- .../java/com/iluwatar/singleton/AppTest.java | 3 +- .../singleton/EnumIvoryTowerTest.java | 3 +- .../InitializingOnDemandHolderIdiomTest.java | 3 +- .../iluwatar/singleton/IvoryTowerTest.java | 3 +- .../com/iluwatar/singleton/SingletonTest.java | 3 +- .../ThreadSafeDoubleCheckLockingTest.java | 3 +- .../ThreadSafeLazyLoadedIvoryTowerTest.java | 3 +- .../com/iluwatar/spatialpartition/App.java | 3 +- .../com/iluwatar/spatialpartition/Bubble.java | 3 +- .../com/iluwatar/spatialpartition/Point.java | 3 +- .../iluwatar/spatialpartition/QuadTree.java | 3 +- .../com/iluwatar/spatialpartition/Rect.java | 3 +- .../SpatialPartitionBubbles.java | 3 +- .../SpatialPartitionGeneric.java | 3 +- .../iluwatar/spatialpartition/BubbleTest.java | 3 +- .../spatialpartition/QuadTreeTest.java | 3 +- .../iluwatar/spatialpartition/RectTest.java | 3 +- .../SpatialPartitionBubblesTest.java | 3 +- .../com/iluwatar/specification/app/App.java | 3 +- .../creature/AbstractCreature.java | 3 +- .../specification/creature/Creature.java | 3 +- .../specification/creature/Dragon.java | 3 +- .../specification/creature/Goblin.java | 3 +- .../specification/creature/KillerBee.java | 3 +- .../specification/creature/Octopus.java | 3 +- .../specification/creature/Shark.java | 3 +- .../specification/creature/Troll.java | 3 +- .../specification/property/Color.java | 3 +- .../specification/property/Movement.java | 3 +- .../iluwatar/specification/property/Size.java | 3 +- .../specification/selector/ColorSelector.java | 3 +- .../selector/MovementSelector.java | 3 +- .../specification/selector/SizeSelector.java | 3 +- .../iluwatar/specification/app/AppTest.java | 3 +- .../specification/creature/CreatureTest.java | 3 +- .../selector/ColorSelectorTest.java | 3 +- .../selector/MovementSelectorTest.java | 3 +- .../selector/SizeSelectorTest.java | 3 +- .../java/com/iluwatar/state/AngryState.java | 3 +- .../src/main/java/com/iluwatar/state/App.java | 3 +- .../main/java/com/iluwatar/state/Mammoth.java | 3 +- .../com/iluwatar/state/PeacefulState.java | 3 +- .../main/java/com/iluwatar/state/State.java | 3 +- .../test/java/com/iluwatar/state/AppTest.java | 3 +- .../java/com/iluwatar/state/MammothTest.java | 3 +- .../java/com/iluwatar/stepbuilder/App.java | 3 +- .../com/iluwatar/stepbuilder/Character.java | 3 +- .../stepbuilder/CharacterStepBuilder.java | 3 +- .../com/iluwatar/stepbuilder/AppTest.java | 3 +- .../stepbuilder/CharacterStepBuilderTest.java | 3 +- .../main/java/com/iluwatar/strategy/App.java | 3 +- .../com/iluwatar/strategy/DragonSlayer.java | 3 +- .../strategy/DragonSlayingStrategy.java | 3 +- .../com/iluwatar/strategy/MeleeStrategy.java | 3 +- .../iluwatar/strategy/ProjectileStrategy.java | 3 +- .../com/iluwatar/strategy/SpellStrategy.java | 3 +- .../java/com/iluwatar/strategy/AppTest.java | 3 +- .../iluwatar/strategy/DragonSlayerTest.java | 3 +- .../strategy/DragonSlayingStrategyTest.java | 3 +- subclass-sandbox/pom.xml | 2 +- .../com/iluwatar/subclasssandbox/App.java | 10 ++--- .../iluwatar/subclasssandbox/GroundDive.java | 10 ++--- .../iluwatar/subclasssandbox/SkyLaunch.java | 10 ++--- .../iluwatar/subclasssandbox/Superpower.java | 10 ++--- .../com/iluwatar/subclasssandbox/AppTest.java | 10 ++--- .../subclasssandbox/GroundDiveTest.java | 10 ++--- .../subclasssandbox/SkyLaunchTest.java | 10 ++--- .../java/com/iluwatar/templatemethod/App.java | 3 +- .../templatemethod/HalflingThief.java | 3 +- .../templatemethod/HitAndRunMethod.java | 3 +- .../templatemethod/StealingMethod.java | 3 +- .../iluwatar/templatemethod/SubtleMethod.java | 3 +- .../com/iluwatar/templatemethod/AppTest.java | 3 +- .../templatemethod/HalflingThiefTest.java | 3 +- .../templatemethod/HitAndRunMethodTest.java | 3 +- .../templatemethod/StealingMethodTest.java | 3 +- .../templatemethod/SubtleMethodTest.java | 3 +- .../java/com/iluwatar/threadpool/App.java | 3 +- .../iluwatar/threadpool/CoffeeMakingTask.java | 3 +- .../threadpool/PotatoPeelingTask.java | 3 +- .../java/com/iluwatar/threadpool/Task.java | 3 +- .../java/com/iluwatar/threadpool/Worker.java | 3 +- .../java/com/iluwatar/threadpool/AppTest.java | 3 +- .../threadpool/CoffeeMakingTaskTest.java | 3 +- .../threadpool/PotatoPeelingTaskTest.java | 3 +- .../com/iluwatar/threadpool/TaskTest.java | 3 +- .../com/iluwatar/threadpool/WorkerTest.java | 3 +- .../java/com/iluwatar/throttling/App.java | 3 +- .../com/iluwatar/throttling/B2BService.java | 3 +- .../com/iluwatar/throttling/CallsCount.java | 3 +- .../java/com/iluwatar/throttling/Tenant.java | 3 +- .../throttling/timer/ThrottleTimerImpl.java | 3 +- .../iluwatar/throttling/timer/Throttler.java | 3 +- .../java/com/iluwatar/throttling/AppTest.java | 3 +- .../iluwatar/throttling/B2BServiceTest.java | 3 +- .../com/iluwatar/throttling/TenantTest.java | 3 +- tls/src/main/java/com/iluwatar/tls/App.java | 3 +- .../com/iluwatar/tls/DateFormatCallable.java | 3 +- .../main/java/com/iluwatar/tls/Result.java | 3 +- .../test/java/com/iluwatar/tls/AppTest.java | 3 +- .../iluwatar/tls/DateFormatCallableTest.java | 3 +- ...FormatCallableTestIncorrectDateFormat.java | 3 +- .../DateFormatCallableTestMultiThread.java | 3 +- .../java/com/iluwatar/tolerantreader/App.java | 3 +- .../iluwatar/tolerantreader/RainbowFish.java | 3 +- .../tolerantreader/RainbowFishSerializer.java | 3 +- .../tolerantreader/RainbowFishV2.java | 3 +- .../com/iluwatar/tolerantreader/AppTest.java | 3 +- .../RainbowFishSerializerTest.java | 3 +- .../tolerantreader/RainbowFishTest.java | 3 +- .../tolerantreader/RainbowFishV2Test.java | 3 +- .../com/iluwatar/trampoline/Trampoline.java | 3 +- .../iluwatar/trampoline/TrampolineApp.java | 3 +- .../trampoline/TrampolineAppTest.java | 3 +- twin/src/main/java/com/iluwatar/twin/App.java | 3 +- .../main/java/com/iluwatar/twin/BallItem.java | 3 +- .../java/com/iluwatar/twin/BallThread.java | 3 +- .../main/java/com/iluwatar/twin/GameItem.java | 2 +- .../test/java/com/iluwatar/twin/AppTest.java | 3 +- .../java/com/iluwatar/twin/BallItemTest.java | 3 +- .../com/iluwatar/twin/BallThreadTest.java | 3 +- .../java/com/iluwatar/typeobject/App.java | 3 +- .../java/com/iluwatar/typeobject/Candy.java | 3 +- .../com/iluwatar/typeobject/CandyGame.java | 3 +- .../java/com/iluwatar/typeobject/Cell.java | 3 +- .../com/iluwatar/typeobject/CellPool.java | 3 +- .../com/iluwatar/typeobject/JsonParser.java | 3 +- .../iluwatar/typeobject/CandyGameTest.java | 3 +- .../com/iluwatar/typeobject/CellPoolTest.java | 3 +- .../com/iluwatar/typeobject/CellTest.java | 3 +- .../java/com/iluwatar/unitofwork/App.java | 3 +- .../com/iluwatar/unitofwork/IUnitOfWork.java | 3 +- .../java/com/iluwatar/unitofwork/Student.java | 3 +- .../iluwatar/unitofwork/StudentDatabase.java | 3 +- .../unitofwork/StudentRepository.java | 3 +- .../java/com/iluwatar/unitofwork/AppTest.java | 3 +- .../unitofwork/StudentRepositoryTest.java | 3 +- .../java/com/iluwatar/value/object/App.java | 3 +- .../com/iluwatar/value/object/HeroStat.java | 3 +- .../com/iluwatar/value/object/AppTest.java | 3 +- .../iluwatar/value/object/HeroStatTest.java | 3 +- .../main/java/com/iluwatar/visitor/App.java | 3 +- .../java/com/iluwatar/visitor/Commander.java | 3 +- .../iluwatar/visitor/CommanderVisitor.java | 3 +- .../java/com/iluwatar/visitor/Sergeant.java | 3 +- .../com/iluwatar/visitor/SergeantVisitor.java | 3 +- .../java/com/iluwatar/visitor/Soldier.java | 3 +- .../com/iluwatar/visitor/SoldierVisitor.java | 3 +- .../main/java/com/iluwatar/visitor/Unit.java | 3 +- .../com/iluwatar/visitor/UnitVisitor.java | 3 +- .../java/com/iluwatar/visitor/AppTest.java | 3 +- .../com/iluwatar/visitor/CommanderTest.java | 3 +- .../visitor/CommanderVisitorTest.java | 3 +- .../com/iluwatar/visitor/SergeantTest.java | 3 +- .../iluwatar/visitor/SergeantVisitorTest.java | 3 +- .../com/iluwatar/visitor/SoldierTest.java | 3 +- .../iluwatar/visitor/SoldierVisitorTest.java | 3 +- .../java/com/iluwatar/visitor/UnitTest.java | 3 +- .../com/iluwatar/visitor/VisitorTest.java | 3 +- 1246 files changed, 2578 insertions(+), 1312 deletions(-) create mode 100644 license-plugin-header-style.xml diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/AbstractDocument.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/AbstractDocument.java index dee8302c1539..649bdbcc9499 100644 --- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/AbstractDocument.java +++ b/abstract-document/src/main/java/com/iluwatar/abstractdocument/AbstractDocument.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractdocument; import java.util.List; diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java index e8b2410a8bb6..a0d9d13c8a79 100644 --- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java +++ b/abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractdocument; import java.util.Arrays; diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/Document.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/Document.java index 767002eb7f6b..e1254c1f9400 100644 --- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/Document.java +++ b/abstract-document/src/main/java/com/iluwatar/abstractdocument/Document.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractdocument; import java.util.Map; diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/Car.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/Car.java index f0db8399387d..738aaab26df0 100644 --- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/Car.java +++ b/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/Car.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractdocument.domain; import java.util.Map; diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasModel.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasModel.java index 9c7ce855f5d5..d5178ecaddff 100644 --- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasModel.java +++ b/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasModel.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractdocument.domain; import java.util.Optional; diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasParts.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasParts.java index 84f55989f9f6..ff021a2eab9a 100644 --- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasParts.java +++ b/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasParts.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractdocument.domain; import java.util.stream.Stream; diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasPrice.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasPrice.java index 31f333bded5a..97683c344faf 100644 --- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasPrice.java +++ b/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasPrice.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractdocument.domain; import java.util.Optional; diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasType.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasType.java index 89dce0e3bf49..8ec1a9fe4cf2 100644 --- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasType.java +++ b/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasType.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractdocument.domain; import java.util.Optional; diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/Part.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/Part.java index 68c3e1aae31c..21e0c7070977 100644 --- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/Part.java +++ b/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/Part.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractdocument.domain; import java.util.Map; diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/enums/Property.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/enums/Property.java index 07ca62de5a23..b9957dd0c939 100644 --- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/enums/Property.java +++ b/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/enums/Property.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractdocument.domain.enums; /** diff --git a/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java b/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java index 78088ab49446..7f3e1eada124 100644 --- a/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java +++ b/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractdocument; import org.junit.jupiter.api.Test; diff --git a/abstract-document/src/test/java/com/iluwatar/abstractdocument/AppTest.java b/abstract-document/src/test/java/com/iluwatar/abstractdocument/AppTest.java index 4dffbdf88cf4..aed63f303181 100644 --- a/abstract-document/src/test/java/com/iluwatar/abstractdocument/AppTest.java +++ b/abstract-document/src/test/java/com/iluwatar/abstractdocument/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractdocument; import org.junit.jupiter.api.Test; diff --git a/abstract-document/src/test/java/com/iluwatar/abstractdocument/DomainTest.java b/abstract-document/src/test/java/com/iluwatar/abstractdocument/DomainTest.java index 6d67be392c77..2dde49a1ea2a 100644 --- a/abstract-document/src/test/java/com/iluwatar/abstractdocument/DomainTest.java +++ b/abstract-document/src/test/java/com/iluwatar/abstractdocument/DomainTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractdocument; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/App.java b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/App.java index 9d77b245084e..a2b4867b0d2a 100644 --- a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/App.java +++ b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractfactory; import org.slf4j.Logger; diff --git a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/Army.java b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/Army.java index 03ada4ba0339..158ad9fa8c41 100644 --- a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/Army.java +++ b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/Army.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractfactory; /** diff --git a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/Castle.java b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/Castle.java index e349e6160fd3..faf2cb4cc58c 100644 --- a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/Castle.java +++ b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/Castle.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractfactory; /** diff --git a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfArmy.java b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfArmy.java index 2eaaf722c642..f4196072c1c8 100644 --- a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfArmy.java +++ b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfArmy.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractfactory; /** diff --git a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfCastle.java b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfCastle.java index 0562ffaaa49f..29f16907e665 100644 --- a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfCastle.java +++ b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfCastle.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractfactory; /** diff --git a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfKing.java b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfKing.java index faa78d401515..8d4c6d7f0701 100644 --- a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfKing.java +++ b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfKing.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractfactory; /** diff --git a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfKingdomFactory.java b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfKingdomFactory.java index 887ba058c477..61d744cfcb1e 100644 --- a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfKingdomFactory.java +++ b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/ElfKingdomFactory.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractfactory; /** diff --git a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/King.java b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/King.java index f11d5c685e7d..cbb27cec2820 100644 --- a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/King.java +++ b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/King.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractfactory; /** diff --git a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/KingdomFactory.java b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/KingdomFactory.java index a117598edd1a..c3e3d0f2579b 100644 --- a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/KingdomFactory.java +++ b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/KingdomFactory.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractfactory; /** diff --git a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcArmy.java b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcArmy.java index 66ac688edc38..55842f2a93f2 100644 --- a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcArmy.java +++ b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcArmy.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractfactory; /** diff --git a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcCastle.java b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcCastle.java index ac6840276907..1316cf6d4aae 100644 --- a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcCastle.java +++ b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcCastle.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractfactory; /** diff --git a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcKing.java b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcKing.java index cc5bd158b92f..a4ffc1d28ae4 100644 --- a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcKing.java +++ b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcKing.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractfactory; /** diff --git a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcKingdomFactory.java b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcKingdomFactory.java index 731d52eecc4d..6792174f2f9b 100644 --- a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcKingdomFactory.java +++ b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/OrcKingdomFactory.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractfactory; /** diff --git a/abstract-factory/src/test/java/com/iluwatar/abstractfactory/AbstractFactoryTest.java b/abstract-factory/src/test/java/com/iluwatar/abstractfactory/AbstractFactoryTest.java index 244ec0015904..eab501e9b191 100644 --- a/abstract-factory/src/test/java/com/iluwatar/abstractfactory/AbstractFactoryTest.java +++ b/abstract-factory/src/test/java/com/iluwatar/abstractfactory/AbstractFactoryTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractfactory; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/abstract-factory/src/test/java/com/iluwatar/abstractfactory/AppTest.java b/abstract-factory/src/test/java/com/iluwatar/abstractfactory/AppTest.java index 28224d12360a..892af73920ae 100644 --- a/abstract-factory/src/test/java/com/iluwatar/abstractfactory/AppTest.java +++ b/abstract-factory/src/test/java/com/iluwatar/abstractfactory/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.abstractfactory; import org.junit.jupiter.api.Test; diff --git a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/AllModemVisitor.java b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/AllModemVisitor.java index 97c9b19462c5..b5842cdf576e 100644 --- a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/AllModemVisitor.java +++ b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/AllModemVisitor.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.acyclicvisitor; /** diff --git a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/App.java b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/App.java index be96f3a60d31..3875d7a2a289 100644 --- a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/App.java +++ b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.acyclicvisitor; /** diff --git a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ConfigureForDosVisitor.java b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ConfigureForDosVisitor.java index 1f03065505bb..8b64db8a7ab7 100644 --- a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ConfigureForDosVisitor.java +++ b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ConfigureForDosVisitor.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.acyclicvisitor; import org.slf4j.Logger; diff --git a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ConfigureForUnixVisitor.java b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ConfigureForUnixVisitor.java index d77118ccc355..fb5a657d78ea 100644 --- a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ConfigureForUnixVisitor.java +++ b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ConfigureForUnixVisitor.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.acyclicvisitor; import org.slf4j.Logger; diff --git a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/Hayes.java b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/Hayes.java index 1c650ce0c053..586d72876871 100644 --- a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/Hayes.java +++ b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/Hayes.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.acyclicvisitor; import org.slf4j.Logger; diff --git a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/HayesVisitor.java b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/HayesVisitor.java index 130fdf250e3b..80dfc2320384 100644 --- a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/HayesVisitor.java +++ b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/HayesVisitor.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.acyclicvisitor; /** diff --git a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/Modem.java b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/Modem.java index c8ddfd3d907b..9c1eb117eea6 100644 --- a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/Modem.java +++ b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/Modem.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.acyclicvisitor; /** diff --git a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ModemVisitor.java b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ModemVisitor.java index 57ccc3105016..a5baa7169b8b 100644 --- a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ModemVisitor.java +++ b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ModemVisitor.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.acyclicvisitor; /** diff --git a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/Zoom.java b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/Zoom.java index 39bd8c38f7ca..c624f9f5f46c 100644 --- a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/Zoom.java +++ b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/Zoom.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.acyclicvisitor; import org.slf4j.Logger; diff --git a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ZoomVisitor.java b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ZoomVisitor.java index eebc5111b000..707943884eeb 100644 --- a/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ZoomVisitor.java +++ b/acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ZoomVisitor.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.acyclicvisitor; /** diff --git a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/AppTest.java b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/AppTest.java index 813a380b8790..1f555ee9932e 100644 --- a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/AppTest.java +++ b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.acyclicvisitor; import org.junit.jupiter.api.Test; diff --git a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForDosVisitorTest.java b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForDosVisitorTest.java index b90bafb0f5e6..d49ba591cfec 100644 --- a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForDosVisitorTest.java +++ b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForDosVisitorTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.acyclicvisitor; import static org.assertj.core.api.Assertions.assertThat; diff --git a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForUnixVisitorTest.java b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForUnixVisitorTest.java index ef6fd4d8ede3..e1765c81b770 100644 --- a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForUnixVisitorTest.java +++ b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForUnixVisitorTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.acyclicvisitor; import static org.assertj.core.api.Assertions.assertThat; diff --git a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/HayesTest.java b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/HayesTest.java index 477354b1347f..308dd5879329 100644 --- a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/HayesTest.java +++ b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/HayesTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.acyclicvisitor; import static org.mockito.Matchers.eq; diff --git a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ZoomTest.java b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ZoomTest.java index ff24d526d227..2dcfcfbbbf80 100644 --- a/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ZoomTest.java +++ b/acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ZoomTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.acyclicvisitor; diff --git a/adapter/src/main/java/com/iluwatar/adapter/App.java b/adapter/src/main/java/com/iluwatar/adapter/App.java index 4f31af795f6b..a3bf5b14b35c 100644 --- a/adapter/src/main/java/com/iluwatar/adapter/App.java +++ b/adapter/src/main/java/com/iluwatar/adapter/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.adapter; /** diff --git a/adapter/src/main/java/com/iluwatar/adapter/Captain.java b/adapter/src/main/java/com/iluwatar/adapter/Captain.java index dd9397b2236b..fbf0be6ca628 100644 --- a/adapter/src/main/java/com/iluwatar/adapter/Captain.java +++ b/adapter/src/main/java/com/iluwatar/adapter/Captain.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.adapter; /** diff --git a/adapter/src/main/java/com/iluwatar/adapter/FishingBoat.java b/adapter/src/main/java/com/iluwatar/adapter/FishingBoat.java index 381e4de97a58..6c2daae3d2df 100644 --- a/adapter/src/main/java/com/iluwatar/adapter/FishingBoat.java +++ b/adapter/src/main/java/com/iluwatar/adapter/FishingBoat.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.adapter; import org.slf4j.Logger; diff --git a/adapter/src/main/java/com/iluwatar/adapter/FishingBoatAdapter.java b/adapter/src/main/java/com/iluwatar/adapter/FishingBoatAdapter.java index df0ba4792b17..7dda379c9271 100644 --- a/adapter/src/main/java/com/iluwatar/adapter/FishingBoatAdapter.java +++ b/adapter/src/main/java/com/iluwatar/adapter/FishingBoatAdapter.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.adapter; /** diff --git a/adapter/src/main/java/com/iluwatar/adapter/RowingBoat.java b/adapter/src/main/java/com/iluwatar/adapter/RowingBoat.java index 672511770bc7..3b43da732bd3 100644 --- a/adapter/src/main/java/com/iluwatar/adapter/RowingBoat.java +++ b/adapter/src/main/java/com/iluwatar/adapter/RowingBoat.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.adapter; /** diff --git a/adapter/src/test/java/com/iluwatar/adapter/AdapterPatternTest.java b/adapter/src/test/java/com/iluwatar/adapter/AdapterPatternTest.java index b5164c68de2f..d4cca004f599 100644 --- a/adapter/src/test/java/com/iluwatar/adapter/AdapterPatternTest.java +++ b/adapter/src/test/java/com/iluwatar/adapter/AdapterPatternTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.adapter; import org.junit.jupiter.api.BeforeEach; diff --git a/adapter/src/test/java/com/iluwatar/adapter/AppTest.java b/adapter/src/test/java/com/iluwatar/adapter/AppTest.java index 5c7303353496..7e94241b635f 100644 --- a/adapter/src/test/java/com/iluwatar/adapter/AppTest.java +++ b/adapter/src/test/java/com/iluwatar/adapter/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.adapter; import org.junit.jupiter.api.Test; diff --git a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Aggregator.java b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Aggregator.java index 593d83e1378e..e96ac9d43c2c 100644 --- a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Aggregator.java +++ b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Aggregator.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.aggregator.microservices; import javax.annotation.Resource; diff --git a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/App.java b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/App.java index 5221ddd8abcf..ab4b11dcf619 100644 --- a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/App.java +++ b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.aggregator.microservices; import org.springframework.boot.SpringApplication; diff --git a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Product.java b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Product.java index f47a035a91f5..3c214a58a9f5 100644 --- a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Product.java +++ b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/Product.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.aggregator.microservices; /** diff --git a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClient.java b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClient.java index 72684668b0fe..47d786ec6aeb 100644 --- a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClient.java +++ b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClient.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.aggregator.microservices; /** diff --git a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClientImpl.java b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClientImpl.java index f04906b476d2..0fe68da17325 100644 --- a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClientImpl.java +++ b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInformationClientImpl.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.aggregator.microservices; import java.io.IOException; diff --git a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClient.java b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClient.java index e7780257e338..ed325be0070f 100644 --- a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClient.java +++ b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClient.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.aggregator.microservices; /** diff --git a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClientImpl.java b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClientImpl.java index c92eb678c152..c43fe84c61ca 100644 --- a/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClientImpl.java +++ b/aggregator-microservices/aggregator-service/src/main/java/com/iluwatar/aggregator/microservices/ProductInventoryClientImpl.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.aggregator.microservices; import java.io.IOException; diff --git a/aggregator-microservices/aggregator-service/src/test/java/com/iluwatar/aggregator/microservices/AggregatorTest.java b/aggregator-microservices/aggregator-service/src/test/java/com/iluwatar/aggregator/microservices/AggregatorTest.java index 8aeab6d8dda5..59d790de27ce 100644 --- a/aggregator-microservices/aggregator-service/src/test/java/com/iluwatar/aggregator/microservices/AggregatorTest.java +++ b/aggregator-microservices/aggregator-service/src/test/java/com/iluwatar/aggregator/microservices/AggregatorTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.aggregator.microservices; import org.junit.jupiter.api.BeforeEach; diff --git a/aggregator-microservices/information-microservice/src/main/java/com/iluwatar/information/microservice/InformationApplication.java b/aggregator-microservices/information-microservice/src/main/java/com/iluwatar/information/microservice/InformationApplication.java index c027f14993ec..3815fffc4cc7 100644 --- a/aggregator-microservices/information-microservice/src/main/java/com/iluwatar/information/microservice/InformationApplication.java +++ b/aggregator-microservices/information-microservice/src/main/java/com/iluwatar/information/microservice/InformationApplication.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.information.microservice; import org.springframework.boot.SpringApplication; diff --git a/aggregator-microservices/information-microservice/src/main/java/com/iluwatar/information/microservice/InformationController.java b/aggregator-microservices/information-microservice/src/main/java/com/iluwatar/information/microservice/InformationController.java index f22d17eab4c1..8306fd7855a5 100644 --- a/aggregator-microservices/information-microservice/src/main/java/com/iluwatar/information/microservice/InformationController.java +++ b/aggregator-microservices/information-microservice/src/main/java/com/iluwatar/information/microservice/InformationController.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.information.microservice; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/aggregator-microservices/information-microservice/src/test/java/com/iluwatar/information/microservice/InformationControllerTest.java b/aggregator-microservices/information-microservice/src/test/java/com/iluwatar/information/microservice/InformationControllerTest.java index 4f880d375a45..3f3f1b511452 100644 --- a/aggregator-microservices/information-microservice/src/test/java/com/iluwatar/information/microservice/InformationControllerTest.java +++ b/aggregator-microservices/information-microservice/src/test/java/com/iluwatar/information/microservice/InformationControllerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.information.microservice; import org.junit.jupiter.api.Test; diff --git a/aggregator-microservices/inventory-microservice/src/main/java/com/iluwatar/inventory/microservice/InventoryApplication.java b/aggregator-microservices/inventory-microservice/src/main/java/com/iluwatar/inventory/microservice/InventoryApplication.java index 8fed4d4d7448..9a49518b536e 100644 --- a/aggregator-microservices/inventory-microservice/src/main/java/com/iluwatar/inventory/microservice/InventoryApplication.java +++ b/aggregator-microservices/inventory-microservice/src/main/java/com/iluwatar/inventory/microservice/InventoryApplication.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.inventory.microservice; import org.springframework.boot.SpringApplication; diff --git a/aggregator-microservices/inventory-microservice/src/main/java/com/iluwatar/inventory/microservice/InventoryController.java b/aggregator-microservices/inventory-microservice/src/main/java/com/iluwatar/inventory/microservice/InventoryController.java index 5117107b3efa..85eea4e9cef1 100644 --- a/aggregator-microservices/inventory-microservice/src/main/java/com/iluwatar/inventory/microservice/InventoryController.java +++ b/aggregator-microservices/inventory-microservice/src/main/java/com/iluwatar/inventory/microservice/InventoryController.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.inventory.microservice; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/aggregator-microservices/inventory-microservice/src/test/java/com/iluwatar/inventory/microservice/InventoryControllerTest.java b/aggregator-microservices/inventory-microservice/src/test/java/com/iluwatar/inventory/microservice/InventoryControllerTest.java index 063cb9d9d73d..8933053d417a 100644 --- a/aggregator-microservices/inventory-microservice/src/test/java/com/iluwatar/inventory/microservice/InventoryControllerTest.java +++ b/aggregator-microservices/inventory-microservice/src/test/java/com/iluwatar/inventory/microservice/InventoryControllerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.inventory.microservice; import org.junit.jupiter.api.Test; diff --git a/ambassador/src/main/java/com/iluwatar/ambassador/App.java b/ambassador/src/main/java/com/iluwatar/ambassador/App.java index 465981d41958..6b0b048c8b97 100644 --- a/ambassador/src/main/java/com/iluwatar/ambassador/App.java +++ b/ambassador/src/main/java/com/iluwatar/ambassador/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.ambassador; /** diff --git a/ambassador/src/main/java/com/iluwatar/ambassador/Client.java b/ambassador/src/main/java/com/iluwatar/ambassador/Client.java index 3637c05bed0f..fdadd71d26dd 100644 --- a/ambassador/src/main/java/com/iluwatar/ambassador/Client.java +++ b/ambassador/src/main/java/com/iluwatar/ambassador/Client.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.ambassador; import org.slf4j.LoggerFactory; diff --git a/ambassador/src/main/java/com/iluwatar/ambassador/RemoteService.java b/ambassador/src/main/java/com/iluwatar/ambassador/RemoteService.java index ad26951fd30b..10da79d0b937 100644 --- a/ambassador/src/main/java/com/iluwatar/ambassador/RemoteService.java +++ b/ambassador/src/main/java/com/iluwatar/ambassador/RemoteService.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.ambassador; import com.iluwatar.ambassador.util.RandomProvider; diff --git a/ambassador/src/main/java/com/iluwatar/ambassador/RemoteServiceInterface.java b/ambassador/src/main/java/com/iluwatar/ambassador/RemoteServiceInterface.java index 394839f2acad..013015936957 100644 --- a/ambassador/src/main/java/com/iluwatar/ambassador/RemoteServiceInterface.java +++ b/ambassador/src/main/java/com/iluwatar/ambassador/RemoteServiceInterface.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.ambassador; /** diff --git a/ambassador/src/main/java/com/iluwatar/ambassador/ServiceAmbassador.java b/ambassador/src/main/java/com/iluwatar/ambassador/ServiceAmbassador.java index 00a39e01b75e..37b6970b451d 100644 --- a/ambassador/src/main/java/com/iluwatar/ambassador/ServiceAmbassador.java +++ b/ambassador/src/main/java/com/iluwatar/ambassador/ServiceAmbassador.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.ambassador; import org.slf4j.Logger; diff --git a/ambassador/src/main/java/com/iluwatar/ambassador/util/RandomProvider.java b/ambassador/src/main/java/com/iluwatar/ambassador/util/RandomProvider.java index 9b46e096fbef..5948472c0062 100644 --- a/ambassador/src/main/java/com/iluwatar/ambassador/util/RandomProvider.java +++ b/ambassador/src/main/java/com/iluwatar/ambassador/util/RandomProvider.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.ambassador.util; /** diff --git a/ambassador/src/test/java/com/iluwatar/ambassador/AppTest.java b/ambassador/src/test/java/com/iluwatar/ambassador/AppTest.java index e5a28addb054..ff868b13b81d 100644 --- a/ambassador/src/test/java/com/iluwatar/ambassador/AppTest.java +++ b/ambassador/src/test/java/com/iluwatar/ambassador/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.ambassador; import org.junit.jupiter.api.Test; diff --git a/ambassador/src/test/java/com/iluwatar/ambassador/ClientTest.java b/ambassador/src/test/java/com/iluwatar/ambassador/ClientTest.java index aadb4b137a09..c3cbd66cb1aa 100644 --- a/ambassador/src/test/java/com/iluwatar/ambassador/ClientTest.java +++ b/ambassador/src/test/java/com/iluwatar/ambassador/ClientTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.ambassador; import org.junit.jupiter.api.Test; diff --git a/ambassador/src/test/java/com/iluwatar/ambassador/RemoteServiceTest.java b/ambassador/src/test/java/com/iluwatar/ambassador/RemoteServiceTest.java index a8e5822930ef..5f1ff4db759f 100644 --- a/ambassador/src/test/java/com/iluwatar/ambassador/RemoteServiceTest.java +++ b/ambassador/src/test/java/com/iluwatar/ambassador/RemoteServiceTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.ambassador; import com.iluwatar.ambassador.util.RandomProvider; diff --git a/ambassador/src/test/java/com/iluwatar/ambassador/ServiceAmbassadorTest.java b/ambassador/src/test/java/com/iluwatar/ambassador/ServiceAmbassadorTest.java index 3b1fe51d09a2..2737c957e315 100644 --- a/ambassador/src/test/java/com/iluwatar/ambassador/ServiceAmbassadorTest.java +++ b/ambassador/src/test/java/com/iluwatar/ambassador/ServiceAmbassadorTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.ambassador; import org.junit.jupiter.api.Test; diff --git a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ApiGateway.java b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ApiGateway.java index dc4249c6eb3d..25c201521578 100644 --- a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ApiGateway.java +++ b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ApiGateway.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.api.gateway; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/App.java b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/App.java index ba4b67c39c89..b92e3a7d0d36 100644 --- a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/App.java +++ b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.api.gateway; import org.springframework.boot.SpringApplication; diff --git a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/DesktopProduct.java b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/DesktopProduct.java index 89de62b1b730..06b9e949533d 100644 --- a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/DesktopProduct.java +++ b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/DesktopProduct.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.api.gateway; /** diff --git a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ImageClient.java b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ImageClient.java index bc166c4c89f4..9c8c341ccd84 100644 --- a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ImageClient.java +++ b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ImageClient.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.api.gateway; /** diff --git a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ImageClientImpl.java b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ImageClientImpl.java index dddd0dc20f60..d2f80858cc49 100644 --- a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ImageClientImpl.java +++ b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/ImageClientImpl.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.api.gateway; import java.io.IOException; diff --git a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/MobileProduct.java b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/MobileProduct.java index 41644fb32a28..b7edb1047275 100644 --- a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/MobileProduct.java +++ b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/MobileProduct.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.api.gateway; /** diff --git a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/PriceClient.java b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/PriceClient.java index fca5fe32c573..74c564132939 100644 --- a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/PriceClient.java +++ b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/PriceClient.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.api.gateway; /** diff --git a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/PriceClientImpl.java b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/PriceClientImpl.java index 25d7f0b1169c..0a43c4b1fcfe 100644 --- a/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/PriceClientImpl.java +++ b/api-gateway/api-gateway-service/src/main/java/com/iluwatar/api/gateway/PriceClientImpl.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.api.gateway; import java.io.IOException; diff --git a/api-gateway/api-gateway-service/src/test/java/com/iluwatar/api/gateway/ApiGatewayTest.java b/api-gateway/api-gateway-service/src/test/java/com/iluwatar/api/gateway/ApiGatewayTest.java index ec579ead69a8..27068b52beb4 100644 --- a/api-gateway/api-gateway-service/src/test/java/com/iluwatar/api/gateway/ApiGatewayTest.java +++ b/api-gateway/api-gateway-service/src/test/java/com/iluwatar/api/gateway/ApiGatewayTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.api.gateway; import org.junit.jupiter.api.BeforeEach; diff --git a/api-gateway/image-microservice/src/main/java/com/iluwatar/image/microservice/ImageApplication.java b/api-gateway/image-microservice/src/main/java/com/iluwatar/image/microservice/ImageApplication.java index 86580ad8563e..bb551ac31ecb 100644 --- a/api-gateway/image-microservice/src/main/java/com/iluwatar/image/microservice/ImageApplication.java +++ b/api-gateway/image-microservice/src/main/java/com/iluwatar/image/microservice/ImageApplication.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.image.microservice; import org.springframework.boot.SpringApplication; diff --git a/api-gateway/image-microservice/src/main/java/com/iluwatar/image/microservice/ImageController.java b/api-gateway/image-microservice/src/main/java/com/iluwatar/image/microservice/ImageController.java index 5a84e700898b..9781dbc011aa 100644 --- a/api-gateway/image-microservice/src/main/java/com/iluwatar/image/microservice/ImageController.java +++ b/api-gateway/image-microservice/src/main/java/com/iluwatar/image/microservice/ImageController.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.image.microservice; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/api-gateway/image-microservice/src/test/java/com/iluwatar/image/microservice/ImageControllerTest.java b/api-gateway/image-microservice/src/test/java/com/iluwatar/image/microservice/ImageControllerTest.java index 71044b56d496..d0c44ff0fa97 100644 --- a/api-gateway/image-microservice/src/test/java/com/iluwatar/image/microservice/ImageControllerTest.java +++ b/api-gateway/image-microservice/src/test/java/com/iluwatar/image/microservice/ImageControllerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.image.microservice; import org.junit.jupiter.api.Test; diff --git a/api-gateway/price-microservice/src/main/java/com/iluwatar/price/microservice/PriceApplication.java b/api-gateway/price-microservice/src/main/java/com/iluwatar/price/microservice/PriceApplication.java index 1edaf4c32b9a..1a29e53c9e98 100644 --- a/api-gateway/price-microservice/src/main/java/com/iluwatar/price/microservice/PriceApplication.java +++ b/api-gateway/price-microservice/src/main/java/com/iluwatar/price/microservice/PriceApplication.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.price.microservice; import org.springframework.boot.SpringApplication; diff --git a/api-gateway/price-microservice/src/main/java/com/iluwatar/price/microservice/PriceController.java b/api-gateway/price-microservice/src/main/java/com/iluwatar/price/microservice/PriceController.java index 8af122648e27..efb982253417 100644 --- a/api-gateway/price-microservice/src/main/java/com/iluwatar/price/microservice/PriceController.java +++ b/api-gateway/price-microservice/src/main/java/com/iluwatar/price/microservice/PriceController.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.price.microservice; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/api-gateway/price-microservice/src/test/java/com/iluwatar/price/microservice/PriceControllerTest.java b/api-gateway/price-microservice/src/test/java/com/iluwatar/price/microservice/PriceControllerTest.java index a2c5c81616e5..54a4413a96ad 100644 --- a/api-gateway/price-microservice/src/test/java/com/iluwatar/price/microservice/PriceControllerTest.java +++ b/api-gateway/price-microservice/src/test/java/com/iluwatar/price/microservice/PriceControllerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.price.microservice; import org.junit.jupiter.api.Test; diff --git a/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/App.java b/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/App.java index 0e0471c94029..bc33494f73f5 100644 --- a/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/App.java +++ b/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.async.method.invocation; import org.slf4j.Logger; diff --git a/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/AsyncCallback.java b/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/AsyncCallback.java index ffa162dbe475..950444fe7a17 100644 --- a/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/AsyncCallback.java +++ b/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/AsyncCallback.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.async.method.invocation; import java.util.Optional; diff --git a/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/AsyncExecutor.java b/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/AsyncExecutor.java index 8fa58d3f914d..14e30cbebdc2 100644 --- a/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/AsyncExecutor.java +++ b/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/AsyncExecutor.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.async.method.invocation; import java.util.concurrent.Callable; diff --git a/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/AsyncResult.java b/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/AsyncResult.java index 7001521444e9..c3b8467f1c8a 100644 --- a/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/AsyncResult.java +++ b/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/AsyncResult.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.async.method.invocation; import java.util.concurrent.ExecutionException; diff --git a/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/ThreadAsyncExecutor.java b/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/ThreadAsyncExecutor.java index c5f01b662023..f05b83b4f21a 100644 --- a/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/ThreadAsyncExecutor.java +++ b/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/ThreadAsyncExecutor.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.async.method.invocation; import java.util.Optional; diff --git a/async-method-invocation/src/test/java/com/iluwatar/async/method/invocation/AppTest.java b/async-method-invocation/src/test/java/com/iluwatar/async/method/invocation/AppTest.java index dd0cfd9ffaed..769cd66c4f90 100644 --- a/async-method-invocation/src/test/java/com/iluwatar/async/method/invocation/AppTest.java +++ b/async-method-invocation/src/test/java/com/iluwatar/async/method/invocation/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.async.method.invocation; import org.junit.jupiter.api.Test; diff --git a/async-method-invocation/src/test/java/com/iluwatar/async/method/invocation/ThreadAsyncExecutorTest.java b/async-method-invocation/src/test/java/com/iluwatar/async/method/invocation/ThreadAsyncExecutorTest.java index 3f43e67af762..d240f3c2eca1 100644 --- a/async-method-invocation/src/test/java/com/iluwatar/async/method/invocation/ThreadAsyncExecutorTest.java +++ b/async-method-invocation/src/test/java/com/iluwatar/async/method/invocation/ThreadAsyncExecutorTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.async.method.invocation; import org.junit.jupiter.api.Test; diff --git a/balking/src/main/java/com/iluwatar/balking/App.java b/balking/src/main/java/com/iluwatar/balking/App.java index 97fdda1854da..bb3fb085c077 100644 --- a/balking/src/main/java/com/iluwatar/balking/App.java +++ b/balking/src/main/java/com/iluwatar/balking/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.balking; import org.slf4j.Logger; diff --git a/balking/src/main/java/com/iluwatar/balking/DelayProvider.java b/balking/src/main/java/com/iluwatar/balking/DelayProvider.java index bce94699739e..ed05cd292f6f 100644 --- a/balking/src/main/java/com/iluwatar/balking/DelayProvider.java +++ b/balking/src/main/java/com/iluwatar/balking/DelayProvider.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.balking; import java.util.concurrent.TimeUnit; diff --git a/balking/src/main/java/com/iluwatar/balking/WashingMachine.java b/balking/src/main/java/com/iluwatar/balking/WashingMachine.java index 5fe32a1065df..044b1b6e9f36 100644 --- a/balking/src/main/java/com/iluwatar/balking/WashingMachine.java +++ b/balking/src/main/java/com/iluwatar/balking/WashingMachine.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.balking; import org.slf4j.Logger; diff --git a/balking/src/main/java/com/iluwatar/balking/WashingMachineState.java b/balking/src/main/java/com/iluwatar/balking/WashingMachineState.java index d6b7f7249b5e..0799d3fd8edb 100644 --- a/balking/src/main/java/com/iluwatar/balking/WashingMachineState.java +++ b/balking/src/main/java/com/iluwatar/balking/WashingMachineState.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.balking; /** diff --git a/balking/src/test/java/com/iluwatar/balking/AppTest.java b/balking/src/test/java/com/iluwatar/balking/AppTest.java index ca9af5262e00..440427f9f030 100644 --- a/balking/src/test/java/com/iluwatar/balking/AppTest.java +++ b/balking/src/test/java/com/iluwatar/balking/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.balking; import org.junit.jupiter.api.Test; diff --git a/balking/src/test/java/com/iluwatar/balking/WashingMachineTest.java b/balking/src/test/java/com/iluwatar/balking/WashingMachineTest.java index 4140e74aac33..8348f9256dee 100644 --- a/balking/src/test/java/com/iluwatar/balking/WashingMachineTest.java +++ b/balking/src/test/java/com/iluwatar/balking/WashingMachineTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.balking; import org.junit.jupiter.api.Test; diff --git a/bridge/src/main/java/com/iluwatar/bridge/App.java b/bridge/src/main/java/com/iluwatar/bridge/App.java index 89584cc922f7..195f463cf40d 100644 --- a/bridge/src/main/java/com/iluwatar/bridge/App.java +++ b/bridge/src/main/java/com/iluwatar/bridge/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bridge; import org.slf4j.Logger; diff --git a/bridge/src/main/java/com/iluwatar/bridge/Enchantment.java b/bridge/src/main/java/com/iluwatar/bridge/Enchantment.java index 3e14a00b2767..22acac8f9a1d 100644 --- a/bridge/src/main/java/com/iluwatar/bridge/Enchantment.java +++ b/bridge/src/main/java/com/iluwatar/bridge/Enchantment.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bridge; /** diff --git a/bridge/src/main/java/com/iluwatar/bridge/FlyingEnchantment.java b/bridge/src/main/java/com/iluwatar/bridge/FlyingEnchantment.java index 2aeb8e6389ca..14abe4c635cd 100644 --- a/bridge/src/main/java/com/iluwatar/bridge/FlyingEnchantment.java +++ b/bridge/src/main/java/com/iluwatar/bridge/FlyingEnchantment.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bridge; import org.slf4j.Logger; diff --git a/bridge/src/main/java/com/iluwatar/bridge/Hammer.java b/bridge/src/main/java/com/iluwatar/bridge/Hammer.java index 6943ddd4902d..47f60613d239 100644 --- a/bridge/src/main/java/com/iluwatar/bridge/Hammer.java +++ b/bridge/src/main/java/com/iluwatar/bridge/Hammer.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bridge; import org.slf4j.Logger; diff --git a/bridge/src/main/java/com/iluwatar/bridge/SoulEatingEnchantment.java b/bridge/src/main/java/com/iluwatar/bridge/SoulEatingEnchantment.java index a9ebbf251db6..3655c7e97722 100644 --- a/bridge/src/main/java/com/iluwatar/bridge/SoulEatingEnchantment.java +++ b/bridge/src/main/java/com/iluwatar/bridge/SoulEatingEnchantment.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bridge; import org.slf4j.Logger; diff --git a/bridge/src/main/java/com/iluwatar/bridge/Sword.java b/bridge/src/main/java/com/iluwatar/bridge/Sword.java index 19650999da6c..ab6f4ab7feff 100644 --- a/bridge/src/main/java/com/iluwatar/bridge/Sword.java +++ b/bridge/src/main/java/com/iluwatar/bridge/Sword.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bridge; import org.slf4j.Logger; diff --git a/bridge/src/main/java/com/iluwatar/bridge/Weapon.java b/bridge/src/main/java/com/iluwatar/bridge/Weapon.java index 6c65ac8e8b2c..b264dddca794 100644 --- a/bridge/src/main/java/com/iluwatar/bridge/Weapon.java +++ b/bridge/src/main/java/com/iluwatar/bridge/Weapon.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bridge; /** diff --git a/bridge/src/test/java/com/iluwatar/bridge/AppTest.java b/bridge/src/test/java/com/iluwatar/bridge/AppTest.java index ba9ecf21184e..55a848818b04 100644 --- a/bridge/src/test/java/com/iluwatar/bridge/AppTest.java +++ b/bridge/src/test/java/com/iluwatar/bridge/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bridge; import org.junit.jupiter.api.Test; diff --git a/bridge/src/test/java/com/iluwatar/bridge/HammerTest.java b/bridge/src/test/java/com/iluwatar/bridge/HammerTest.java index 4d17a0ddd50b..8e140862c4ab 100644 --- a/bridge/src/test/java/com/iluwatar/bridge/HammerTest.java +++ b/bridge/src/test/java/com/iluwatar/bridge/HammerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bridge; import org.junit.jupiter.api.Test; diff --git a/bridge/src/test/java/com/iluwatar/bridge/SwordTest.java b/bridge/src/test/java/com/iluwatar/bridge/SwordTest.java index 168f4d92942f..a88ba9fa19f2 100644 --- a/bridge/src/test/java/com/iluwatar/bridge/SwordTest.java +++ b/bridge/src/test/java/com/iluwatar/bridge/SwordTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bridge; import org.junit.jupiter.api.Test; diff --git a/bridge/src/test/java/com/iluwatar/bridge/WeaponTest.java b/bridge/src/test/java/com/iluwatar/bridge/WeaponTest.java index 39b30d80b6de..4ca9d9ef059a 100644 --- a/bridge/src/test/java/com/iluwatar/bridge/WeaponTest.java +++ b/bridge/src/test/java/com/iluwatar/bridge/WeaponTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bridge; import org.junit.jupiter.api.Disabled; diff --git a/builder/src/main/java/com/iluwatar/builder/App.java b/builder/src/main/java/com/iluwatar/builder/App.java index 0b524e9adf79..f57e4d42f26f 100644 --- a/builder/src/main/java/com/iluwatar/builder/App.java +++ b/builder/src/main/java/com/iluwatar/builder/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.builder; import com.iluwatar.builder.Hero.Builder; diff --git a/builder/src/main/java/com/iluwatar/builder/Armor.java b/builder/src/main/java/com/iluwatar/builder/Armor.java index 13cf0a758119..8cf57a361a9e 100644 --- a/builder/src/main/java/com/iluwatar/builder/Armor.java +++ b/builder/src/main/java/com/iluwatar/builder/Armor.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.builder; /** diff --git a/builder/src/main/java/com/iluwatar/builder/HairColor.java b/builder/src/main/java/com/iluwatar/builder/HairColor.java index 310c82c77e2e..f94de35564a4 100644 --- a/builder/src/main/java/com/iluwatar/builder/HairColor.java +++ b/builder/src/main/java/com/iluwatar/builder/HairColor.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.builder; /** diff --git a/builder/src/main/java/com/iluwatar/builder/HairType.java b/builder/src/main/java/com/iluwatar/builder/HairType.java index 91416a4792e8..6eece1e373dd 100644 --- a/builder/src/main/java/com/iluwatar/builder/HairType.java +++ b/builder/src/main/java/com/iluwatar/builder/HairType.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.builder; /** diff --git a/builder/src/main/java/com/iluwatar/builder/Hero.java b/builder/src/main/java/com/iluwatar/builder/Hero.java index fff0075652a0..a8f285b66eda 100644 --- a/builder/src/main/java/com/iluwatar/builder/Hero.java +++ b/builder/src/main/java/com/iluwatar/builder/Hero.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.builder; /** diff --git a/builder/src/main/java/com/iluwatar/builder/Profession.java b/builder/src/main/java/com/iluwatar/builder/Profession.java index 2647946a25d3..1e22a1c67d85 100644 --- a/builder/src/main/java/com/iluwatar/builder/Profession.java +++ b/builder/src/main/java/com/iluwatar/builder/Profession.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.builder; /** diff --git a/builder/src/main/java/com/iluwatar/builder/Weapon.java b/builder/src/main/java/com/iluwatar/builder/Weapon.java index 1bab8ca2d386..51ddeafbce29 100644 --- a/builder/src/main/java/com/iluwatar/builder/Weapon.java +++ b/builder/src/main/java/com/iluwatar/builder/Weapon.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.builder; /** diff --git a/builder/src/test/java/com/iluwatar/builder/AppTest.java b/builder/src/test/java/com/iluwatar/builder/AppTest.java index ffee67444495..9511d3f9c48f 100644 --- a/builder/src/test/java/com/iluwatar/builder/AppTest.java +++ b/builder/src/test/java/com/iluwatar/builder/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.builder; import org.junit.jupiter.api.Test; diff --git a/builder/src/test/java/com/iluwatar/builder/HeroTest.java b/builder/src/test/java/com/iluwatar/builder/HeroTest.java index 8fa6fdd6b036..411087d9b077 100644 --- a/builder/src/test/java/com/iluwatar/builder/HeroTest.java +++ b/builder/src/test/java/com/iluwatar/builder/HeroTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.builder; import org.junit.jupiter.api.Test; diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/App.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/App.java index 00d9ab569a8b..68e382c0f051 100644 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/App.java +++ b/business-delegate/src/main/java/com/iluwatar/business/delegate/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.business.delegate; /** diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessDelegate.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessDelegate.java index 38b90c7dfe79..cf2b251295ad 100644 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessDelegate.java +++ b/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessDelegate.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.business.delegate; /** diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessLookup.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessLookup.java index 776694c93ee0..e7d8400d3249 100644 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessLookup.java +++ b/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessLookup.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.business.delegate; /** diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessService.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessService.java index eaca9b202d10..6e08aca1f939 100644 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessService.java +++ b/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessService.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.business.delegate; /** diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/Client.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/Client.java index 2d4e91561880..c9c8950db3a4 100644 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/Client.java +++ b/business-delegate/src/main/java/com/iluwatar/business/delegate/Client.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.business.delegate; /** diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/EjbService.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/EjbService.java index b5eac51518b7..aa9457abfada 100644 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/EjbService.java +++ b/business-delegate/src/main/java/com/iluwatar/business/delegate/EjbService.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.business.delegate; import org.slf4j.Logger; diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/JmsService.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/JmsService.java index 20b22a1a4527..83abd9762301 100644 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/JmsService.java +++ b/business-delegate/src/main/java/com/iluwatar/business/delegate/JmsService.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.business.delegate; import org.slf4j.Logger; diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/ServiceType.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/ServiceType.java index 8f918a4e241f..a09dde59c661 100644 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/ServiceType.java +++ b/business-delegate/src/main/java/com/iluwatar/business/delegate/ServiceType.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.business.delegate; /** diff --git a/business-delegate/src/test/java/com/iluwatar/business/delegate/AppTest.java b/business-delegate/src/test/java/com/iluwatar/business/delegate/AppTest.java index d31d6f7a354b..48e756acb816 100644 --- a/business-delegate/src/test/java/com/iluwatar/business/delegate/AppTest.java +++ b/business-delegate/src/test/java/com/iluwatar/business/delegate/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.business.delegate; import org.junit.jupiter.api.Test; diff --git a/business-delegate/src/test/java/com/iluwatar/business/delegate/BusinessDelegateTest.java b/business-delegate/src/test/java/com/iluwatar/business/delegate/BusinessDelegateTest.java index 296fdaeef359..dfc6dfa9d4da 100644 --- a/business-delegate/src/test/java/com/iluwatar/business/delegate/BusinessDelegateTest.java +++ b/business-delegate/src/test/java/com/iluwatar/business/delegate/BusinessDelegateTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.business.delegate; import org.junit.jupiter.api.BeforeEach; diff --git a/bytecode/src/main/java/com/iluwatar/bytecode/App.java b/bytecode/src/main/java/com/iluwatar/bytecode/App.java index 09c8f90f3148..9a5f66d886fe 100644 --- a/bytecode/src/main/java/com/iluwatar/bytecode/App.java +++ b/bytecode/src/main/java/com/iluwatar/bytecode/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bytecode; import com.iluwatar.bytecode.util.InstructionConverterUtil; diff --git a/bytecode/src/main/java/com/iluwatar/bytecode/Instruction.java b/bytecode/src/main/java/com/iluwatar/bytecode/Instruction.java index 82ade960623a..99b632ed853e 100644 --- a/bytecode/src/main/java/com/iluwatar/bytecode/Instruction.java +++ b/bytecode/src/main/java/com/iluwatar/bytecode/Instruction.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bytecode; /** diff --git a/bytecode/src/main/java/com/iluwatar/bytecode/VirtualMachine.java b/bytecode/src/main/java/com/iluwatar/bytecode/VirtualMachine.java index 324085d81ffa..c6b120963284 100644 --- a/bytecode/src/main/java/com/iluwatar/bytecode/VirtualMachine.java +++ b/bytecode/src/main/java/com/iluwatar/bytecode/VirtualMachine.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bytecode; import java.util.Stack; diff --git a/bytecode/src/main/java/com/iluwatar/bytecode/Wizard.java b/bytecode/src/main/java/com/iluwatar/bytecode/Wizard.java index 6e0a9ee41106..434a1bddd1e8 100644 --- a/bytecode/src/main/java/com/iluwatar/bytecode/Wizard.java +++ b/bytecode/src/main/java/com/iluwatar/bytecode/Wizard.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bytecode; import org.slf4j.Logger; diff --git a/bytecode/src/main/java/com/iluwatar/bytecode/util/InstructionConverterUtil.java b/bytecode/src/main/java/com/iluwatar/bytecode/util/InstructionConverterUtil.java index 3905d692fa22..bdc0782dd593 100644 --- a/bytecode/src/main/java/com/iluwatar/bytecode/util/InstructionConverterUtil.java +++ b/bytecode/src/main/java/com/iluwatar/bytecode/util/InstructionConverterUtil.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bytecode.util; import com.iluwatar.bytecode.Instruction; diff --git a/bytecode/src/test/java/com/iluwatar/bytecode/AppTest.java b/bytecode/src/test/java/com/iluwatar/bytecode/AppTest.java index ae212b71c5d3..6ab29c95c884 100644 --- a/bytecode/src/test/java/com/iluwatar/bytecode/AppTest.java +++ b/bytecode/src/test/java/com/iluwatar/bytecode/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bytecode; import org.junit.jupiter.api.Test; diff --git a/bytecode/src/test/java/com/iluwatar/bytecode/VirtualMachineTest.java b/bytecode/src/test/java/com/iluwatar/bytecode/VirtualMachineTest.java index fbb3064b22b5..837c40582b1d 100644 --- a/bytecode/src/test/java/com/iluwatar/bytecode/VirtualMachineTest.java +++ b/bytecode/src/test/java/com/iluwatar/bytecode/VirtualMachineTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bytecode; import org.junit.jupiter.api.Test; diff --git a/bytecode/src/test/java/com/iluwatar/bytecode/util/InstructionConverterUtilTest.java b/bytecode/src/test/java/com/iluwatar/bytecode/util/InstructionConverterUtilTest.java index ff52ae4518ac..8c0437629b2e 100644 --- a/bytecode/src/test/java/com/iluwatar/bytecode/util/InstructionConverterUtilTest.java +++ b/bytecode/src/test/java/com/iluwatar/bytecode/util/InstructionConverterUtilTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.bytecode.util; import com.iluwatar.bytecode.Instruction; diff --git a/caching/src/main/java/com/iluwatar/caching/App.java b/caching/src/main/java/com/iluwatar/caching/App.java index 699ee983267c..4ef12b7de784 100644 --- a/caching/src/main/java/com/iluwatar/caching/App.java +++ b/caching/src/main/java/com/iluwatar/caching/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.caching; import org.slf4j.Logger; diff --git a/caching/src/main/java/com/iluwatar/caching/AppManager.java b/caching/src/main/java/com/iluwatar/caching/AppManager.java index 2545110e2146..6939c6b80b79 100644 --- a/caching/src/main/java/com/iluwatar/caching/AppManager.java +++ b/caching/src/main/java/com/iluwatar/caching/AppManager.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.caching; import java.text.ParseException; diff --git a/caching/src/main/java/com/iluwatar/caching/CacheStore.java b/caching/src/main/java/com/iluwatar/caching/CacheStore.java index 8871f8648605..e221f16e7878 100644 --- a/caching/src/main/java/com/iluwatar/caching/CacheStore.java +++ b/caching/src/main/java/com/iluwatar/caching/CacheStore.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.caching; import org.slf4j.Logger; diff --git a/caching/src/main/java/com/iluwatar/caching/CachingPolicy.java b/caching/src/main/java/com/iluwatar/caching/CachingPolicy.java index fe5829919507..23be7d7e2b2d 100644 --- a/caching/src/main/java/com/iluwatar/caching/CachingPolicy.java +++ b/caching/src/main/java/com/iluwatar/caching/CachingPolicy.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.caching; /** diff --git a/caching/src/main/java/com/iluwatar/caching/DbManager.java b/caching/src/main/java/com/iluwatar/caching/DbManager.java index 434d9281b340..01b727fa540e 100644 --- a/caching/src/main/java/com/iluwatar/caching/DbManager.java +++ b/caching/src/main/java/com/iluwatar/caching/DbManager.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.caching; import java.text.ParseException; diff --git a/caching/src/main/java/com/iluwatar/caching/LruCache.java b/caching/src/main/java/com/iluwatar/caching/LruCache.java index 346a5ad448cf..0f2e53823a0a 100644 --- a/caching/src/main/java/com/iluwatar/caching/LruCache.java +++ b/caching/src/main/java/com/iluwatar/caching/LruCache.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.caching; import org.slf4j.Logger; diff --git a/caching/src/main/java/com/iluwatar/caching/UserAccount.java b/caching/src/main/java/com/iluwatar/caching/UserAccount.java index f64b5952c056..fc6b8cb4c5eb 100644 --- a/caching/src/main/java/com/iluwatar/caching/UserAccount.java +++ b/caching/src/main/java/com/iluwatar/caching/UserAccount.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.caching; /** diff --git a/caching/src/main/java/com/iluwatar/caching/constants/CachingConstants.java b/caching/src/main/java/com/iluwatar/caching/constants/CachingConstants.java index 514a1e7f7bbd..7e53f61f0cf6 100644 --- a/caching/src/main/java/com/iluwatar/caching/constants/CachingConstants.java +++ b/caching/src/main/java/com/iluwatar/caching/constants/CachingConstants.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.caching.constants; /** diff --git a/caching/src/test/java/com/iluwatar/caching/AppTest.java b/caching/src/test/java/com/iluwatar/caching/AppTest.java index 61b65544cf98..cb696f804606 100644 --- a/caching/src/test/java/com/iluwatar/caching/AppTest.java +++ b/caching/src/test/java/com/iluwatar/caching/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.caching; import org.junit.jupiter.api.Test; diff --git a/caching/src/test/java/com/iluwatar/caching/CachingTest.java b/caching/src/test/java/com/iluwatar/caching/CachingTest.java index e978d31a2a2c..ed6004429df8 100644 --- a/caching/src/test/java/com/iluwatar/caching/CachingTest.java +++ b/caching/src/test/java/com/iluwatar/caching/CachingTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.caching; import org.junit.jupiter.api.BeforeEach; diff --git a/callback/src/main/java/com/iluwatar/callback/App.java b/callback/src/main/java/com/iluwatar/callback/App.java index 4fa546fe693a..3a9cd00cb185 100644 --- a/callback/src/main/java/com/iluwatar/callback/App.java +++ b/callback/src/main/java/com/iluwatar/callback/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.callback; import org.slf4j.Logger; diff --git a/callback/src/main/java/com/iluwatar/callback/Callback.java b/callback/src/main/java/com/iluwatar/callback/Callback.java index d871e3345861..15f08366275d 100644 --- a/callback/src/main/java/com/iluwatar/callback/Callback.java +++ b/callback/src/main/java/com/iluwatar/callback/Callback.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.callback; /** diff --git a/callback/src/main/java/com/iluwatar/callback/LambdasApp.java b/callback/src/main/java/com/iluwatar/callback/LambdasApp.java index d6cd5d22c148..2b445d9ca440 100644 --- a/callback/src/main/java/com/iluwatar/callback/LambdasApp.java +++ b/callback/src/main/java/com/iluwatar/callback/LambdasApp.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.callback; import org.slf4j.Logger; diff --git a/callback/src/main/java/com/iluwatar/callback/SimpleTask.java b/callback/src/main/java/com/iluwatar/callback/SimpleTask.java index 9b0c16fc5cc4..155d1e96dad7 100644 --- a/callback/src/main/java/com/iluwatar/callback/SimpleTask.java +++ b/callback/src/main/java/com/iluwatar/callback/SimpleTask.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.callback; import org.slf4j.Logger; diff --git a/callback/src/main/java/com/iluwatar/callback/Task.java b/callback/src/main/java/com/iluwatar/callback/Task.java index b8257e1fcb1f..9f2abe85fa21 100644 --- a/callback/src/main/java/com/iluwatar/callback/Task.java +++ b/callback/src/main/java/com/iluwatar/callback/Task.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.callback; /** diff --git a/callback/src/test/java/com/iluwatar/callback/AppTest.java b/callback/src/test/java/com/iluwatar/callback/AppTest.java index 1d7c96f91740..e954d8f04fc2 100644 --- a/callback/src/test/java/com/iluwatar/callback/AppTest.java +++ b/callback/src/test/java/com/iluwatar/callback/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.callback; import org.junit.jupiter.api.Test; diff --git a/callback/src/test/java/com/iluwatar/callback/CallbackTest.java b/callback/src/test/java/com/iluwatar/callback/CallbackTest.java index 5f07e4690cd1..7f424f79dfc0 100644 --- a/callback/src/test/java/com/iluwatar/callback/CallbackTest.java +++ b/callback/src/test/java/com/iluwatar/callback/CallbackTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.callback; import org.junit.jupiter.api.Test; diff --git a/chain/src/main/java/com/iluwatar/chain/App.java b/chain/src/main/java/com/iluwatar/chain/App.java index b696ff6e989a..c45d682769bf 100644 --- a/chain/src/main/java/com/iluwatar/chain/App.java +++ b/chain/src/main/java/com/iluwatar/chain/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.chain; /** diff --git a/chain/src/main/java/com/iluwatar/chain/OrcCommander.java b/chain/src/main/java/com/iluwatar/chain/OrcCommander.java index 23abddfccf1d..4770eafcb624 100644 --- a/chain/src/main/java/com/iluwatar/chain/OrcCommander.java +++ b/chain/src/main/java/com/iluwatar/chain/OrcCommander.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.chain; /** diff --git a/chain/src/main/java/com/iluwatar/chain/OrcKing.java b/chain/src/main/java/com/iluwatar/chain/OrcKing.java index 143a02a9dc3a..39243d0fdc5c 100644 --- a/chain/src/main/java/com/iluwatar/chain/OrcKing.java +++ b/chain/src/main/java/com/iluwatar/chain/OrcKing.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.chain; /** diff --git a/chain/src/main/java/com/iluwatar/chain/OrcOfficer.java b/chain/src/main/java/com/iluwatar/chain/OrcOfficer.java index 363b5505499b..6cf78b11dcb7 100644 --- a/chain/src/main/java/com/iluwatar/chain/OrcOfficer.java +++ b/chain/src/main/java/com/iluwatar/chain/OrcOfficer.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.chain; /** diff --git a/chain/src/main/java/com/iluwatar/chain/OrcSoldier.java b/chain/src/main/java/com/iluwatar/chain/OrcSoldier.java index dcb3b78a86c5..686840d9548f 100644 --- a/chain/src/main/java/com/iluwatar/chain/OrcSoldier.java +++ b/chain/src/main/java/com/iluwatar/chain/OrcSoldier.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.chain; /** diff --git a/chain/src/main/java/com/iluwatar/chain/Request.java b/chain/src/main/java/com/iluwatar/chain/Request.java index 0afb681e5058..c8962aafa954 100644 --- a/chain/src/main/java/com/iluwatar/chain/Request.java +++ b/chain/src/main/java/com/iluwatar/chain/Request.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.chain; import java.util.Objects; diff --git a/chain/src/main/java/com/iluwatar/chain/RequestHandler.java b/chain/src/main/java/com/iluwatar/chain/RequestHandler.java index de43e23a54a8..aed5c0611cd6 100644 --- a/chain/src/main/java/com/iluwatar/chain/RequestHandler.java +++ b/chain/src/main/java/com/iluwatar/chain/RequestHandler.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.chain; import org.slf4j.Logger; diff --git a/chain/src/main/java/com/iluwatar/chain/RequestType.java b/chain/src/main/java/com/iluwatar/chain/RequestType.java index 03391bef258e..4e377a2b6215 100644 --- a/chain/src/main/java/com/iluwatar/chain/RequestType.java +++ b/chain/src/main/java/com/iluwatar/chain/RequestType.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.chain; /** diff --git a/chain/src/test/java/com/iluwatar/chain/AppTest.java b/chain/src/test/java/com/iluwatar/chain/AppTest.java index d7964c86d2ad..da73476eaa1b 100644 --- a/chain/src/test/java/com/iluwatar/chain/AppTest.java +++ b/chain/src/test/java/com/iluwatar/chain/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.chain; import org.junit.jupiter.api.Test; diff --git a/chain/src/test/java/com/iluwatar/chain/OrcKingTest.java b/chain/src/test/java/com/iluwatar/chain/OrcKingTest.java index 7e9c2a7071b2..cf957f119900 100644 --- a/chain/src/test/java/com/iluwatar/chain/OrcKingTest.java +++ b/chain/src/test/java/com/iluwatar/chain/OrcKingTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.chain; import org.junit.jupiter.api.Test; diff --git a/circuit-breaker/pom.xml b/circuit-breaker/pom.xml index b6587b061f7a..6ef7da2236a2 100644 --- a/circuit-breaker/pom.xml +++ b/circuit-breaker/pom.xml @@ -1,7 +1,7 @@ + + + + /* + * + */EOL + (\\s|\\t)*/\\*.*$ + .*\\*/(\\s|\\t)*$ + false + true + false + + diff --git a/marker/src/main/java/App.java b/marker/src/main/java/App.java index 2958b993f7b5..93697e6ebf40 100644 --- a/marker/src/main/java/App.java +++ b/marker/src/main/java/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/marker/src/main/java/Guard.java b/marker/src/main/java/Guard.java index 9f7ba7e76090..d135d54598f4 100644 --- a/marker/src/main/java/Guard.java +++ b/marker/src/main/java/Guard.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/marker/src/main/java/Permission.java b/marker/src/main/java/Permission.java index 369173cb5266..e1b45e99f7f4 100644 --- a/marker/src/main/java/Permission.java +++ b/marker/src/main/java/Permission.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + /** * Interface without any methods * Marker interface is based on that assumption diff --git a/marker/src/main/java/Thief.java b/marker/src/main/java/Thief.java index 11be5828b7eb..155a974c19d3 100644 --- a/marker/src/main/java/Thief.java +++ b/marker/src/main/java/Thief.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/marker/src/test/java/AppTest.java b/marker/src/test/java/AppTest.java index c658caba07d5..5d63db0ad8d6 100644 --- a/marker/src/test/java/AppTest.java +++ b/marker/src/test/java/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + import org.junit.jupiter.api.Test; /** diff --git a/marker/src/test/java/GuardTest.java b/marker/src/test/java/GuardTest.java index 9ab5ac018fb3..615d4e129886 100644 --- a/marker/src/test/java/GuardTest.java +++ b/marker/src/test/java/GuardTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + import org.junit.jupiter.api.Test; import static org.hamcrest.CoreMatchers.instanceOf; diff --git a/marker/src/test/java/ThiefTest.java b/marker/src/test/java/ThiefTest.java index 813ebe907609..2732fc78a965 100644 --- a/marker/src/test/java/ThiefTest.java +++ b/marker/src/test/java/ThiefTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/App.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/App.java index 46c0baf8d16c..e3ffd08c4d44 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/App.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker; import com.iluwatar.masterworker.system.ArrayTransposeMasterWorker; diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayInput.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayInput.java index fcd4ab977eb7..df2d691b26eb 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayInput.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayInput.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker; import java.util.ArrayList; diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayResult.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayResult.java index 47c0d364a0f7..dbe4f7477c12 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayResult.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayResult.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker; /** diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java index 576ffb6bf000..04db66492a13 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker; import org.slf4j.Logger; diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/Input.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/Input.java index 6e89e9476bf8..d0d0c2ddeac4 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/Input.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/Input.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker; import java.util.ArrayList; diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/Result.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/Result.java index 0e73e21b3f04..1bc729aa9228 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/Result.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/Result.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker; /** diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/ArrayTransposeMasterWorker.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/ArrayTransposeMasterWorker.java index aba8c92d62b9..76e9ff35ab08 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/ArrayTransposeMasterWorker.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/ArrayTransposeMasterWorker.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker.system; import com.iluwatar.masterworker.system.systemmaster.ArrayTransposeMaster; diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/MasterWorker.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/MasterWorker.java index 142b5fd7c2cc..009faf106536 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/MasterWorker.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/MasterWorker.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker.system; import com.iluwatar.masterworker.Input; diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/ArrayTransposeMaster.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/ArrayTransposeMaster.java index 81068878b984..0a3ab79b7cc1 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/ArrayTransposeMaster.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/ArrayTransposeMaster.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker.system.systemmaster; import java.util.ArrayList; diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java index 4a2d98f34093..7e7d796eb718 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker.system.systemmaster; import java.util.ArrayList; diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorker.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorker.java index 9820284657d6..1d06fcc875da 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorker.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorker.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker.system.systemworkers; import com.iluwatar.masterworker.ArrayInput; diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/Worker.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/Worker.java index 99c769a4a087..fff38e953216 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/Worker.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/Worker.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker.system.systemworkers; import com.iluwatar.masterworker.Input; diff --git a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayInputTest.java b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayInputTest.java index 46b2cce9d27a..b5820e2af931 100644 --- a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayInputTest.java +++ b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayInputTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker; import static org.junit.jupiter.api.Assertions.*; diff --git a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayUtilityMethodsTest.java b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayUtilityMethodsTest.java index 72282b0df825..aae784b527b5 100644 --- a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayUtilityMethodsTest.java +++ b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayUtilityMethodsTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker; import static org.junit.jupiter.api.Assertions.*; diff --git a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/ArrayTransposeMasterWorkerTest.java b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/ArrayTransposeMasterWorkerTest.java index fd97b37ad457..b80d7881f991 100644 --- a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/ArrayTransposeMasterWorkerTest.java +++ b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/ArrayTransposeMasterWorkerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker.system; import static org.junit.jupiter.api.Assertions.*; diff --git a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorkerTest.java b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorkerTest.java index e1f0433c9fa0..3e5f581b93cf 100644 --- a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorkerTest.java +++ b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorkerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.masterworker.system.systemworkers; import static org.junit.jupiter.api.Assertions.*; diff --git a/mediator/src/main/java/com/iluwatar/mediator/Action.java b/mediator/src/main/java/com/iluwatar/mediator/Action.java index 479f86d55fc9..dc89bcfdcd88 100644 --- a/mediator/src/main/java/com/iluwatar/mediator/Action.java +++ b/mediator/src/main/java/com/iluwatar/mediator/Action.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mediator; /** diff --git a/mediator/src/main/java/com/iluwatar/mediator/App.java b/mediator/src/main/java/com/iluwatar/mediator/App.java index 8fd981e80493..9af600f7cc5e 100644 --- a/mediator/src/main/java/com/iluwatar/mediator/App.java +++ b/mediator/src/main/java/com/iluwatar/mediator/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mediator; /** diff --git a/mediator/src/main/java/com/iluwatar/mediator/Hobbit.java b/mediator/src/main/java/com/iluwatar/mediator/Hobbit.java index d47cd997e5a8..1ddec27ab3a9 100644 --- a/mediator/src/main/java/com/iluwatar/mediator/Hobbit.java +++ b/mediator/src/main/java/com/iluwatar/mediator/Hobbit.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mediator; /** diff --git a/mediator/src/main/java/com/iluwatar/mediator/Hunter.java b/mediator/src/main/java/com/iluwatar/mediator/Hunter.java index 5e7a703f5f51..ed73c1684ccb 100644 --- a/mediator/src/main/java/com/iluwatar/mediator/Hunter.java +++ b/mediator/src/main/java/com/iluwatar/mediator/Hunter.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mediator; /** diff --git a/mediator/src/main/java/com/iluwatar/mediator/Party.java b/mediator/src/main/java/com/iluwatar/mediator/Party.java index a4e9f6348e65..c28b063f35b8 100644 --- a/mediator/src/main/java/com/iluwatar/mediator/Party.java +++ b/mediator/src/main/java/com/iluwatar/mediator/Party.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mediator; /** diff --git a/mediator/src/main/java/com/iluwatar/mediator/PartyImpl.java b/mediator/src/main/java/com/iluwatar/mediator/PartyImpl.java index 31bdbf019c4e..a2a755408620 100644 --- a/mediator/src/main/java/com/iluwatar/mediator/PartyImpl.java +++ b/mediator/src/main/java/com/iluwatar/mediator/PartyImpl.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mediator; import java.util.ArrayList; diff --git a/mediator/src/main/java/com/iluwatar/mediator/PartyMember.java b/mediator/src/main/java/com/iluwatar/mediator/PartyMember.java index 815614ebbb6d..a45b37b17cd3 100644 --- a/mediator/src/main/java/com/iluwatar/mediator/PartyMember.java +++ b/mediator/src/main/java/com/iluwatar/mediator/PartyMember.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mediator; /** diff --git a/mediator/src/main/java/com/iluwatar/mediator/PartyMemberBase.java b/mediator/src/main/java/com/iluwatar/mediator/PartyMemberBase.java index c5825e0d9eb8..7ff3535e85d4 100644 --- a/mediator/src/main/java/com/iluwatar/mediator/PartyMemberBase.java +++ b/mediator/src/main/java/com/iluwatar/mediator/PartyMemberBase.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mediator; import org.slf4j.Logger; diff --git a/mediator/src/main/java/com/iluwatar/mediator/Rogue.java b/mediator/src/main/java/com/iluwatar/mediator/Rogue.java index 551c51037c50..226bd8f04c4f 100644 --- a/mediator/src/main/java/com/iluwatar/mediator/Rogue.java +++ b/mediator/src/main/java/com/iluwatar/mediator/Rogue.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mediator; /** diff --git a/mediator/src/main/java/com/iluwatar/mediator/Wizard.java b/mediator/src/main/java/com/iluwatar/mediator/Wizard.java index 61e9b15401a4..33d7d6dce511 100644 --- a/mediator/src/main/java/com/iluwatar/mediator/Wizard.java +++ b/mediator/src/main/java/com/iluwatar/mediator/Wizard.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mediator; /** diff --git a/mediator/src/test/java/com/iluwatar/mediator/AppTest.java b/mediator/src/test/java/com/iluwatar/mediator/AppTest.java index 8a24bb76d5ba..3a55d51d8e53 100644 --- a/mediator/src/test/java/com/iluwatar/mediator/AppTest.java +++ b/mediator/src/test/java/com/iluwatar/mediator/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mediator; import org.junit.jupiter.api.Test; diff --git a/mediator/src/test/java/com/iluwatar/mediator/PartyImplTest.java b/mediator/src/test/java/com/iluwatar/mediator/PartyImplTest.java index 2090403062b1..5d2446545eac 100644 --- a/mediator/src/test/java/com/iluwatar/mediator/PartyImplTest.java +++ b/mediator/src/test/java/com/iluwatar/mediator/PartyImplTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mediator; import org.junit.jupiter.api.Test; diff --git a/mediator/src/test/java/com/iluwatar/mediator/PartyMemberTest.java b/mediator/src/test/java/com/iluwatar/mediator/PartyMemberTest.java index b9baac60d6b1..b7092347b840 100644 --- a/mediator/src/test/java/com/iluwatar/mediator/PartyMemberTest.java +++ b/mediator/src/test/java/com/iluwatar/mediator/PartyMemberTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mediator; import ch.qos.logback.classic.Logger; diff --git a/memento/src/main/java/com/iluwatar/memento/App.java b/memento/src/main/java/com/iluwatar/memento/App.java index 64c283bdc790..fc6dffb06cb6 100644 --- a/memento/src/main/java/com/iluwatar/memento/App.java +++ b/memento/src/main/java/com/iluwatar/memento/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.memento; import org.slf4j.Logger; diff --git a/memento/src/main/java/com/iluwatar/memento/Star.java b/memento/src/main/java/com/iluwatar/memento/Star.java index 06b24448a9d9..0e235752ec4e 100644 --- a/memento/src/main/java/com/iluwatar/memento/Star.java +++ b/memento/src/main/java/com/iluwatar/memento/Star.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.memento; /** diff --git a/memento/src/main/java/com/iluwatar/memento/StarMemento.java b/memento/src/main/java/com/iluwatar/memento/StarMemento.java index fe5b26a58483..b94f5996a9db 100644 --- a/memento/src/main/java/com/iluwatar/memento/StarMemento.java +++ b/memento/src/main/java/com/iluwatar/memento/StarMemento.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.memento; /** diff --git a/memento/src/main/java/com/iluwatar/memento/StarType.java b/memento/src/main/java/com/iluwatar/memento/StarType.java index a7bea6be861b..29da625799ce 100644 --- a/memento/src/main/java/com/iluwatar/memento/StarType.java +++ b/memento/src/main/java/com/iluwatar/memento/StarType.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.memento; /** diff --git a/memento/src/test/java/com/iluwatar/memento/AppTest.java b/memento/src/test/java/com/iluwatar/memento/AppTest.java index d432c9e8e724..074de2c41606 100644 --- a/memento/src/test/java/com/iluwatar/memento/AppTest.java +++ b/memento/src/test/java/com/iluwatar/memento/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.memento; import org.junit.jupiter.api.Test; diff --git a/memento/src/test/java/com/iluwatar/memento/StarTest.java b/memento/src/test/java/com/iluwatar/memento/StarTest.java index bf9c3dacad8d..40adb99e198f 100644 --- a/memento/src/test/java/com/iluwatar/memento/StarTest.java +++ b/memento/src/test/java/com/iluwatar/memento/StarTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.memento; import org.junit.jupiter.api.Test; diff --git a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/App.java b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/App.java index cede84db2c7c..b4bc8f6ca4a6 100644 --- a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/App.java +++ b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.controller; /** diff --git a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Fatigue.java b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Fatigue.java index 300c23ab4213..7f0fd293741c 100644 --- a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Fatigue.java +++ b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Fatigue.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.controller; /** diff --git a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/GiantController.java b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/GiantController.java index 4efc6c8b8eea..e420ec890870 100644 --- a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/GiantController.java +++ b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/GiantController.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.controller; /** diff --git a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/GiantModel.java b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/GiantModel.java index bce81cb70f57..4ae2c4c195ba 100644 --- a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/GiantModel.java +++ b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/GiantModel.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.controller; /** diff --git a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/GiantView.java b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/GiantView.java index 39db87991ebe..9590d609d61f 100644 --- a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/GiantView.java +++ b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/GiantView.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.controller; import org.slf4j.Logger; diff --git a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Health.java b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Health.java index 84f402943d07..c8b9374bf43b 100644 --- a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Health.java +++ b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Health.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.controller; /** diff --git a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Nourishment.java b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Nourishment.java index c56e22b2dcf2..9810b201565b 100644 --- a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Nourishment.java +++ b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Nourishment.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.controller; /** diff --git a/model-view-controller/src/test/java/com/iluwatar/model/view/controller/AppTest.java b/model-view-controller/src/test/java/com/iluwatar/model/view/controller/AppTest.java index 0d2af602d118..e6d2d9a0b71a 100644 --- a/model-view-controller/src/test/java/com/iluwatar/model/view/controller/AppTest.java +++ b/model-view-controller/src/test/java/com/iluwatar/model/view/controller/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.controller; import org.junit.jupiter.api.Test; diff --git a/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantControllerTest.java b/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantControllerTest.java index 86026e441fe1..a2f42a80dfa4 100644 --- a/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantControllerTest.java +++ b/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantControllerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.controller; import org.junit.jupiter.api.Test; diff --git a/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantModelTest.java b/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantModelTest.java index ee89b71b363b..a566010cd938 100644 --- a/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantModelTest.java +++ b/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantModelTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.controller; import org.junit.jupiter.api.Test; diff --git a/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantViewTest.java b/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantViewTest.java index a492a4493f01..a3e33f9dd9d8 100644 --- a/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantViewTest.java +++ b/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantViewTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.controller; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/App.java b/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/App.java index 058fb5996ea4..9b6e6cde833f 100644 --- a/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/App.java +++ b/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.presenter; /** diff --git a/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileLoader.java b/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileLoader.java index eee206faefd7..980c0b56c2e9 100644 --- a/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileLoader.java +++ b/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileLoader.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.presenter; import java.io.BufferedReader; diff --git a/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorJFrame.java b/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorJFrame.java index d82ce553bee1..3d9bc035a5ad 100644 --- a/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorJFrame.java +++ b/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorJFrame.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.presenter; import java.awt.Color; diff --git a/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorPresenter.java b/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorPresenter.java index 315ac43be549..a9cf1ba80a4c 100644 --- a/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorPresenter.java +++ b/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorPresenter.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.presenter; import java.io.Serializable; diff --git a/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorStub.java b/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorStub.java index ecf724e3fb25..d034bcb04563 100644 --- a/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorStub.java +++ b/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorStub.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.presenter; /** diff --git a/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorView.java b/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorView.java index 8c03a446842f..3deec63d9692 100644 --- a/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorView.java +++ b/model-view-presenter/src/main/java/com/iluwatar/model/view/presenter/FileSelectorView.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.presenter; import java.io.Serializable; diff --git a/model-view-presenter/src/test/java/com/iluwatar/model/view/presenter/AppTest.java b/model-view-presenter/src/test/java/com/iluwatar/model/view/presenter/AppTest.java index 6d9840bac999..00e35ae1b6f8 100644 --- a/model-view-presenter/src/test/java/com/iluwatar/model/view/presenter/AppTest.java +++ b/model-view-presenter/src/test/java/com/iluwatar/model/view/presenter/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.presenter; import org.junit.jupiter.api.Test; diff --git a/model-view-presenter/src/test/java/com/iluwatar/model/view/presenter/FileLoaderTest.java b/model-view-presenter/src/test/java/com/iluwatar/model/view/presenter/FileLoaderTest.java index 3d57e63ebee5..a63ca5ae8e02 100644 --- a/model-view-presenter/src/test/java/com/iluwatar/model/view/presenter/FileLoaderTest.java +++ b/model-view-presenter/src/test/java/com/iluwatar/model/view/presenter/FileLoaderTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.presenter; import org.junit.jupiter.api.Test; diff --git a/model-view-presenter/src/test/java/com/iluwatar/model/view/presenter/FileSelectorPresenterTest.java b/model-view-presenter/src/test/java/com/iluwatar/model/view/presenter/FileSelectorPresenterTest.java index 351452868e9b..fdc19398d792 100644 --- a/model-view-presenter/src/test/java/com/iluwatar/model/view/presenter/FileSelectorPresenterTest.java +++ b/model-view-presenter/src/test/java/com/iluwatar/model/view/presenter/FileSelectorPresenterTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.model.view.presenter; import org.junit.jupiter.api.BeforeEach; diff --git a/module/src/main/java/com/iluwatar/module/App.java b/module/src/main/java/com/iluwatar/module/App.java index 69279d0f77d4..af0432afb9af 100644 --- a/module/src/main/java/com/iluwatar/module/App.java +++ b/module/src/main/java/com/iluwatar/module/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.module; import java.io.FileNotFoundException; diff --git a/module/src/main/java/com/iluwatar/module/ConsoleLoggerModule.java b/module/src/main/java/com/iluwatar/module/ConsoleLoggerModule.java index 12eaae1d9be4..6e6d0539d0ba 100644 --- a/module/src/main/java/com/iluwatar/module/ConsoleLoggerModule.java +++ b/module/src/main/java/com/iluwatar/module/ConsoleLoggerModule.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.module; import org.slf4j.Logger; diff --git a/module/src/main/java/com/iluwatar/module/FileLoggerModule.java b/module/src/main/java/com/iluwatar/module/FileLoggerModule.java index 65f954b6cccd..e461b31d7572 100644 --- a/module/src/main/java/com/iluwatar/module/FileLoggerModule.java +++ b/module/src/main/java/com/iluwatar/module/FileLoggerModule.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.module; import org.slf4j.Logger; diff --git a/module/src/test/java/com/iluwatar/module/AppTest.java b/module/src/test/java/com/iluwatar/module/AppTest.java index 4236e422411f..88fa4c68c3db 100644 --- a/module/src/test/java/com/iluwatar/module/AppTest.java +++ b/module/src/test/java/com/iluwatar/module/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.module; import org.junit.jupiter.api.Test; diff --git a/module/src/test/java/com/iluwatar/module/FileLoggerModuleTest.java b/module/src/test/java/com/iluwatar/module/FileLoggerModuleTest.java index 30f0baae5703..e88b466f2438 100644 --- a/module/src/test/java/com/iluwatar/module/FileLoggerModuleTest.java +++ b/module/src/test/java/com/iluwatar/module/FileLoggerModuleTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.module; import org.junit.jupiter.api.Test; diff --git a/monad/src/main/java/com/iluwatar/monad/App.java b/monad/src/main/java/com/iluwatar/monad/App.java index 7c3efe70b2d1..94e46548744c 100644 --- a/monad/src/main/java/com/iluwatar/monad/App.java +++ b/monad/src/main/java/com/iluwatar/monad/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.monad; import org.slf4j.Logger; diff --git a/monad/src/main/java/com/iluwatar/monad/Sex.java b/monad/src/main/java/com/iluwatar/monad/Sex.java index a34dbc6928a5..960711656021 100644 --- a/monad/src/main/java/com/iluwatar/monad/Sex.java +++ b/monad/src/main/java/com/iluwatar/monad/Sex.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.monad; /** diff --git a/monad/src/main/java/com/iluwatar/monad/User.java b/monad/src/main/java/com/iluwatar/monad/User.java index 7ade709de9c9..9ecaa527539c 100644 --- a/monad/src/main/java/com/iluwatar/monad/User.java +++ b/monad/src/main/java/com/iluwatar/monad/User.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.monad; /** diff --git a/monad/src/main/java/com/iluwatar/monad/Validator.java b/monad/src/main/java/com/iluwatar/monad/Validator.java index c30427e7140b..b5618f91c390 100644 --- a/monad/src/main/java/com/iluwatar/monad/Validator.java +++ b/monad/src/main/java/com/iluwatar/monad/Validator.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.monad; import java.util.ArrayList; diff --git a/monad/src/test/java/com/iluwatar/monad/AppTest.java b/monad/src/test/java/com/iluwatar/monad/AppTest.java index 2ffead426296..f4d89a7cd3dc 100644 --- a/monad/src/test/java/com/iluwatar/monad/AppTest.java +++ b/monad/src/test/java/com/iluwatar/monad/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.monad; import org.junit.jupiter.api.Test; diff --git a/monad/src/test/java/com/iluwatar/monad/MonadTest.java b/monad/src/test/java/com/iluwatar/monad/MonadTest.java index 5b8547d5acd9..d1bdd7487d9e 100644 --- a/monad/src/test/java/com/iluwatar/monad/MonadTest.java +++ b/monad/src/test/java/com/iluwatar/monad/MonadTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.monad; import org.junit.jupiter.api.Test; diff --git a/monostate/src/main/java/com/iluwatar/monostate/App.java b/monostate/src/main/java/com/iluwatar/monostate/App.java index 3e536d2b20de..4b6f8b14b64d 100644 --- a/monostate/src/main/java/com/iluwatar/monostate/App.java +++ b/monostate/src/main/java/com/iluwatar/monostate/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.monostate; diff --git a/monostate/src/main/java/com/iluwatar/monostate/LoadBalancer.java b/monostate/src/main/java/com/iluwatar/monostate/LoadBalancer.java index 23052d16b966..ae590be5ee5d 100644 --- a/monostate/src/main/java/com/iluwatar/monostate/LoadBalancer.java +++ b/monostate/src/main/java/com/iluwatar/monostate/LoadBalancer.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.monostate; import java.util.ArrayList; diff --git a/monostate/src/main/java/com/iluwatar/monostate/Request.java b/monostate/src/main/java/com/iluwatar/monostate/Request.java index 96a90dc9ed4e..5a7429998ac1 100644 --- a/monostate/src/main/java/com/iluwatar/monostate/Request.java +++ b/monostate/src/main/java/com/iluwatar/monostate/Request.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.monostate; /** diff --git a/monostate/src/main/java/com/iluwatar/monostate/Server.java b/monostate/src/main/java/com/iluwatar/monostate/Server.java index 387947824a9f..fa809864cb83 100644 --- a/monostate/src/main/java/com/iluwatar/monostate/Server.java +++ b/monostate/src/main/java/com/iluwatar/monostate/Server.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.monostate; import org.slf4j.Logger; diff --git a/monostate/src/test/java/com/iluwatar/monostate/AppTest.java b/monostate/src/test/java/com/iluwatar/monostate/AppTest.java index 4ce49f03df8a..c914f136ecaa 100644 --- a/monostate/src/test/java/com/iluwatar/monostate/AppTest.java +++ b/monostate/src/test/java/com/iluwatar/monostate/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.monostate; import org.junit.jupiter.api.Test; diff --git a/monostate/src/test/java/com/iluwatar/monostate/LoadBalancerTest.java b/monostate/src/test/java/com/iluwatar/monostate/LoadBalancerTest.java index e806696e7ce1..736bf6ea68aa 100644 --- a/monostate/src/test/java/com/iluwatar/monostate/LoadBalancerTest.java +++ b/monostate/src/test/java/com/iluwatar/monostate/LoadBalancerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.monostate; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/multiton/src/main/java/com/iluwatar/multiton/App.java b/multiton/src/main/java/com/iluwatar/multiton/App.java index daf1ea4d9530..8fb226625eae 100644 --- a/multiton/src/main/java/com/iluwatar/multiton/App.java +++ b/multiton/src/main/java/com/iluwatar/multiton/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.multiton; import org.slf4j.Logger; diff --git a/multiton/src/main/java/com/iluwatar/multiton/Nazgul.java b/multiton/src/main/java/com/iluwatar/multiton/Nazgul.java index e7f8ef65b03d..52a25e00d665 100644 --- a/multiton/src/main/java/com/iluwatar/multiton/Nazgul.java +++ b/multiton/src/main/java/com/iluwatar/multiton/Nazgul.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.multiton; import java.util.Map; diff --git a/multiton/src/main/java/com/iluwatar/multiton/NazgulEnum.java b/multiton/src/main/java/com/iluwatar/multiton/NazgulEnum.java index 7d120fed0197..f119ee68fb59 100644 --- a/multiton/src/main/java/com/iluwatar/multiton/NazgulEnum.java +++ b/multiton/src/main/java/com/iluwatar/multiton/NazgulEnum.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.multiton; /** diff --git a/multiton/src/main/java/com/iluwatar/multiton/NazgulName.java b/multiton/src/main/java/com/iluwatar/multiton/NazgulName.java index 62903c9c8286..5fe2a5a0f427 100644 --- a/multiton/src/main/java/com/iluwatar/multiton/NazgulName.java +++ b/multiton/src/main/java/com/iluwatar/multiton/NazgulName.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.multiton; /** diff --git a/multiton/src/test/java/com/iluwatar/multiton/AppTest.java b/multiton/src/test/java/com/iluwatar/multiton/AppTest.java index 8672e18157fd..f577b7f07e41 100644 --- a/multiton/src/test/java/com/iluwatar/multiton/AppTest.java +++ b/multiton/src/test/java/com/iluwatar/multiton/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.multiton; import org.junit.jupiter.api.Test; diff --git a/multiton/src/test/java/com/iluwatar/multiton/NazgulEnumTest.java b/multiton/src/test/java/com/iluwatar/multiton/NazgulEnumTest.java index 6a890777e62f..6668874f4ba7 100644 --- a/multiton/src/test/java/com/iluwatar/multiton/NazgulEnumTest.java +++ b/multiton/src/test/java/com/iluwatar/multiton/NazgulEnumTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.multiton; import static org.junit.jupiter.api.Assertions.*; diff --git a/multiton/src/test/java/com/iluwatar/multiton/NazgulTest.java b/multiton/src/test/java/com/iluwatar/multiton/NazgulTest.java index b9545dfefca8..0429f8e2939e 100644 --- a/multiton/src/test/java/com/iluwatar/multiton/NazgulTest.java +++ b/multiton/src/test/java/com/iluwatar/multiton/NazgulTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.multiton; import org.junit.jupiter.api.Test; diff --git a/mute-idiom/src/main/java/com/iluwatar/mute/App.java b/mute-idiom/src/main/java/com/iluwatar/mute/App.java index f8ac25f5c42c..28649e24990a 100644 --- a/mute-idiom/src/main/java/com/iluwatar/mute/App.java +++ b/mute-idiom/src/main/java/com/iluwatar/mute/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mute; import org.slf4j.Logger; diff --git a/mute-idiom/src/main/java/com/iluwatar/mute/CheckedRunnable.java b/mute-idiom/src/main/java/com/iluwatar/mute/CheckedRunnable.java index 9a3feefc1033..d5fdaaec2b34 100644 --- a/mute-idiom/src/main/java/com/iluwatar/mute/CheckedRunnable.java +++ b/mute-idiom/src/main/java/com/iluwatar/mute/CheckedRunnable.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mute; /** diff --git a/mute-idiom/src/main/java/com/iluwatar/mute/Mute.java b/mute-idiom/src/main/java/com/iluwatar/mute/Mute.java index 6c2c417017ae..87a1f651e77f 100644 --- a/mute-idiom/src/main/java/com/iluwatar/mute/Mute.java +++ b/mute-idiom/src/main/java/com/iluwatar/mute/Mute.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mute; import java.io.ByteArrayOutputStream; diff --git a/mute-idiom/src/main/java/com/iluwatar/mute/Resource.java b/mute-idiom/src/main/java/com/iluwatar/mute/Resource.java index 366f014b4fba..a10fe4617605 100644 --- a/mute-idiom/src/main/java/com/iluwatar/mute/Resource.java +++ b/mute-idiom/src/main/java/com/iluwatar/mute/Resource.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mute; import java.io.Closeable; diff --git a/mute-idiom/src/test/java/com/iluwatar/mute/AppTest.java b/mute-idiom/src/test/java/com/iluwatar/mute/AppTest.java index 8d2299492197..5ca525a9d9f5 100644 --- a/mute-idiom/src/test/java/com/iluwatar/mute/AppTest.java +++ b/mute-idiom/src/test/java/com/iluwatar/mute/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mute; import org.junit.jupiter.api.Test; diff --git a/mute-idiom/src/test/java/com/iluwatar/mute/MuteTest.java b/mute-idiom/src/test/java/com/iluwatar/mute/MuteTest.java index 9d946810fee0..f2743113bea1 100644 --- a/mute-idiom/src/test/java/com/iluwatar/mute/MuteTest.java +++ b/mute-idiom/src/test/java/com/iluwatar/mute/MuteTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mute; import org.junit.jupiter.api.Test; diff --git a/mutex/src/main/java/com/iluwatar/mutex/App.java b/mutex/src/main/java/com/iluwatar/mutex/App.java index 2e8f572566e9..827307d0f884 100644 --- a/mutex/src/main/java/com/iluwatar/mutex/App.java +++ b/mutex/src/main/java/com/iluwatar/mutex/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mutex; /** diff --git a/mutex/src/main/java/com/iluwatar/mutex/Jar.java b/mutex/src/main/java/com/iluwatar/mutex/Jar.java index 60236a57b728..427907f31d90 100644 --- a/mutex/src/main/java/com/iluwatar/mutex/Jar.java +++ b/mutex/src/main/java/com/iluwatar/mutex/Jar.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mutex; /** diff --git a/mutex/src/main/java/com/iluwatar/mutex/Lock.java b/mutex/src/main/java/com/iluwatar/mutex/Lock.java index aca8de4c0978..bd28c3c0884c 100644 --- a/mutex/src/main/java/com/iluwatar/mutex/Lock.java +++ b/mutex/src/main/java/com/iluwatar/mutex/Lock.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mutex; /** diff --git a/mutex/src/main/java/com/iluwatar/mutex/Mutex.java b/mutex/src/main/java/com/iluwatar/mutex/Mutex.java index 1b1bced56ad0..a2ef71f11d1f 100644 --- a/mutex/src/main/java/com/iluwatar/mutex/Mutex.java +++ b/mutex/src/main/java/com/iluwatar/mutex/Mutex.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mutex; /** diff --git a/mutex/src/main/java/com/iluwatar/mutex/Thief.java b/mutex/src/main/java/com/iluwatar/mutex/Thief.java index 1798f4673598..f88e46d96fab 100644 --- a/mutex/src/main/java/com/iluwatar/mutex/Thief.java +++ b/mutex/src/main/java/com/iluwatar/mutex/Thief.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mutex; import org.slf4j.Logger; diff --git a/mutex/src/test/java/com/iluwatar/mutex/AppTest.java b/mutex/src/test/java/com/iluwatar/mutex/AppTest.java index 4195edbc2e25..1793bf90be73 100644 --- a/mutex/src/test/java/com/iluwatar/mutex/AppTest.java +++ b/mutex/src/test/java/com/iluwatar/mutex/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mutex; import org.junit.jupiter.api.Test; diff --git a/mutex/src/test/java/com/iluwatar/mutex/JarTest.java b/mutex/src/test/java/com/iluwatar/mutex/JarTest.java index ec359aa18877..e0a316072835 100644 --- a/mutex/src/test/java/com/iluwatar/mutex/JarTest.java +++ b/mutex/src/test/java/com/iluwatar/mutex/JarTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mutex; import org.junit.jupiter.api.Test; diff --git a/mutex/src/test/java/com/iluwatar/mutex/MutexTest.java b/mutex/src/test/java/com/iluwatar/mutex/MutexTest.java index 3914e99c9994..2e3184c51be3 100644 --- a/mutex/src/test/java/com/iluwatar/mutex/MutexTest.java +++ b/mutex/src/test/java/com/iluwatar/mutex/MutexTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.mutex; import org.junit.jupiter.api.Test; diff --git a/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageService.java b/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageService.java index 910b492b4120..8c3618db88fe 100644 --- a/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageService.java +++ b/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageService.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.dom.app.homepage; import org.apache.isis.applib.DomainObjectContainer; diff --git a/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageViewModel.java b/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageViewModel.java index 6d8f87aeb977..9d845cbd6d71 100644 --- a/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageViewModel.java +++ b/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageViewModel.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.dom.app.homepage; import java.util.List; diff --git a/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObject.java b/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObject.java index b2c950e8d04f..329c4c138065 100644 --- a/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObject.java +++ b/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObject.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.dom.modules.simple; import javax.jdo.JDOHelper; diff --git a/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObjects.java b/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObjects.java index 9ef5e5395487..506bda597473 100644 --- a/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObjects.java +++ b/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObjects.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.dom.modules.simple; import java.util.List; diff --git a/naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectTest.java b/naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectTest.java index 9affd1b4f576..03ab30f7561c 100644 --- a/naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectTest.java +++ b/naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.dom.modules.simple; import static org.junit.Assert.assertEquals; diff --git a/naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectsTest.java b/naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectsTest.java index 0b1878cc2740..a95ad5aa3b7d 100644 --- a/naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectsTest.java +++ b/naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectsTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.dom.modules.simple; import com.google.common.collect.Lists; diff --git a/naked-objects/fixture/src/main/java/domainapp/fixture/DomainAppFixturesProvider.java b/naked-objects/fixture/src/main/java/domainapp/fixture/DomainAppFixturesProvider.java index 4496d2e32dd2..7a7e8c4b7bac 100644 --- a/naked-objects/fixture/src/main/java/domainapp/fixture/DomainAppFixturesProvider.java +++ b/naked-objects/fixture/src/main/java/domainapp/fixture/DomainAppFixturesProvider.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.fixture; import org.apache.isis.applib.annotation.DomainService; diff --git a/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectCreate.java b/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectCreate.java index 89eadad31f0c..4de9bfc9cf88 100644 --- a/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectCreate.java +++ b/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectCreate.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.fixture.modules.simple; import org.apache.isis.applib.fixturescripts.FixtureScript; diff --git a/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectsTearDown.java b/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectsTearDown.java index a5092c2ec70e..8fc54d0ada80 100644 --- a/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectsTearDown.java +++ b/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectsTearDown.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.fixture.modules.simple; import org.apache.isis.applib.fixturescripts.FixtureScript; diff --git a/naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java b/naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java index 33e5570a6063..2c201ead22e6 100644 --- a/naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java +++ b/naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.fixture.scenarios; import java.util.Arrays; diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java b/naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java index 930a805d5fe2..f67c268766c4 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.integtests.bootstrap; import org.apache.isis.core.commons.config.IsisConfiguration; diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java index 4b22615ecc96..b3bd973bd0e2 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.integtests.specglue; import org.apache.isis.core.specsupport.scenarios.ScenarioExecutionScope; diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/CatalogOfFixturesGlue.java b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/CatalogOfFixturesGlue.java index acc1485eca51..025c6724aa32 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/CatalogOfFixturesGlue.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/CatalogOfFixturesGlue.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.integtests.specglue; import org.apache.isis.core.specsupport.specs.CukeGlueAbstract; diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/modules/simple/SimpleObjectGlue.java b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/modules/simple/SimpleObjectGlue.java index 6c98b008c462..7b508faf38cf 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/modules/simple/SimpleObjectGlue.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/modules/simple/SimpleObjectGlue.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.integtests.specglue.modules.simple; import static org.hamcrest.CoreMatchers.is; diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/specs/RunSpecs.java b/naked-objects/integtests/src/test/java/domainapp/integtests/specs/RunSpecs.java index 8f197985d6b5..d92cfa88185c 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/specs/RunSpecs.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/specs/RunSpecs.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.integtests.specs; import org.junit.runner.RunWith; diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java index 0c19714253ba..24d8d207ce02 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.integtests.tests; import org.junit.BeforeClass; diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectIntegTest.java b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectIntegTest.java index 0fc7c8f0b0e1..11ff6a47d400 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectIntegTest.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectIntegTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.integtests.tests.modules.simple; import static org.junit.Assert.assertEquals; diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectsIntegTest.java b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectsIntegTest.java index a150bdb5a726..c762dd88f9b5 100644 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectsIntegTest.java +++ b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectsIntegTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.integtests.tests.modules.simple; import static org.junit.Assert.assertEquals; diff --git a/naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java b/naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java index 875212963b67..649aea7fd743 100644 --- a/naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java +++ b/naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package domainapp.webapp; import java.io.IOException; diff --git a/null-object/src/main/java/com/iluwatar/nullobject/App.java b/null-object/src/main/java/com/iluwatar/nullobject/App.java index 11c646d43ac4..9e5a1412b317 100644 --- a/null-object/src/main/java/com/iluwatar/nullobject/App.java +++ b/null-object/src/main/java/com/iluwatar/nullobject/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.nullobject; /** diff --git a/null-object/src/main/java/com/iluwatar/nullobject/Node.java b/null-object/src/main/java/com/iluwatar/nullobject/Node.java index 5d74ff70f737..61423778c397 100644 --- a/null-object/src/main/java/com/iluwatar/nullobject/Node.java +++ b/null-object/src/main/java/com/iluwatar/nullobject/Node.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.nullobject; /** diff --git a/null-object/src/main/java/com/iluwatar/nullobject/NodeImpl.java b/null-object/src/main/java/com/iluwatar/nullobject/NodeImpl.java index 240bea929858..c44c26fb9284 100644 --- a/null-object/src/main/java/com/iluwatar/nullobject/NodeImpl.java +++ b/null-object/src/main/java/com/iluwatar/nullobject/NodeImpl.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.nullobject; import org.slf4j.Logger; diff --git a/null-object/src/main/java/com/iluwatar/nullobject/NullNode.java b/null-object/src/main/java/com/iluwatar/nullobject/NullNode.java index 41bf98c5c02f..c5085b03d5f8 100644 --- a/null-object/src/main/java/com/iluwatar/nullobject/NullNode.java +++ b/null-object/src/main/java/com/iluwatar/nullobject/NullNode.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.nullobject; /** diff --git a/null-object/src/test/java/com/iluwatar/nullobject/AppTest.java b/null-object/src/test/java/com/iluwatar/nullobject/AppTest.java index 57eb86748885..97d6b5eef36e 100644 --- a/null-object/src/test/java/com/iluwatar/nullobject/AppTest.java +++ b/null-object/src/test/java/com/iluwatar/nullobject/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.nullobject; import org.junit.jupiter.api.Test; diff --git a/null-object/src/test/java/com/iluwatar/nullobject/NullNodeTest.java b/null-object/src/test/java/com/iluwatar/nullobject/NullNodeTest.java index efd1a2b85e48..b4d9f72d0bb5 100644 --- a/null-object/src/test/java/com/iluwatar/nullobject/NullNodeTest.java +++ b/null-object/src/test/java/com/iluwatar/nullobject/NullNodeTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.nullobject; import org.junit.jupiter.api.Test; diff --git a/null-object/src/test/java/com/iluwatar/nullobject/TreeTest.java b/null-object/src/test/java/com/iluwatar/nullobject/TreeTest.java index ce1502d986aa..4ff30f5240cb 100644 --- a/null-object/src/test/java/com/iluwatar/nullobject/TreeTest.java +++ b/null-object/src/test/java/com/iluwatar/nullobject/TreeTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.nullobject; import ch.qos.logback.classic.Logger; diff --git a/object-mother/src/main/java/com/iluwatar/objectmother/King.java b/object-mother/src/main/java/com/iluwatar/objectmother/King.java index 7bb2ebd202b0..cfebd2590a95 100644 --- a/object-mother/src/main/java/com/iluwatar/objectmother/King.java +++ b/object-mother/src/main/java/com/iluwatar/objectmother/King.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.objectmother; /** diff --git a/object-mother/src/main/java/com/iluwatar/objectmother/Queen.java b/object-mother/src/main/java/com/iluwatar/objectmother/Queen.java index 70fe0c0d6e3a..98a41a96061d 100644 --- a/object-mother/src/main/java/com/iluwatar/objectmother/Queen.java +++ b/object-mother/src/main/java/com/iluwatar/objectmother/Queen.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.objectmother; /** diff --git a/object-mother/src/main/java/com/iluwatar/objectmother/Royalty.java b/object-mother/src/main/java/com/iluwatar/objectmother/Royalty.java index 025172e69dff..9abbbe75b76f 100644 --- a/object-mother/src/main/java/com/iluwatar/objectmother/Royalty.java +++ b/object-mother/src/main/java/com/iluwatar/objectmother/Royalty.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.objectmother; /** diff --git a/object-mother/src/main/java/com/iluwatar/objectmother/RoyaltyObjectMother.java b/object-mother/src/main/java/com/iluwatar/objectmother/RoyaltyObjectMother.java index 418fd115158a..372f1166c8c9 100644 --- a/object-mother/src/main/java/com/iluwatar/objectmother/RoyaltyObjectMother.java +++ b/object-mother/src/main/java/com/iluwatar/objectmother/RoyaltyObjectMother.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.objectmother; /** diff --git a/object-mother/src/test/java/com/iluwatar/objectmother/test/RoyaltyObjectMotherTest.java b/object-mother/src/test/java/com/iluwatar/objectmother/test/RoyaltyObjectMotherTest.java index 62cc6db80ac6..b9b211d96539 100644 --- a/object-mother/src/test/java/com/iluwatar/objectmother/test/RoyaltyObjectMotherTest.java +++ b/object-mother/src/test/java/com/iluwatar/objectmother/test/RoyaltyObjectMotherTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.objectmother.test; import com.iluwatar.objectmother.King; diff --git a/object-pool/src/main/java/com/iluwatar/object/pool/App.java b/object-pool/src/main/java/com/iluwatar/object/pool/App.java index 421ee71183da..24923c1e969e 100644 --- a/object-pool/src/main/java/com/iluwatar/object/pool/App.java +++ b/object-pool/src/main/java/com/iluwatar/object/pool/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.object.pool; import org.slf4j.Logger; diff --git a/object-pool/src/main/java/com/iluwatar/object/pool/ObjectPool.java b/object-pool/src/main/java/com/iluwatar/object/pool/ObjectPool.java index 4baf25e66fe1..e71e97f160a1 100644 --- a/object-pool/src/main/java/com/iluwatar/object/pool/ObjectPool.java +++ b/object-pool/src/main/java/com/iluwatar/object/pool/ObjectPool.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.object.pool; import java.util.HashSet; diff --git a/object-pool/src/main/java/com/iluwatar/object/pool/Oliphaunt.java b/object-pool/src/main/java/com/iluwatar/object/pool/Oliphaunt.java index 3557d3b284c6..0d9f85adc34a 100644 --- a/object-pool/src/main/java/com/iluwatar/object/pool/Oliphaunt.java +++ b/object-pool/src/main/java/com/iluwatar/object/pool/Oliphaunt.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.object.pool; import java.util.concurrent.atomic.AtomicInteger; diff --git a/object-pool/src/main/java/com/iluwatar/object/pool/OliphauntPool.java b/object-pool/src/main/java/com/iluwatar/object/pool/OliphauntPool.java index c3bc860a3dcf..b2d92936ff98 100644 --- a/object-pool/src/main/java/com/iluwatar/object/pool/OliphauntPool.java +++ b/object-pool/src/main/java/com/iluwatar/object/pool/OliphauntPool.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.object.pool; /** diff --git a/object-pool/src/test/java/com/iluwatar/object/pool/AppTest.java b/object-pool/src/test/java/com/iluwatar/object/pool/AppTest.java index e78936778573..7113f93043db 100644 --- a/object-pool/src/test/java/com/iluwatar/object/pool/AppTest.java +++ b/object-pool/src/test/java/com/iluwatar/object/pool/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.object.pool; import org.junit.jupiter.api.Test; diff --git a/object-pool/src/test/java/com/iluwatar/object/pool/OliphauntPoolTest.java b/object-pool/src/test/java/com/iluwatar/object/pool/OliphauntPoolTest.java index ad9d531a012b..b946f80981d7 100644 --- a/object-pool/src/test/java/com/iluwatar/object/pool/OliphauntPoolTest.java +++ b/object-pool/src/test/java/com/iluwatar/object/pool/OliphauntPoolTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.object.pool; import org.junit.jupiter.api.Test; diff --git a/observer/src/main/java/com/iluwatar/observer/App.java b/observer/src/main/java/com/iluwatar/observer/App.java index 1a174b7e74f9..07321ea6b459 100644 --- a/observer/src/main/java/com/iluwatar/observer/App.java +++ b/observer/src/main/java/com/iluwatar/observer/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer; import com.iluwatar.observer.generic.GHobbits; diff --git a/observer/src/main/java/com/iluwatar/observer/Hobbits.java b/observer/src/main/java/com/iluwatar/observer/Hobbits.java index 50da760ec155..b718aa5e8d6a 100644 --- a/observer/src/main/java/com/iluwatar/observer/Hobbits.java +++ b/observer/src/main/java/com/iluwatar/observer/Hobbits.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer; import org.slf4j.Logger; diff --git a/observer/src/main/java/com/iluwatar/observer/Orcs.java b/observer/src/main/java/com/iluwatar/observer/Orcs.java index 377e47ebb12d..1420c7da79a0 100644 --- a/observer/src/main/java/com/iluwatar/observer/Orcs.java +++ b/observer/src/main/java/com/iluwatar/observer/Orcs.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer; import org.slf4j.Logger; diff --git a/observer/src/main/java/com/iluwatar/observer/Weather.java b/observer/src/main/java/com/iluwatar/observer/Weather.java index bf21e51e8d4e..b5f6d2e39c72 100644 --- a/observer/src/main/java/com/iluwatar/observer/Weather.java +++ b/observer/src/main/java/com/iluwatar/observer/Weather.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer; import org.slf4j.Logger; diff --git a/observer/src/main/java/com/iluwatar/observer/WeatherObserver.java b/observer/src/main/java/com/iluwatar/observer/WeatherObserver.java index a859ac19af80..deb4c15edb2e 100644 --- a/observer/src/main/java/com/iluwatar/observer/WeatherObserver.java +++ b/observer/src/main/java/com/iluwatar/observer/WeatherObserver.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer; /** diff --git a/observer/src/main/java/com/iluwatar/observer/WeatherType.java b/observer/src/main/java/com/iluwatar/observer/WeatherType.java index e2d950798f50..384f8ac58f76 100644 --- a/observer/src/main/java/com/iluwatar/observer/WeatherType.java +++ b/observer/src/main/java/com/iluwatar/observer/WeatherType.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer; /** diff --git a/observer/src/main/java/com/iluwatar/observer/generic/GHobbits.java b/observer/src/main/java/com/iluwatar/observer/generic/GHobbits.java index 53b9b41ccba1..79669ef486b7 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/GHobbits.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/GHobbits.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer.generic; import com.iluwatar.observer.WeatherType; diff --git a/observer/src/main/java/com/iluwatar/observer/generic/GOrcs.java b/observer/src/main/java/com/iluwatar/observer/generic/GOrcs.java index aca6c74405e7..5ba85b17f058 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/GOrcs.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/GOrcs.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer.generic; import com.iluwatar.observer.WeatherType; diff --git a/observer/src/main/java/com/iluwatar/observer/generic/GWeather.java b/observer/src/main/java/com/iluwatar/observer/generic/GWeather.java index d28fdad4110f..3bf52f46b4c1 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/GWeather.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/GWeather.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer.generic; import com.iluwatar.observer.WeatherType; diff --git a/observer/src/main/java/com/iluwatar/observer/generic/Observable.java b/observer/src/main/java/com/iluwatar/observer/generic/Observable.java index 635904de0267..722915b92db1 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/Observable.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/Observable.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer.generic; import java.util.List; diff --git a/observer/src/main/java/com/iluwatar/observer/generic/Observer.java b/observer/src/main/java/com/iluwatar/observer/generic/Observer.java index 7440243ac125..819068b6e1b8 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/Observer.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/Observer.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer.generic; /** diff --git a/observer/src/main/java/com/iluwatar/observer/generic/Race.java b/observer/src/main/java/com/iluwatar/observer/generic/Race.java index 301636164ff0..1cd3aa4a6846 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/Race.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/Race.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer.generic; import com.iluwatar.observer.WeatherType; diff --git a/observer/src/test/java/com/iluwatar/observer/AppTest.java b/observer/src/test/java/com/iluwatar/observer/AppTest.java index c2ac8b11edc4..b557fdf7eb0e 100644 --- a/observer/src/test/java/com/iluwatar/observer/AppTest.java +++ b/observer/src/test/java/com/iluwatar/observer/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer; import org.junit.jupiter.api.Test; diff --git a/observer/src/test/java/com/iluwatar/observer/HobbitsTest.java b/observer/src/test/java/com/iluwatar/observer/HobbitsTest.java index f0f5e0825a5d..c43c592da611 100644 --- a/observer/src/test/java/com/iluwatar/observer/HobbitsTest.java +++ b/observer/src/test/java/com/iluwatar/observer/HobbitsTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer; import java.util.ArrayList; diff --git a/observer/src/test/java/com/iluwatar/observer/OrcsTest.java b/observer/src/test/java/com/iluwatar/observer/OrcsTest.java index 17ccf938e06d..b2c0fcbaca10 100644 --- a/observer/src/test/java/com/iluwatar/observer/OrcsTest.java +++ b/observer/src/test/java/com/iluwatar/observer/OrcsTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer; import java.util.ArrayList; diff --git a/observer/src/test/java/com/iluwatar/observer/WeatherObserverTest.java b/observer/src/test/java/com/iluwatar/observer/WeatherObserverTest.java index ec3dfbed8f04..fbaceb02bfdf 100644 --- a/observer/src/test/java/com/iluwatar/observer/WeatherObserverTest.java +++ b/observer/src/test/java/com/iluwatar/observer/WeatherObserverTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer; import com.iluwatar.observer.utils.InMemoryAppender; diff --git a/observer/src/test/java/com/iluwatar/observer/WeatherTest.java b/observer/src/test/java/com/iluwatar/observer/WeatherTest.java index dfb370ca29ff..c00357153ed7 100644 --- a/observer/src/test/java/com/iluwatar/observer/WeatherTest.java +++ b/observer/src/test/java/com/iluwatar/observer/WeatherTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer; import com.iluwatar.observer.utils.InMemoryAppender; diff --git a/observer/src/test/java/com/iluwatar/observer/generic/GHobbitsTest.java b/observer/src/test/java/com/iluwatar/observer/generic/GHobbitsTest.java index c9c525b9d6e8..93e68a9f1ac1 100644 --- a/observer/src/test/java/com/iluwatar/observer/generic/GHobbitsTest.java +++ b/observer/src/test/java/com/iluwatar/observer/generic/GHobbitsTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer.generic; import com.iluwatar.observer.WeatherType; diff --git a/observer/src/test/java/com/iluwatar/observer/generic/GWeatherTest.java b/observer/src/test/java/com/iluwatar/observer/generic/GWeatherTest.java index 60203ced3040..7450a00b930d 100644 --- a/observer/src/test/java/com/iluwatar/observer/generic/GWeatherTest.java +++ b/observer/src/test/java/com/iluwatar/observer/generic/GWeatherTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer.generic; import com.iluwatar.observer.WeatherObserver; diff --git a/observer/src/test/java/com/iluwatar/observer/generic/ObserverTest.java b/observer/src/test/java/com/iluwatar/observer/generic/ObserverTest.java index 940d45aba8cf..b5ef7ec0de0c 100644 --- a/observer/src/test/java/com/iluwatar/observer/generic/ObserverTest.java +++ b/observer/src/test/java/com/iluwatar/observer/generic/ObserverTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer.generic; import com.iluwatar.observer.WeatherType; diff --git a/observer/src/test/java/com/iluwatar/observer/generic/OrcsTest.java b/observer/src/test/java/com/iluwatar/observer/generic/OrcsTest.java index 136b766c3450..b73b105199cc 100644 --- a/observer/src/test/java/com/iluwatar/observer/generic/OrcsTest.java +++ b/observer/src/test/java/com/iluwatar/observer/generic/OrcsTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer.generic; import com.iluwatar.observer.WeatherType; diff --git a/observer/src/test/java/com/iluwatar/observer/utils/InMemoryAppender.java b/observer/src/test/java/com/iluwatar/observer/utils/InMemoryAppender.java index fbfe107b88c3..b3d2bf1bc7eb 100644 --- a/observer/src/test/java/com/iluwatar/observer/utils/InMemoryAppender.java +++ b/observer/src/test/java/com/iluwatar/observer/utils/InMemoryAppender.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.observer.utils; import ch.qos.logback.classic.Logger; diff --git a/page-object/sample-application/src/main/java/com/iluwatar/pageobject/App.java b/page-object/sample-application/src/main/java/com/iluwatar/pageobject/App.java index ff1f53790466..aae08c15f80e 100644 --- a/page-object/sample-application/src/main/java/com/iluwatar/pageobject/App.java +++ b/page-object/sample-application/src/main/java/com/iluwatar/pageobject/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject; import java.awt.Desktop; diff --git a/page-object/src/main/java/com/iluwatar/pageobject/App.java b/page-object/src/main/java/com/iluwatar/pageobject/App.java index a84533b478cd..c76867e89899 100644 --- a/page-object/src/main/java/com/iluwatar/pageobject/App.java +++ b/page-object/src/main/java/com/iluwatar/pageobject/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject; import java.awt.Desktop; diff --git a/page-object/src/test/java/com/iluwatar/pageobject/AlbumListPageTest.java b/page-object/src/test/java/com/iluwatar/pageobject/AlbumListPageTest.java index 1a66d99d3018..29704fe387cc 100644 --- a/page-object/src/test/java/com/iluwatar/pageobject/AlbumListPageTest.java +++ b/page-object/src/test/java/com/iluwatar/pageobject/AlbumListPageTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject; import com.gargoylesoftware.htmlunit.WebClient; diff --git a/page-object/src/test/java/com/iluwatar/pageobject/AlbumPageTest.java b/page-object/src/test/java/com/iluwatar/pageobject/AlbumPageTest.java index 9f8419be1af7..488dcc0bb878 100644 --- a/page-object/src/test/java/com/iluwatar/pageobject/AlbumPageTest.java +++ b/page-object/src/test/java/com/iluwatar/pageobject/AlbumPageTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject; import com.gargoylesoftware.htmlunit.WebClient; diff --git a/page-object/src/test/java/com/iluwatar/pageobject/LoginPageTest.java b/page-object/src/test/java/com/iluwatar/pageobject/LoginPageTest.java index 911ee5769656..70458eb643e5 100644 --- a/page-object/src/test/java/com/iluwatar/pageobject/LoginPageTest.java +++ b/page-object/src/test/java/com/iluwatar/pageobject/LoginPageTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject; import com.gargoylesoftware.htmlunit.WebClient; diff --git a/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumListPage.java b/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumListPage.java index 20673c8779dd..f64c7cec2803 100644 --- a/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumListPage.java +++ b/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumListPage.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject.pages; import com.gargoylesoftware.htmlunit.WebClient; diff --git a/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumPage.java b/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumPage.java index e33ffc4af32a..9115603147f7 100644 --- a/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumPage.java +++ b/page-object/src/test/java/com/iluwatar/pageobject/pages/AlbumPage.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject.pages; import com.gargoylesoftware.htmlunit.WebClient; diff --git a/page-object/src/test/java/com/iluwatar/pageobject/pages/LoginPage.java b/page-object/src/test/java/com/iluwatar/pageobject/pages/LoginPage.java index 843a5e1dc433..81debb5fb681 100644 --- a/page-object/src/test/java/com/iluwatar/pageobject/pages/LoginPage.java +++ b/page-object/src/test/java/com/iluwatar/pageobject/pages/LoginPage.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject.pages; import com.gargoylesoftware.htmlunit.WebClient; diff --git a/page-object/src/test/java/com/iluwatar/pageobject/pages/Page.java b/page-object/src/test/java/com/iluwatar/pageobject/pages/Page.java index fbdc1b28c7be..3cebd94e94e4 100644 --- a/page-object/src/test/java/com/iluwatar/pageobject/pages/Page.java +++ b/page-object/src/test/java/com/iluwatar/pageobject/pages/Page.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject.pages; import com.gargoylesoftware.htmlunit.WebClient; diff --git a/page-object/test-automation/src/main/java/com/iluwatar/pageobject/AlbumListPage.java b/page-object/test-automation/src/main/java/com/iluwatar/pageobject/AlbumListPage.java index d464cec69b5a..feab7838c7bd 100644 --- a/page-object/test-automation/src/main/java/com/iluwatar/pageobject/AlbumListPage.java +++ b/page-object/test-automation/src/main/java/com/iluwatar/pageobject/AlbumListPage.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject; import com.gargoylesoftware.htmlunit.WebClient; diff --git a/page-object/test-automation/src/main/java/com/iluwatar/pageobject/AlbumPage.java b/page-object/test-automation/src/main/java/com/iluwatar/pageobject/AlbumPage.java index 312f2efb33ed..cf8c50dd74a1 100644 --- a/page-object/test-automation/src/main/java/com/iluwatar/pageobject/AlbumPage.java +++ b/page-object/test-automation/src/main/java/com/iluwatar/pageobject/AlbumPage.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject; import java.io.IOException; diff --git a/page-object/test-automation/src/main/java/com/iluwatar/pageobject/LoginPage.java b/page-object/test-automation/src/main/java/com/iluwatar/pageobject/LoginPage.java index a9dcb1051338..b139253a77fa 100644 --- a/page-object/test-automation/src/main/java/com/iluwatar/pageobject/LoginPage.java +++ b/page-object/test-automation/src/main/java/com/iluwatar/pageobject/LoginPage.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject; import com.gargoylesoftware.htmlunit.WebClient; diff --git a/page-object/test-automation/src/main/java/com/iluwatar/pageobject/Page.java b/page-object/test-automation/src/main/java/com/iluwatar/pageobject/Page.java index f5c5a29f409f..78bc4618c407 100644 --- a/page-object/test-automation/src/main/java/com/iluwatar/pageobject/Page.java +++ b/page-object/test-automation/src/main/java/com/iluwatar/pageobject/Page.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject; import com.gargoylesoftware.htmlunit.WebClient; diff --git a/page-object/test-automation/src/test/java/com/iluwatar/pageobject/AlbumListPageTest.java b/page-object/test-automation/src/test/java/com/iluwatar/pageobject/AlbumListPageTest.java index e81c930b02db..8e8173c04ea5 100644 --- a/page-object/test-automation/src/test/java/com/iluwatar/pageobject/AlbumListPageTest.java +++ b/page-object/test-automation/src/test/java/com/iluwatar/pageobject/AlbumListPageTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject; import com.gargoylesoftware.htmlunit.WebClient; diff --git a/page-object/test-automation/src/test/java/com/iluwatar/pageobject/AlbumPageTest.java b/page-object/test-automation/src/test/java/com/iluwatar/pageobject/AlbumPageTest.java index d42611d5c3eb..f3fea0ee6b1c 100644 --- a/page-object/test-automation/src/test/java/com/iluwatar/pageobject/AlbumPageTest.java +++ b/page-object/test-automation/src/test/java/com/iluwatar/pageobject/AlbumPageTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/page-object/test-automation/src/test/java/com/iluwatar/pageobject/LoginPageTest.java b/page-object/test-automation/src/test/java/com/iluwatar/pageobject/LoginPageTest.java index 312a08520c14..f6ec3978f706 100644 --- a/page-object/test-automation/src/test/java/com/iluwatar/pageobject/LoginPageTest.java +++ b/page-object/test-automation/src/test/java/com/iluwatar/pageobject/LoginPageTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pageobject; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/partial-response/src/main/java/com/iluwatar/partialresponse/App.java b/partial-response/src/main/java/com/iluwatar/partialresponse/App.java index 03edfb844009..05aa660880c1 100644 --- a/partial-response/src/main/java/com/iluwatar/partialresponse/App.java +++ b/partial-response/src/main/java/com/iluwatar/partialresponse/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.partialresponse; import org.slf4j.Logger; diff --git a/partial-response/src/main/java/com/iluwatar/partialresponse/FieldJsonMapper.java b/partial-response/src/main/java/com/iluwatar/partialresponse/FieldJsonMapper.java index be9055501ddf..da1d22620c31 100644 --- a/partial-response/src/main/java/com/iluwatar/partialresponse/FieldJsonMapper.java +++ b/partial-response/src/main/java/com/iluwatar/partialresponse/FieldJsonMapper.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.partialresponse; import java.lang.reflect.Field; diff --git a/partial-response/src/main/java/com/iluwatar/partialresponse/Video.java b/partial-response/src/main/java/com/iluwatar/partialresponse/Video.java index e64718175cb6..fcfda7497f95 100644 --- a/partial-response/src/main/java/com/iluwatar/partialresponse/Video.java +++ b/partial-response/src/main/java/com/iluwatar/partialresponse/Video.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.partialresponse; /** diff --git a/partial-response/src/main/java/com/iluwatar/partialresponse/VideoResource.java b/partial-response/src/main/java/com/iluwatar/partialresponse/VideoResource.java index 309765c7dc20..d0d77af05151 100644 --- a/partial-response/src/main/java/com/iluwatar/partialresponse/VideoResource.java +++ b/partial-response/src/main/java/com/iluwatar/partialresponse/VideoResource.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.partialresponse; import java.util.Map; diff --git a/partial-response/src/test/java/com/iluwatar/partialresponse/AppTest.java b/partial-response/src/test/java/com/iluwatar/partialresponse/AppTest.java index 6bfd782cce01..afd2c70e253b 100644 --- a/partial-response/src/test/java/com/iluwatar/partialresponse/AppTest.java +++ b/partial-response/src/test/java/com/iluwatar/partialresponse/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.partialresponse; import org.junit.Test; diff --git a/partial-response/src/test/java/com/iluwatar/partialresponse/FieldJsonMapperTest.java b/partial-response/src/test/java/com/iluwatar/partialresponse/FieldJsonMapperTest.java index 696d2ef0ed19..c71cc21f4e58 100644 --- a/partial-response/src/test/java/com/iluwatar/partialresponse/FieldJsonMapperTest.java +++ b/partial-response/src/test/java/com/iluwatar/partialresponse/FieldJsonMapperTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.partialresponse; import org.junit.Before; diff --git a/partial-response/src/test/java/com/iluwatar/partialresponse/VideoResourceTest.java b/partial-response/src/test/java/com/iluwatar/partialresponse/VideoResourceTest.java index 5c4ac78fb74c..c28613f4a8c7 100644 --- a/partial-response/src/test/java/com/iluwatar/partialresponse/VideoResourceTest.java +++ b/partial-response/src/test/java/com/iluwatar/partialresponse/VideoResourceTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.partialresponse; import org.junit.Before; diff --git a/pipeline/src/main/java/com/iluwatar/pipeline/App.java b/pipeline/src/main/java/com/iluwatar/pipeline/App.java index 581e414606bd..3298a6eb69b2 100644 --- a/pipeline/src/main/java/com/iluwatar/pipeline/App.java +++ b/pipeline/src/main/java/com/iluwatar/pipeline/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pipeline; /** diff --git a/pipeline/src/main/java/com/iluwatar/pipeline/ConvertToCharArrayHandler.java b/pipeline/src/main/java/com/iluwatar/pipeline/ConvertToCharArrayHandler.java index 6a418fef4cf1..104d81f40b88 100644 --- a/pipeline/src/main/java/com/iluwatar/pipeline/ConvertToCharArrayHandler.java +++ b/pipeline/src/main/java/com/iluwatar/pipeline/ConvertToCharArrayHandler.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pipeline; import org.slf4j.Logger; diff --git a/pipeline/src/main/java/com/iluwatar/pipeline/Handler.java b/pipeline/src/main/java/com/iluwatar/pipeline/Handler.java index b00e20a281fe..253bc22f5607 100644 --- a/pipeline/src/main/java/com/iluwatar/pipeline/Handler.java +++ b/pipeline/src/main/java/com/iluwatar/pipeline/Handler.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pipeline; /** diff --git a/pipeline/src/main/java/com/iluwatar/pipeline/Pipeline.java b/pipeline/src/main/java/com/iluwatar/pipeline/Pipeline.java index 476c9f0a5931..af5c69b1d77c 100644 --- a/pipeline/src/main/java/com/iluwatar/pipeline/Pipeline.java +++ b/pipeline/src/main/java/com/iluwatar/pipeline/Pipeline.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pipeline; /** diff --git a/pipeline/src/main/java/com/iluwatar/pipeline/RemoveAlphabetsHandler.java b/pipeline/src/main/java/com/iluwatar/pipeline/RemoveAlphabetsHandler.java index 342ed86c23c7..930332671c3d 100644 --- a/pipeline/src/main/java/com/iluwatar/pipeline/RemoveAlphabetsHandler.java +++ b/pipeline/src/main/java/com/iluwatar/pipeline/RemoveAlphabetsHandler.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pipeline; import org.slf4j.Logger; diff --git a/pipeline/src/main/java/com/iluwatar/pipeline/RemoveDigitsHandler.java b/pipeline/src/main/java/com/iluwatar/pipeline/RemoveDigitsHandler.java index a5320a0a55c4..6fd591006c55 100644 --- a/pipeline/src/main/java/com/iluwatar/pipeline/RemoveDigitsHandler.java +++ b/pipeline/src/main/java/com/iluwatar/pipeline/RemoveDigitsHandler.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pipeline; import org.slf4j.Logger; diff --git a/pipeline/src/test/java/com/iluwatar/pipeline/AppTest.java b/pipeline/src/test/java/com/iluwatar/pipeline/AppTest.java index 552cd99bd488..d5a892d91809 100644 --- a/pipeline/src/test/java/com/iluwatar/pipeline/AppTest.java +++ b/pipeline/src/test/java/com/iluwatar/pipeline/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pipeline; import org.junit.jupiter.api.Test; diff --git a/pipeline/src/test/java/com/iluwatar/pipeline/PipelineTest.java b/pipeline/src/test/java/com/iluwatar/pipeline/PipelineTest.java index 590dfc62e59a..1de692222dbe 100644 --- a/pipeline/src/test/java/com/iluwatar/pipeline/PipelineTest.java +++ b/pipeline/src/test/java/com/iluwatar/pipeline/PipelineTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.pipeline; import org.junit.jupiter.api.Test; diff --git a/poison-pill/src/main/java/com/iluwatar/poison/pill/App.java b/poison-pill/src/main/java/com/iluwatar/poison/pill/App.java index 10e7f58d70e1..6d6a41eb9970 100644 --- a/poison-pill/src/main/java/com/iluwatar/poison/pill/App.java +++ b/poison-pill/src/main/java/com/iluwatar/poison/pill/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.poison.pill; /** diff --git a/poison-pill/src/main/java/com/iluwatar/poison/pill/Consumer.java b/poison-pill/src/main/java/com/iluwatar/poison/pill/Consumer.java index 115915ffe161..12cc246d8d28 100644 --- a/poison-pill/src/main/java/com/iluwatar/poison/pill/Consumer.java +++ b/poison-pill/src/main/java/com/iluwatar/poison/pill/Consumer.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.poison.pill; import com.iluwatar.poison.pill.Message.Headers; diff --git a/poison-pill/src/main/java/com/iluwatar/poison/pill/Message.java b/poison-pill/src/main/java/com/iluwatar/poison/pill/Message.java index cdbd7241d49e..9b35bf53a569 100644 --- a/poison-pill/src/main/java/com/iluwatar/poison/pill/Message.java +++ b/poison-pill/src/main/java/com/iluwatar/poison/pill/Message.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.poison.pill; import java.util.Map; diff --git a/poison-pill/src/main/java/com/iluwatar/poison/pill/MessageQueue.java b/poison-pill/src/main/java/com/iluwatar/poison/pill/MessageQueue.java index d766f24c3cd3..ce8005fcebaf 100644 --- a/poison-pill/src/main/java/com/iluwatar/poison/pill/MessageQueue.java +++ b/poison-pill/src/main/java/com/iluwatar/poison/pill/MessageQueue.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.poison.pill; /** diff --git a/poison-pill/src/main/java/com/iluwatar/poison/pill/MqPublishPoint.java b/poison-pill/src/main/java/com/iluwatar/poison/pill/MqPublishPoint.java index 31b54610f034..b0e086637509 100644 --- a/poison-pill/src/main/java/com/iluwatar/poison/pill/MqPublishPoint.java +++ b/poison-pill/src/main/java/com/iluwatar/poison/pill/MqPublishPoint.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.poison.pill; /** diff --git a/poison-pill/src/main/java/com/iluwatar/poison/pill/MqSubscribePoint.java b/poison-pill/src/main/java/com/iluwatar/poison/pill/MqSubscribePoint.java index 55554f2705f7..bb01e6395f14 100644 --- a/poison-pill/src/main/java/com/iluwatar/poison/pill/MqSubscribePoint.java +++ b/poison-pill/src/main/java/com/iluwatar/poison/pill/MqSubscribePoint.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.poison.pill; /** diff --git a/poison-pill/src/main/java/com/iluwatar/poison/pill/Producer.java b/poison-pill/src/main/java/com/iluwatar/poison/pill/Producer.java index 766b84d9605b..0b746b31f3e7 100644 --- a/poison-pill/src/main/java/com/iluwatar/poison/pill/Producer.java +++ b/poison-pill/src/main/java/com/iluwatar/poison/pill/Producer.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.poison.pill; import java.util.Date; diff --git a/poison-pill/src/main/java/com/iluwatar/poison/pill/SimpleMessage.java b/poison-pill/src/main/java/com/iluwatar/poison/pill/SimpleMessage.java index a1875433a6e0..efc45fc83bef 100644 --- a/poison-pill/src/main/java/com/iluwatar/poison/pill/SimpleMessage.java +++ b/poison-pill/src/main/java/com/iluwatar/poison/pill/SimpleMessage.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.poison.pill; import java.util.Collections; diff --git a/poison-pill/src/main/java/com/iluwatar/poison/pill/SimpleMessageQueue.java b/poison-pill/src/main/java/com/iluwatar/poison/pill/SimpleMessageQueue.java index 60e74db11a85..7f1b662cde71 100644 --- a/poison-pill/src/main/java/com/iluwatar/poison/pill/SimpleMessageQueue.java +++ b/poison-pill/src/main/java/com/iluwatar/poison/pill/SimpleMessageQueue.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.poison.pill; import java.util.concurrent.ArrayBlockingQueue; diff --git a/poison-pill/src/test/java/com/iluwatar/poison/pill/AppTest.java b/poison-pill/src/test/java/com/iluwatar/poison/pill/AppTest.java index 1093852ae168..b921f6bc7c7f 100644 --- a/poison-pill/src/test/java/com/iluwatar/poison/pill/AppTest.java +++ b/poison-pill/src/test/java/com/iluwatar/poison/pill/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.poison.pill; import org.junit.jupiter.api.Test; diff --git a/poison-pill/src/test/java/com/iluwatar/poison/pill/ConsumerTest.java b/poison-pill/src/test/java/com/iluwatar/poison/pill/ConsumerTest.java index af0e3d73e6bd..c874d36293fb 100644 --- a/poison-pill/src/test/java/com/iluwatar/poison/pill/ConsumerTest.java +++ b/poison-pill/src/test/java/com/iluwatar/poison/pill/ConsumerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.poison.pill; import ch.qos.logback.classic.Logger; diff --git a/poison-pill/src/test/java/com/iluwatar/poison/pill/PoisonMessageTest.java b/poison-pill/src/test/java/com/iluwatar/poison/pill/PoisonMessageTest.java index 0e9454508dd6..6b310d431116 100644 --- a/poison-pill/src/test/java/com/iluwatar/poison/pill/PoisonMessageTest.java +++ b/poison-pill/src/test/java/com/iluwatar/poison/pill/PoisonMessageTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.poison.pill; import org.junit.jupiter.api.Test; diff --git a/poison-pill/src/test/java/com/iluwatar/poison/pill/ProducerTest.java b/poison-pill/src/test/java/com/iluwatar/poison/pill/ProducerTest.java index 33c80d1f0aea..76f2373da017 100644 --- a/poison-pill/src/test/java/com/iluwatar/poison/pill/ProducerTest.java +++ b/poison-pill/src/test/java/com/iluwatar/poison/pill/ProducerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.poison.pill; import org.junit.jupiter.api.Test; diff --git a/poison-pill/src/test/java/com/iluwatar/poison/pill/SimpleMessageTest.java b/poison-pill/src/test/java/com/iluwatar/poison/pill/SimpleMessageTest.java index 6edaab625f20..3eebecb01845 100644 --- a/poison-pill/src/test/java/com/iluwatar/poison/pill/SimpleMessageTest.java +++ b/poison-pill/src/test/java/com/iluwatar/poison/pill/SimpleMessageTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.poison.pill; import org.junit.jupiter.api.Test; diff --git a/pom.xml b/pom.xml index 913f600e7aff..b6c1b4472a88 100644 --- a/pom.xml +++ b/pom.xml @@ -416,6 +416,12 @@ Ilkka Seppälä true + + license-plugin-header-style.xml + + + SLASHSTAR_CUSTOM_STYLE + diff --git a/priority-queue/src/main/java/com/iluwatar/priority/queue/Application.java b/priority-queue/src/main/java/com/iluwatar/priority/queue/Application.java index 5f40bc1ebfc7..1e6e44a68564 100644 --- a/priority-queue/src/main/java/com/iluwatar/priority/queue/Application.java +++ b/priority-queue/src/main/java/com/iluwatar/priority/queue/Application.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.priority.queue; /** diff --git a/priority-queue/src/main/java/com/iluwatar/priority/queue/Message.java b/priority-queue/src/main/java/com/iluwatar/priority/queue/Message.java index 1fd5e7813658..b874bd677915 100644 --- a/priority-queue/src/main/java/com/iluwatar/priority/queue/Message.java +++ b/priority-queue/src/main/java/com/iluwatar/priority/queue/Message.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.priority.queue; /** diff --git a/priority-queue/src/main/java/com/iluwatar/priority/queue/PriorityMessageQueue.java b/priority-queue/src/main/java/com/iluwatar/priority/queue/PriorityMessageQueue.java index 971c6551fa46..ff73a496ff58 100644 --- a/priority-queue/src/main/java/com/iluwatar/priority/queue/PriorityMessageQueue.java +++ b/priority-queue/src/main/java/com/iluwatar/priority/queue/PriorityMessageQueue.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.priority.queue; import org.slf4j.Logger; diff --git a/priority-queue/src/main/java/com/iluwatar/priority/queue/QueueManager.java b/priority-queue/src/main/java/com/iluwatar/priority/queue/QueueManager.java index ecf13b3d7697..ade211766c3d 100644 --- a/priority-queue/src/main/java/com/iluwatar/priority/queue/QueueManager.java +++ b/priority-queue/src/main/java/com/iluwatar/priority/queue/QueueManager.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.priority.queue; /** diff --git a/priority-queue/src/main/java/com/iluwatar/priority/queue/Worker.java b/priority-queue/src/main/java/com/iluwatar/priority/queue/Worker.java index e37feb679d3e..bbeb64b73a7e 100644 --- a/priority-queue/src/main/java/com/iluwatar/priority/queue/Worker.java +++ b/priority-queue/src/main/java/com/iluwatar/priority/queue/Worker.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.priority.queue; import org.slf4j.Logger; diff --git a/priority-queue/src/test/java/com/iluwatar/priority/queue/PriorityMessageQueueTest.java b/priority-queue/src/test/java/com/iluwatar/priority/queue/PriorityMessageQueueTest.java index 36ad1ef414d9..4fd1f06a6454 100644 --- a/priority-queue/src/test/java/com/iluwatar/priority/queue/PriorityMessageQueueTest.java +++ b/priority-queue/src/test/java/com/iluwatar/priority/queue/PriorityMessageQueueTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.priority.queue; import org.junit.jupiter.api.Test; diff --git a/priority-queue/src/test/java/com/iluwatar/priority/queue/QueueManagerTest.java b/priority-queue/src/test/java/com/iluwatar/priority/queue/QueueManagerTest.java index 03909f830e5d..17aad88b396c 100644 --- a/priority-queue/src/test/java/com/iluwatar/priority/queue/QueueManagerTest.java +++ b/priority-queue/src/test/java/com/iluwatar/priority/queue/QueueManagerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.priority.queue; import org.junit.jupiter.api.Test; diff --git a/private-class-data/src/main/java/com/iluwatar/privateclassdata/App.java b/private-class-data/src/main/java/com/iluwatar/privateclassdata/App.java index 79f3c3895283..c5b75eee4a78 100644 --- a/private-class-data/src/main/java/com/iluwatar/privateclassdata/App.java +++ b/private-class-data/src/main/java/com/iluwatar/privateclassdata/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.privateclassdata; /** diff --git a/private-class-data/src/main/java/com/iluwatar/privateclassdata/ImmutableStew.java b/private-class-data/src/main/java/com/iluwatar/privateclassdata/ImmutableStew.java index ff42f96aa4d9..627d744620bd 100644 --- a/private-class-data/src/main/java/com/iluwatar/privateclassdata/ImmutableStew.java +++ b/private-class-data/src/main/java/com/iluwatar/privateclassdata/ImmutableStew.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.privateclassdata; import org.slf4j.Logger; diff --git a/private-class-data/src/main/java/com/iluwatar/privateclassdata/Stew.java b/private-class-data/src/main/java/com/iluwatar/privateclassdata/Stew.java index d251fe65b450..6618ee5dac95 100644 --- a/private-class-data/src/main/java/com/iluwatar/privateclassdata/Stew.java +++ b/private-class-data/src/main/java/com/iluwatar/privateclassdata/Stew.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.privateclassdata; import org.slf4j.Logger; diff --git a/private-class-data/src/main/java/com/iluwatar/privateclassdata/StewData.java b/private-class-data/src/main/java/com/iluwatar/privateclassdata/StewData.java index 9b7f0009396c..c170a531ef1a 100644 --- a/private-class-data/src/main/java/com/iluwatar/privateclassdata/StewData.java +++ b/private-class-data/src/main/java/com/iluwatar/privateclassdata/StewData.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.privateclassdata; /** diff --git a/private-class-data/src/test/java/com/iluwatar/privateclassdata/AppTest.java b/private-class-data/src/test/java/com/iluwatar/privateclassdata/AppTest.java index d34c3f1077a2..cfdb73fd478f 100644 --- a/private-class-data/src/test/java/com/iluwatar/privateclassdata/AppTest.java +++ b/private-class-data/src/test/java/com/iluwatar/privateclassdata/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.privateclassdata; import org.junit.jupiter.api.Test; diff --git a/private-class-data/src/test/java/com/iluwatar/privateclassdata/ImmutableStewTest.java b/private-class-data/src/test/java/com/iluwatar/privateclassdata/ImmutableStewTest.java index 3083925ce950..b866b31eacd7 100644 --- a/private-class-data/src/test/java/com/iluwatar/privateclassdata/ImmutableStewTest.java +++ b/private-class-data/src/test/java/com/iluwatar/privateclassdata/ImmutableStewTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.privateclassdata; import com.iluwatar.privateclassdata.utils.InMemoryAppender; diff --git a/private-class-data/src/test/java/com/iluwatar/privateclassdata/StewTest.java b/private-class-data/src/test/java/com/iluwatar/privateclassdata/StewTest.java index 9e58c2eab15b..3c30fc02122f 100644 --- a/private-class-data/src/test/java/com/iluwatar/privateclassdata/StewTest.java +++ b/private-class-data/src/test/java/com/iluwatar/privateclassdata/StewTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.privateclassdata; import com.iluwatar.privateclassdata.utils.InMemoryAppender; diff --git a/private-class-data/src/test/java/com/iluwatar/privateclassdata/utils/InMemoryAppender.java b/private-class-data/src/test/java/com/iluwatar/privateclassdata/utils/InMemoryAppender.java index 08ada391f7aa..dceaee29b989 100644 --- a/private-class-data/src/test/java/com/iluwatar/privateclassdata/utils/InMemoryAppender.java +++ b/private-class-data/src/test/java/com/iluwatar/privateclassdata/utils/InMemoryAppender.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.privateclassdata.utils; import ch.qos.logback.classic.Logger; diff --git a/producer-consumer/src/main/java/com/iluwatar/producer/consumer/App.java b/producer-consumer/src/main/java/com/iluwatar/producer/consumer/App.java index 17dc8c6365b0..853c6fcfe51d 100644 --- a/producer-consumer/src/main/java/com/iluwatar/producer/consumer/App.java +++ b/producer-consumer/src/main/java/com/iluwatar/producer/consumer/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.producer.consumer; import org.slf4j.Logger; diff --git a/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Consumer.java b/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Consumer.java index 24cc457faba0..3e4e9aadb3d9 100644 --- a/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Consumer.java +++ b/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Consumer.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.producer.consumer; import org.slf4j.Logger; diff --git a/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Item.java b/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Item.java index 1b98c1d9a7ed..6991ec4d10a4 100644 --- a/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Item.java +++ b/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Item.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.producer.consumer; /** diff --git a/producer-consumer/src/main/java/com/iluwatar/producer/consumer/ItemQueue.java b/producer-consumer/src/main/java/com/iluwatar/producer/consumer/ItemQueue.java index dfdf336fd5c1..674fb069aa62 100644 --- a/producer-consumer/src/main/java/com/iluwatar/producer/consumer/ItemQueue.java +++ b/producer-consumer/src/main/java/com/iluwatar/producer/consumer/ItemQueue.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.producer.consumer; import java.util.concurrent.BlockingQueue; diff --git a/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Producer.java b/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Producer.java index 3681c017d223..e8c79afd4836 100644 --- a/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Producer.java +++ b/producer-consumer/src/main/java/com/iluwatar/producer/consumer/Producer.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.producer.consumer; import java.util.Random; diff --git a/producer-consumer/src/test/java/com/iluwatar/producer/consumer/AppTest.java b/producer-consumer/src/test/java/com/iluwatar/producer/consumer/AppTest.java index fa95d0f1b3ce..e14e963a1150 100644 --- a/producer-consumer/src/test/java/com/iluwatar/producer/consumer/AppTest.java +++ b/producer-consumer/src/test/java/com/iluwatar/producer/consumer/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.producer.consumer; import org.junit.jupiter.api.Test; diff --git a/producer-consumer/src/test/java/com/iluwatar/producer/consumer/ConsumerTest.java b/producer-consumer/src/test/java/com/iluwatar/producer/consumer/ConsumerTest.java index 22477ac92a54..c4b3a17a7a97 100644 --- a/producer-consumer/src/test/java/com/iluwatar/producer/consumer/ConsumerTest.java +++ b/producer-consumer/src/test/java/com/iluwatar/producer/consumer/ConsumerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.producer.consumer; import org.junit.jupiter.api.Test; diff --git a/producer-consumer/src/test/java/com/iluwatar/producer/consumer/ProducerTest.java b/producer-consumer/src/test/java/com/iluwatar/producer/consumer/ProducerTest.java index 268f122a569f..6e93450115cd 100644 --- a/producer-consumer/src/test/java/com/iluwatar/producer/consumer/ProducerTest.java +++ b/producer-consumer/src/test/java/com/iluwatar/producer/consumer/ProducerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.producer.consumer; import org.junit.jupiter.api.Test; diff --git a/promise/src/main/java/com/iluwatar/promise/App.java b/promise/src/main/java/com/iluwatar/promise/App.java index 54371023d080..c201d33526c2 100644 --- a/promise/src/main/java/com/iluwatar/promise/App.java +++ b/promise/src/main/java/com/iluwatar/promise/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.promise; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/promise/src/main/java/com/iluwatar/promise/Promise.java b/promise/src/main/java/com/iluwatar/promise/Promise.java index c3f0d9fc7373..eadcc5bd9a7d 100644 --- a/promise/src/main/java/com/iluwatar/promise/Promise.java +++ b/promise/src/main/java/com/iluwatar/promise/Promise.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.promise; import java.util.concurrent.Callable; diff --git a/promise/src/main/java/com/iluwatar/promise/PromiseSupport.java b/promise/src/main/java/com/iluwatar/promise/PromiseSupport.java index 5cfb86af5f4f..058e899d0b39 100644 --- a/promise/src/main/java/com/iluwatar/promise/PromiseSupport.java +++ b/promise/src/main/java/com/iluwatar/promise/PromiseSupport.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.promise; import java.util.concurrent.ExecutionException; diff --git a/promise/src/main/java/com/iluwatar/promise/Utility.java b/promise/src/main/java/com/iluwatar/promise/Utility.java index b6830f03d4c5..472f7b0a5234 100644 --- a/promise/src/main/java/com/iluwatar/promise/Utility.java +++ b/promise/src/main/java/com/iluwatar/promise/Utility.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.promise; import org.slf4j.Logger; diff --git a/promise/src/test/java/com/iluwatar/promise/AppTest.java b/promise/src/test/java/com/iluwatar/promise/AppTest.java index 17d3bc3dabe9..0913d5911ac5 100644 --- a/promise/src/test/java/com/iluwatar/promise/AppTest.java +++ b/promise/src/test/java/com/iluwatar/promise/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.promise; import org.junit.jupiter.api.Test; diff --git a/promise/src/test/java/com/iluwatar/promise/PromiseTest.java b/promise/src/test/java/com/iluwatar/promise/PromiseTest.java index 08962f2e4b12..9b02191ee007 100644 --- a/promise/src/test/java/com/iluwatar/promise/PromiseTest.java +++ b/promise/src/test/java/com/iluwatar/promise/PromiseTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.promise; import org.junit.jupiter.api.BeforeEach; diff --git a/property/src/main/java/com/iluwatar/property/App.java b/property/src/main/java/com/iluwatar/property/App.java index 0aa1ee4035ba..a7045e6df6db 100644 --- a/property/src/main/java/com/iluwatar/property/App.java +++ b/property/src/main/java/com/iluwatar/property/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.property; import com.iluwatar.property.Character.Type; diff --git a/property/src/main/java/com/iluwatar/property/Character.java b/property/src/main/java/com/iluwatar/property/Character.java index 6b8dbd1d69e9..ef19f01072e6 100644 --- a/property/src/main/java/com/iluwatar/property/Character.java +++ b/property/src/main/java/com/iluwatar/property/Character.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.property; import java.util.HashMap; diff --git a/property/src/main/java/com/iluwatar/property/Prototype.java b/property/src/main/java/com/iluwatar/property/Prototype.java index eba8976ef8ce..9570f66536d8 100644 --- a/property/src/main/java/com/iluwatar/property/Prototype.java +++ b/property/src/main/java/com/iluwatar/property/Prototype.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.property; /** diff --git a/property/src/main/java/com/iluwatar/property/Stats.java b/property/src/main/java/com/iluwatar/property/Stats.java index d4bc8aa4976b..4015e5693680 100644 --- a/property/src/main/java/com/iluwatar/property/Stats.java +++ b/property/src/main/java/com/iluwatar/property/Stats.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.property; /** diff --git a/property/src/test/java/com/iluwatar/property/AppTest.java b/property/src/test/java/com/iluwatar/property/AppTest.java index d8addd67f5f2..f8096b865c6d 100644 --- a/property/src/test/java/com/iluwatar/property/AppTest.java +++ b/property/src/test/java/com/iluwatar/property/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.property; import org.junit.jupiter.api.Test; diff --git a/property/src/test/java/com/iluwatar/property/CharacterTest.java b/property/src/test/java/com/iluwatar/property/CharacterTest.java index 6c349438edd3..6bbd693a7d13 100644 --- a/property/src/test/java/com/iluwatar/property/CharacterTest.java +++ b/property/src/test/java/com/iluwatar/property/CharacterTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.property; import org.junit.jupiter.api.Test; diff --git a/prototype/src/main/java/com/iluwatar/prototype/App.java b/prototype/src/main/java/com/iluwatar/prototype/App.java index 1972979d83dc..457f4f2a0f5a 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/App.java +++ b/prototype/src/main/java/com/iluwatar/prototype/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; import org.slf4j.Logger; diff --git a/prototype/src/main/java/com/iluwatar/prototype/Beast.java b/prototype/src/main/java/com/iluwatar/prototype/Beast.java index 8c2f0f31af95..3b82cdd9dde1 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/Beast.java +++ b/prototype/src/main/java/com/iluwatar/prototype/Beast.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; /** diff --git a/prototype/src/main/java/com/iluwatar/prototype/ElfBeast.java b/prototype/src/main/java/com/iluwatar/prototype/ElfBeast.java index 128a8ec373b7..9ef44b164391 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/ElfBeast.java +++ b/prototype/src/main/java/com/iluwatar/prototype/ElfBeast.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; /** diff --git a/prototype/src/main/java/com/iluwatar/prototype/ElfMage.java b/prototype/src/main/java/com/iluwatar/prototype/ElfMage.java index 4abcc8d849d7..14b6e6261ba6 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/ElfMage.java +++ b/prototype/src/main/java/com/iluwatar/prototype/ElfMage.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; /** diff --git a/prototype/src/main/java/com/iluwatar/prototype/ElfWarlord.java b/prototype/src/main/java/com/iluwatar/prototype/ElfWarlord.java index efba5fde08ab..6c5a4a4ffc0a 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/ElfWarlord.java +++ b/prototype/src/main/java/com/iluwatar/prototype/ElfWarlord.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; /** diff --git a/prototype/src/main/java/com/iluwatar/prototype/HeroFactory.java b/prototype/src/main/java/com/iluwatar/prototype/HeroFactory.java index 17ae47031928..791671289b4c 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/HeroFactory.java +++ b/prototype/src/main/java/com/iluwatar/prototype/HeroFactory.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; /** diff --git a/prototype/src/main/java/com/iluwatar/prototype/HeroFactoryImpl.java b/prototype/src/main/java/com/iluwatar/prototype/HeroFactoryImpl.java index f890b3b69376..5803ee8efcc6 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/HeroFactoryImpl.java +++ b/prototype/src/main/java/com/iluwatar/prototype/HeroFactoryImpl.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; /** diff --git a/prototype/src/main/java/com/iluwatar/prototype/Mage.java b/prototype/src/main/java/com/iluwatar/prototype/Mage.java index 03ed7b69b7eb..9da5e45baada 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/Mage.java +++ b/prototype/src/main/java/com/iluwatar/prototype/Mage.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; /** diff --git a/prototype/src/main/java/com/iluwatar/prototype/OrcBeast.java b/prototype/src/main/java/com/iluwatar/prototype/OrcBeast.java index 37704c1a58ff..2b5fb51599d0 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/OrcBeast.java +++ b/prototype/src/main/java/com/iluwatar/prototype/OrcBeast.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; /** diff --git a/prototype/src/main/java/com/iluwatar/prototype/OrcMage.java b/prototype/src/main/java/com/iluwatar/prototype/OrcMage.java index 01189c8f863d..de15b5e10d91 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/OrcMage.java +++ b/prototype/src/main/java/com/iluwatar/prototype/OrcMage.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; /** diff --git a/prototype/src/main/java/com/iluwatar/prototype/OrcWarlord.java b/prototype/src/main/java/com/iluwatar/prototype/OrcWarlord.java index ee2136bc86ea..0b117357fd82 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/OrcWarlord.java +++ b/prototype/src/main/java/com/iluwatar/prototype/OrcWarlord.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; /** diff --git a/prototype/src/main/java/com/iluwatar/prototype/Prototype.java b/prototype/src/main/java/com/iluwatar/prototype/Prototype.java index 4c9fcbd2acbe..bae58b026d3e 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/Prototype.java +++ b/prototype/src/main/java/com/iluwatar/prototype/Prototype.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; /** diff --git a/prototype/src/main/java/com/iluwatar/prototype/Warlord.java b/prototype/src/main/java/com/iluwatar/prototype/Warlord.java index 096a5b195319..7ce8922e909c 100644 --- a/prototype/src/main/java/com/iluwatar/prototype/Warlord.java +++ b/prototype/src/main/java/com/iluwatar/prototype/Warlord.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; /** diff --git a/prototype/src/test/java/com/iluwatar/prototype/AppTest.java b/prototype/src/test/java/com/iluwatar/prototype/AppTest.java index 5e93fcf95040..4943339e8c5c 100644 --- a/prototype/src/test/java/com/iluwatar/prototype/AppTest.java +++ b/prototype/src/test/java/com/iluwatar/prototype/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; import org.junit.jupiter.api.Test; diff --git a/prototype/src/test/java/com/iluwatar/prototype/HeroFactoryImplTest.java b/prototype/src/test/java/com/iluwatar/prototype/HeroFactoryImplTest.java index d90de6a6a40f..0d33b67c3796 100644 --- a/prototype/src/test/java/com/iluwatar/prototype/HeroFactoryImplTest.java +++ b/prototype/src/test/java/com/iluwatar/prototype/HeroFactoryImplTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; import org.junit.jupiter.api.Test; diff --git a/prototype/src/test/java/com/iluwatar/prototype/PrototypeTest.java b/prototype/src/test/java/com/iluwatar/prototype/PrototypeTest.java index 5345ac43cdc6..8fbd80294b4c 100644 --- a/prototype/src/test/java/com/iluwatar/prototype/PrototypeTest.java +++ b/prototype/src/test/java/com/iluwatar/prototype/PrototypeTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.prototype; import org.junit.jupiter.params.ParameterizedTest; diff --git a/proxy/src/main/java/com/iluwatar/proxy/App.java b/proxy/src/main/java/com/iluwatar/proxy/App.java index fb6a6f2b7c53..4c9d0efaa3f4 100644 --- a/proxy/src/main/java/com/iluwatar/proxy/App.java +++ b/proxy/src/main/java/com/iluwatar/proxy/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.proxy; /** diff --git a/proxy/src/main/java/com/iluwatar/proxy/IvoryTower.java b/proxy/src/main/java/com/iluwatar/proxy/IvoryTower.java index 304f316a29a7..3adb96d86b6c 100644 --- a/proxy/src/main/java/com/iluwatar/proxy/IvoryTower.java +++ b/proxy/src/main/java/com/iluwatar/proxy/IvoryTower.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.proxy; import org.slf4j.Logger; diff --git a/proxy/src/main/java/com/iluwatar/proxy/Wizard.java b/proxy/src/main/java/com/iluwatar/proxy/Wizard.java index f1043f672ff9..031ab8dfd2da 100644 --- a/proxy/src/main/java/com/iluwatar/proxy/Wizard.java +++ b/proxy/src/main/java/com/iluwatar/proxy/Wizard.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.proxy; /** diff --git a/proxy/src/main/java/com/iluwatar/proxy/WizardTower.java b/proxy/src/main/java/com/iluwatar/proxy/WizardTower.java index 6efb920b8663..ac83aa6ea54a 100644 --- a/proxy/src/main/java/com/iluwatar/proxy/WizardTower.java +++ b/proxy/src/main/java/com/iluwatar/proxy/WizardTower.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.proxy; /** diff --git a/proxy/src/main/java/com/iluwatar/proxy/WizardTowerProxy.java b/proxy/src/main/java/com/iluwatar/proxy/WizardTowerProxy.java index 90c45352940e..7e6b2acf06d9 100644 --- a/proxy/src/main/java/com/iluwatar/proxy/WizardTowerProxy.java +++ b/proxy/src/main/java/com/iluwatar/proxy/WizardTowerProxy.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.proxy; import org.slf4j.Logger; diff --git a/proxy/src/test/java/com/iluwatar/proxy/AppTest.java b/proxy/src/test/java/com/iluwatar/proxy/AppTest.java index 92b09c63df69..7fcae7530aa4 100644 --- a/proxy/src/test/java/com/iluwatar/proxy/AppTest.java +++ b/proxy/src/test/java/com/iluwatar/proxy/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.proxy; import org.junit.jupiter.api.Test; diff --git a/proxy/src/test/java/com/iluwatar/proxy/IvoryTowerTest.java b/proxy/src/test/java/com/iluwatar/proxy/IvoryTowerTest.java index 0d068e1e18ca..ed3d6416c608 100644 --- a/proxy/src/test/java/com/iluwatar/proxy/IvoryTowerTest.java +++ b/proxy/src/test/java/com/iluwatar/proxy/IvoryTowerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.proxy; import com.iluwatar.proxy.utils.InMemoryAppender; diff --git a/proxy/src/test/java/com/iluwatar/proxy/WizardTest.java b/proxy/src/test/java/com/iluwatar/proxy/WizardTest.java index 62d35f4ea3d7..db6ae5c33921 100644 --- a/proxy/src/test/java/com/iluwatar/proxy/WizardTest.java +++ b/proxy/src/test/java/com/iluwatar/proxy/WizardTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.proxy; import org.junit.jupiter.api.Test; diff --git a/proxy/src/test/java/com/iluwatar/proxy/WizardTowerProxyTest.java b/proxy/src/test/java/com/iluwatar/proxy/WizardTowerProxyTest.java index ba2f66f6d3b4..6a51e4cbbda1 100644 --- a/proxy/src/test/java/com/iluwatar/proxy/WizardTowerProxyTest.java +++ b/proxy/src/test/java/com/iluwatar/proxy/WizardTowerProxyTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.proxy; import com.iluwatar.proxy.utils.InMemoryAppender; diff --git a/proxy/src/test/java/com/iluwatar/proxy/utils/InMemoryAppender.java b/proxy/src/test/java/com/iluwatar/proxy/utils/InMemoryAppender.java index a18f11887562..ebe841f2b26c 100644 --- a/proxy/src/test/java/com/iluwatar/proxy/utils/InMemoryAppender.java +++ b/proxy/src/test/java/com/iluwatar/proxy/utils/InMemoryAppender.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.proxy.utils; import ch.qos.logback.classic.Logger; diff --git a/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/App.java b/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/App.java index aa3c04efe995..80fdc9462f07 100644 --- a/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/App.java +++ b/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.queue.load.leveling; import java.util.concurrent.ExecutorService; diff --git a/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/Message.java b/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/Message.java index 561618891dbf..432d1fe4038f 100644 --- a/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/Message.java +++ b/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/Message.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.queue.load.leveling; /** diff --git a/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/MessageQueue.java b/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/MessageQueue.java index 177d6df9fa3c..b6059471f5d6 100644 --- a/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/MessageQueue.java +++ b/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/MessageQueue.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.queue.load.leveling; import java.util.concurrent.ArrayBlockingQueue; diff --git a/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/ServiceExecutor.java b/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/ServiceExecutor.java index 5c788011ce07..1ef27ff28972 100644 --- a/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/ServiceExecutor.java +++ b/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/ServiceExecutor.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.queue.load.leveling; import org.slf4j.Logger; diff --git a/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/Task.java b/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/Task.java index cae188933305..fcdc3866f46b 100644 --- a/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/Task.java +++ b/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/Task.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.queue.load.leveling; /** * Task Interface. diff --git a/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/TaskGenerator.java b/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/TaskGenerator.java index 4f3380252e7f..cef9311fb29a 100644 --- a/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/TaskGenerator.java +++ b/queue-load-leveling/src/main/java/com/iluwatar/queue/load/leveling/TaskGenerator.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.queue.load.leveling; import org.slf4j.Logger; diff --git a/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/AppTest.java b/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/AppTest.java index b6b85096d558..b8d772f3929e 100644 --- a/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/AppTest.java +++ b/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.queue.load.leveling; import org.junit.jupiter.api.Test; diff --git a/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/MessageQueueTest.java b/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/MessageQueueTest.java index ac260f623c40..0333a666df87 100644 --- a/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/MessageQueueTest.java +++ b/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/MessageQueueTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.queue.load.leveling; import org.junit.jupiter.api.Test; diff --git a/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/MessageTest.java b/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/MessageTest.java index 9a6f27b93d43..4dad771628c3 100644 --- a/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/MessageTest.java +++ b/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/MessageTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.queue.load.leveling; import org.junit.jupiter.api.Test; diff --git a/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/TaskGenSrvExeTest.java b/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/TaskGenSrvExeTest.java index c8626f84144f..a6cd3d36c2eb 100644 --- a/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/TaskGenSrvExeTest.java +++ b/queue-load-leveling/src/test/java/com/iluwatar/queue/load/leveling/TaskGenSrvExeTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.queue.load.leveling; import org.junit.jupiter.api.Test; diff --git a/reactor/src/main/java/com/iluwatar/reactor/app/App.java b/reactor/src/main/java/com/iluwatar/reactor/app/App.java index 5f2ea96a3cee..8ccbe314579d 100644 --- a/reactor/src/main/java/com/iluwatar/reactor/app/App.java +++ b/reactor/src/main/java/com/iluwatar/reactor/app/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reactor.app; import java.io.IOException; diff --git a/reactor/src/main/java/com/iluwatar/reactor/app/AppClient.java b/reactor/src/main/java/com/iluwatar/reactor/app/AppClient.java index 6d28b795d0a5..75db3079bf47 100644 --- a/reactor/src/main/java/com/iluwatar/reactor/app/AppClient.java +++ b/reactor/src/main/java/com/iluwatar/reactor/app/AppClient.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reactor.app; import org.slf4j.Logger; diff --git a/reactor/src/main/java/com/iluwatar/reactor/app/LoggingHandler.java b/reactor/src/main/java/com/iluwatar/reactor/app/LoggingHandler.java index 9a8b102a969c..f0de033be8df 100644 --- a/reactor/src/main/java/com/iluwatar/reactor/app/LoggingHandler.java +++ b/reactor/src/main/java/com/iluwatar/reactor/app/LoggingHandler.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reactor.app; import java.nio.ByteBuffer; diff --git a/reactor/src/main/java/com/iluwatar/reactor/framework/AbstractNioChannel.java b/reactor/src/main/java/com/iluwatar/reactor/framework/AbstractNioChannel.java index b3dd1cedd229..dd0572aefc29 100644 --- a/reactor/src/main/java/com/iluwatar/reactor/framework/AbstractNioChannel.java +++ b/reactor/src/main/java/com/iluwatar/reactor/framework/AbstractNioChannel.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reactor.framework; import java.io.IOException; diff --git a/reactor/src/main/java/com/iluwatar/reactor/framework/ChannelHandler.java b/reactor/src/main/java/com/iluwatar/reactor/framework/ChannelHandler.java index cb491b88a519..e7204a550f27 100644 --- a/reactor/src/main/java/com/iluwatar/reactor/framework/ChannelHandler.java +++ b/reactor/src/main/java/com/iluwatar/reactor/framework/ChannelHandler.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reactor.framework; import java.nio.channels.SelectionKey; diff --git a/reactor/src/main/java/com/iluwatar/reactor/framework/Dispatcher.java b/reactor/src/main/java/com/iluwatar/reactor/framework/Dispatcher.java index 3bfc94b7900b..17ccb2ef85d5 100644 --- a/reactor/src/main/java/com/iluwatar/reactor/framework/Dispatcher.java +++ b/reactor/src/main/java/com/iluwatar/reactor/framework/Dispatcher.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reactor.framework; import java.nio.channels.SelectionKey; diff --git a/reactor/src/main/java/com/iluwatar/reactor/framework/NioDatagramChannel.java b/reactor/src/main/java/com/iluwatar/reactor/framework/NioDatagramChannel.java index 3ea4828b5254..f62e46e72049 100644 --- a/reactor/src/main/java/com/iluwatar/reactor/framework/NioDatagramChannel.java +++ b/reactor/src/main/java/com/iluwatar/reactor/framework/NioDatagramChannel.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reactor.framework; import org.slf4j.Logger; diff --git a/reactor/src/main/java/com/iluwatar/reactor/framework/NioReactor.java b/reactor/src/main/java/com/iluwatar/reactor/framework/NioReactor.java index e4f13d065f3b..9c71ed80e57e 100644 --- a/reactor/src/main/java/com/iluwatar/reactor/framework/NioReactor.java +++ b/reactor/src/main/java/com/iluwatar/reactor/framework/NioReactor.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reactor.framework; import org.slf4j.Logger; diff --git a/reactor/src/main/java/com/iluwatar/reactor/framework/NioServerSocketChannel.java b/reactor/src/main/java/com/iluwatar/reactor/framework/NioServerSocketChannel.java index 3fa6cfbe7c65..a56b5dfe9a58 100644 --- a/reactor/src/main/java/com/iluwatar/reactor/framework/NioServerSocketChannel.java +++ b/reactor/src/main/java/com/iluwatar/reactor/framework/NioServerSocketChannel.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reactor.framework; import org.slf4j.Logger; diff --git a/reactor/src/main/java/com/iluwatar/reactor/framework/SameThreadDispatcher.java b/reactor/src/main/java/com/iluwatar/reactor/framework/SameThreadDispatcher.java index d672757c4772..a64acc069a97 100644 --- a/reactor/src/main/java/com/iluwatar/reactor/framework/SameThreadDispatcher.java +++ b/reactor/src/main/java/com/iluwatar/reactor/framework/SameThreadDispatcher.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reactor.framework; import java.nio.channels.SelectionKey; diff --git a/reactor/src/main/java/com/iluwatar/reactor/framework/ThreadPoolDispatcher.java b/reactor/src/main/java/com/iluwatar/reactor/framework/ThreadPoolDispatcher.java index 4283a50aced0..e4bd20cfd340 100644 --- a/reactor/src/main/java/com/iluwatar/reactor/framework/ThreadPoolDispatcher.java +++ b/reactor/src/main/java/com/iluwatar/reactor/framework/ThreadPoolDispatcher.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reactor.framework; import java.nio.channels.SelectionKey; diff --git a/reactor/src/test/java/com/iluwatar/reactor/app/ReactorTest.java b/reactor/src/test/java/com/iluwatar/reactor/app/ReactorTest.java index 2a0af14113cb..4b2f0348abfe 100644 --- a/reactor/src/test/java/com/iluwatar/reactor/app/ReactorTest.java +++ b/reactor/src/test/java/com/iluwatar/reactor/app/ReactorTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reactor.app; import com.iluwatar.reactor.framework.SameThreadDispatcher; diff --git a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/App.java b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/App.java index 2ee3fa948845..1232a73f73bc 100644 --- a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/App.java +++ b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reader.writer.lock; import java.util.concurrent.ExecutorService; diff --git a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Reader.java b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Reader.java index 3bc46c4524f7..a4c7d07448fc 100644 --- a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Reader.java +++ b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Reader.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reader.writer.lock; import java.util.concurrent.locks.Lock; diff --git a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/ReaderWriterLock.java b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/ReaderWriterLock.java index d35703801c67..282503ea63bc 100644 --- a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/ReaderWriterLock.java +++ b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/ReaderWriterLock.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reader.writer.lock; import java.util.HashSet; diff --git a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Writer.java b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Writer.java index 4aa5ab5a9571..afe93efd7ef2 100644 --- a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Writer.java +++ b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/Writer.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reader.writer.lock; import java.util.concurrent.locks.Lock; diff --git a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/AppTest.java b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/AppTest.java index 8815e6c8e451..0c323724e471 100644 --- a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/AppTest.java +++ b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reader.writer.lock; import org.junit.jupiter.api.Test; diff --git a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderAndWriterTest.java b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderAndWriterTest.java index d190dfb9ef4c..1f6edfa3cf3f 100644 --- a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderAndWriterTest.java +++ b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderAndWriterTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reader.writer.lock; import com.iluwatar.reader.writer.lock.utils.InMemoryAppender; diff --git a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderTest.java b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderTest.java index d49a472e05a8..849cf32ba802 100644 --- a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderTest.java +++ b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/ReaderTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reader.writer.lock; import com.iluwatar.reader.writer.lock.utils.InMemoryAppender; diff --git a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/WriterTest.java b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/WriterTest.java index 55a8b7f95685..60c78e57313a 100644 --- a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/WriterTest.java +++ b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/WriterTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reader.writer.lock; import com.iluwatar.reader.writer.lock.utils.InMemoryAppender; diff --git a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/utils/InMemoryAppender.java b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/utils/InMemoryAppender.java index c6b8319d2a5d..98f14a82bcc0 100644 --- a/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/utils/InMemoryAppender.java +++ b/reader-writer-lock/src/test/java/com/iluwatar/reader/writer/lock/utils/InMemoryAppender.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.reader.writer.lock.utils; import ch.qos.logback.classic.Logger; diff --git a/repository/src/main/java/com/iluwatar/repository/App.java b/repository/src/main/java/com/iluwatar/repository/App.java index 171369497f5b..0ecafd030e73 100644 --- a/repository/src/main/java/com/iluwatar/repository/App.java +++ b/repository/src/main/java/com/iluwatar/repository/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.repository; import java.util.List; diff --git a/repository/src/main/java/com/iluwatar/repository/AppConfig.java b/repository/src/main/java/com/iluwatar/repository/AppConfig.java index 23de85b1ece5..f4f46be88f60 100644 --- a/repository/src/main/java/com/iluwatar/repository/AppConfig.java +++ b/repository/src/main/java/com/iluwatar/repository/AppConfig.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.repository; import java.sql.SQLException; diff --git a/repository/src/main/java/com/iluwatar/repository/Person.java b/repository/src/main/java/com/iluwatar/repository/Person.java index 1f68108bab8b..ded5b8cfa855 100644 --- a/repository/src/main/java/com/iluwatar/repository/Person.java +++ b/repository/src/main/java/com/iluwatar/repository/Person.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.repository; import javax.persistence.Entity; diff --git a/repository/src/main/java/com/iluwatar/repository/PersonRepository.java b/repository/src/main/java/com/iluwatar/repository/PersonRepository.java index e6e559942b67..e181d19b5aba 100644 --- a/repository/src/main/java/com/iluwatar/repository/PersonRepository.java +++ b/repository/src/main/java/com/iluwatar/repository/PersonRepository.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.repository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; diff --git a/repository/src/main/java/com/iluwatar/repository/PersonSpecifications.java b/repository/src/main/java/com/iluwatar/repository/PersonSpecifications.java index 4e6ced00a961..5a14985c9b65 100644 --- a/repository/src/main/java/com/iluwatar/repository/PersonSpecifications.java +++ b/repository/src/main/java/com/iluwatar/repository/PersonSpecifications.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.repository; import javax.persistence.criteria.CriteriaBuilder; diff --git a/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java b/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java index 519febf68dd0..6e53713233a1 100644 --- a/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java +++ b/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.repository; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/repository/src/test/java/com/iluwatar/repository/AppConfigTest.java b/repository/src/test/java/com/iluwatar/repository/AppConfigTest.java index d73027c5b4b3..c9f292029b63 100644 --- a/repository/src/test/java/com/iluwatar/repository/AppConfigTest.java +++ b/repository/src/test/java/com/iluwatar/repository/AppConfigTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.repository; import org.junit.jupiter.api.Test; diff --git a/repository/src/test/java/com/iluwatar/repository/AppTest.java b/repository/src/test/java/com/iluwatar/repository/AppTest.java index f33e83c91894..8889833f6bfa 100644 --- a/repository/src/test/java/com/iluwatar/repository/AppTest.java +++ b/repository/src/test/java/com/iluwatar/repository/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.repository; import org.junit.jupiter.api.Test; diff --git a/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java b/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java index d0f7fe9ae7d8..9f7615aa57de 100644 --- a/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java +++ b/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.repository; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/resource-acquisition-is-initialization/src/main/java/com/iluwatar/resource/acquisition/is/initialization/App.java b/resource-acquisition-is-initialization/src/main/java/com/iluwatar/resource/acquisition/is/initialization/App.java index ea8f3e0448d5..fc67465a7e24 100644 --- a/resource-acquisition-is-initialization/src/main/java/com/iluwatar/resource/acquisition/is/initialization/App.java +++ b/resource-acquisition-is-initialization/src/main/java/com/iluwatar/resource/acquisition/is/initialization/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.resource.acquisition.is.initialization; import org.slf4j.Logger; diff --git a/resource-acquisition-is-initialization/src/main/java/com/iluwatar/resource/acquisition/is/initialization/SlidingDoor.java b/resource-acquisition-is-initialization/src/main/java/com/iluwatar/resource/acquisition/is/initialization/SlidingDoor.java index 615a87fc9941..47c36a77ff26 100644 --- a/resource-acquisition-is-initialization/src/main/java/com/iluwatar/resource/acquisition/is/initialization/SlidingDoor.java +++ b/resource-acquisition-is-initialization/src/main/java/com/iluwatar/resource/acquisition/is/initialization/SlidingDoor.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.resource.acquisition.is.initialization; import org.slf4j.Logger; diff --git a/resource-acquisition-is-initialization/src/main/java/com/iluwatar/resource/acquisition/is/initialization/TreasureChest.java b/resource-acquisition-is-initialization/src/main/java/com/iluwatar/resource/acquisition/is/initialization/TreasureChest.java index ccca9015afe5..d8adf2ed48ec 100644 --- a/resource-acquisition-is-initialization/src/main/java/com/iluwatar/resource/acquisition/is/initialization/TreasureChest.java +++ b/resource-acquisition-is-initialization/src/main/java/com/iluwatar/resource/acquisition/is/initialization/TreasureChest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.resource.acquisition.is.initialization; import org.slf4j.Logger; diff --git a/resource-acquisition-is-initialization/src/test/java/com/iluwatar/resource/acquisition/is/initialization/AppTest.java b/resource-acquisition-is-initialization/src/test/java/com/iluwatar/resource/acquisition/is/initialization/AppTest.java index 97a160eda68b..0e58779aff08 100644 --- a/resource-acquisition-is-initialization/src/test/java/com/iluwatar/resource/acquisition/is/initialization/AppTest.java +++ b/resource-acquisition-is-initialization/src/test/java/com/iluwatar/resource/acquisition/is/initialization/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.resource.acquisition.is.initialization; import org.junit.jupiter.api.Test; diff --git a/resource-acquisition-is-initialization/src/test/java/com/iluwatar/resource/acquisition/is/initialization/ClosableTest.java b/resource-acquisition-is-initialization/src/test/java/com/iluwatar/resource/acquisition/is/initialization/ClosableTest.java index 030848b9d90f..10a85c6efdbc 100644 --- a/resource-acquisition-is-initialization/src/test/java/com/iluwatar/resource/acquisition/is/initialization/ClosableTest.java +++ b/resource-acquisition-is-initialization/src/test/java/com/iluwatar/resource/acquisition/is/initialization/ClosableTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.resource.acquisition.is.initialization; import ch.qos.logback.classic.Logger; diff --git a/retry/src/main/java/com/iluwatar/retry/App.java b/retry/src/main/java/com/iluwatar/retry/App.java index 76ec43363525..5eb78125cc8b 100644 --- a/retry/src/main/java/com/iluwatar/retry/App.java +++ b/retry/src/main/java/com/iluwatar/retry/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.retry; import org.slf4j.Logger; diff --git a/retry/src/main/java/com/iluwatar/retry/BusinessException.java b/retry/src/main/java/com/iluwatar/retry/BusinessException.java index d88aa8a105b7..2da1cca8ab7b 100644 --- a/retry/src/main/java/com/iluwatar/retry/BusinessException.java +++ b/retry/src/main/java/com/iluwatar/retry/BusinessException.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.retry; /** diff --git a/retry/src/main/java/com/iluwatar/retry/BusinessOperation.java b/retry/src/main/java/com/iluwatar/retry/BusinessOperation.java index 37846f54d751..a829ff541f35 100644 --- a/retry/src/main/java/com/iluwatar/retry/BusinessOperation.java +++ b/retry/src/main/java/com/iluwatar/retry/BusinessOperation.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.retry; /** diff --git a/retry/src/main/java/com/iluwatar/retry/CustomerNotFoundException.java b/retry/src/main/java/com/iluwatar/retry/CustomerNotFoundException.java index 990229ebed04..c0a9ca434c93 100644 --- a/retry/src/main/java/com/iluwatar/retry/CustomerNotFoundException.java +++ b/retry/src/main/java/com/iluwatar/retry/CustomerNotFoundException.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.retry; /** diff --git a/retry/src/main/java/com/iluwatar/retry/DatabaseNotAvailableException.java b/retry/src/main/java/com/iluwatar/retry/DatabaseNotAvailableException.java index be78a9e6fd8b..02cbc6521ab9 100644 --- a/retry/src/main/java/com/iluwatar/retry/DatabaseNotAvailableException.java +++ b/retry/src/main/java/com/iluwatar/retry/DatabaseNotAvailableException.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.retry; /** diff --git a/retry/src/main/java/com/iluwatar/retry/FindCustomer.java b/retry/src/main/java/com/iluwatar/retry/FindCustomer.java index 83ab9a25c3f4..11c2b40d6e03 100644 --- a/retry/src/main/java/com/iluwatar/retry/FindCustomer.java +++ b/retry/src/main/java/com/iluwatar/retry/FindCustomer.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.retry; import java.util.ArrayDeque; diff --git a/retry/src/main/java/com/iluwatar/retry/Retry.java b/retry/src/main/java/com/iluwatar/retry/Retry.java index d5d16bf30e62..7f188cb8f181 100644 --- a/retry/src/main/java/com/iluwatar/retry/Retry.java +++ b/retry/src/main/java/com/iluwatar/retry/Retry.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.retry; import java.util.ArrayList; diff --git a/retry/src/main/java/com/iluwatar/retry/RetryExponentialBackoff.java b/retry/src/main/java/com/iluwatar/retry/RetryExponentialBackoff.java index b7024c9184d0..91dc0d6b2369 100644 --- a/retry/src/main/java/com/iluwatar/retry/RetryExponentialBackoff.java +++ b/retry/src/main/java/com/iluwatar/retry/RetryExponentialBackoff.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.retry; import java.util.ArrayList; diff --git a/retry/src/test/java/com/iluwatar/retry/FindCustomerTest.java b/retry/src/test/java/com/iluwatar/retry/FindCustomerTest.java index d1cd87b21772..b52763099bd4 100644 --- a/retry/src/test/java/com/iluwatar/retry/FindCustomerTest.java +++ b/retry/src/test/java/com/iluwatar/retry/FindCustomerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.retry; import org.junit.jupiter.api.Test; diff --git a/retry/src/test/java/com/iluwatar/retry/RetryExponentialBackoffTest.java b/retry/src/test/java/com/iluwatar/retry/RetryExponentialBackoffTest.java index 23fd8add732c..f07d665af6a3 100644 --- a/retry/src/test/java/com/iluwatar/retry/RetryExponentialBackoffTest.java +++ b/retry/src/test/java/com/iluwatar/retry/RetryExponentialBackoffTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.retry; import org.junit.jupiter.api.Test; diff --git a/retry/src/test/java/com/iluwatar/retry/RetryTest.java b/retry/src/test/java/com/iluwatar/retry/RetryTest.java index 5366b525bc1e..64df9d14d8f9 100644 --- a/retry/src/test/java/com/iluwatar/retry/RetryTest.java +++ b/retry/src/test/java/com/iluwatar/retry/RetryTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.retry; import org.junit.jupiter.api.Test; diff --git a/semaphore/src/main/java/com/iluwatar/semaphore/App.java b/semaphore/src/main/java/com/iluwatar/semaphore/App.java index 36a792f2379b..e1f43cf97386 100644 --- a/semaphore/src/main/java/com/iluwatar/semaphore/App.java +++ b/semaphore/src/main/java/com/iluwatar/semaphore/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.semaphore; /** diff --git a/semaphore/src/main/java/com/iluwatar/semaphore/Customer.java b/semaphore/src/main/java/com/iluwatar/semaphore/Customer.java index 432cbb52ff7b..4e380f92a20b 100644 --- a/semaphore/src/main/java/com/iluwatar/semaphore/Customer.java +++ b/semaphore/src/main/java/com/iluwatar/semaphore/Customer.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.semaphore; import org.slf4j.Logger; diff --git a/semaphore/src/main/java/com/iluwatar/semaphore/Fruit.java b/semaphore/src/main/java/com/iluwatar/semaphore/Fruit.java index 52e8d8f0416c..05872be9d7ca 100644 --- a/semaphore/src/main/java/com/iluwatar/semaphore/Fruit.java +++ b/semaphore/src/main/java/com/iluwatar/semaphore/Fruit.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.semaphore; /** diff --git a/semaphore/src/main/java/com/iluwatar/semaphore/FruitBowl.java b/semaphore/src/main/java/com/iluwatar/semaphore/FruitBowl.java index a187c5a57acf..8696709a045e 100644 --- a/semaphore/src/main/java/com/iluwatar/semaphore/FruitBowl.java +++ b/semaphore/src/main/java/com/iluwatar/semaphore/FruitBowl.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.semaphore; import java.util.List; diff --git a/semaphore/src/main/java/com/iluwatar/semaphore/FruitShop.java b/semaphore/src/main/java/com/iluwatar/semaphore/FruitShop.java index 7881a79b9437..cd71955fb3bb 100644 --- a/semaphore/src/main/java/com/iluwatar/semaphore/FruitShop.java +++ b/semaphore/src/main/java/com/iluwatar/semaphore/FruitShop.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.semaphore; /** diff --git a/semaphore/src/main/java/com/iluwatar/semaphore/Lock.java b/semaphore/src/main/java/com/iluwatar/semaphore/Lock.java index 4813c5e22104..df7df2cf064d 100644 --- a/semaphore/src/main/java/com/iluwatar/semaphore/Lock.java +++ b/semaphore/src/main/java/com/iluwatar/semaphore/Lock.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.semaphore; /** diff --git a/semaphore/src/main/java/com/iluwatar/semaphore/Semaphore.java b/semaphore/src/main/java/com/iluwatar/semaphore/Semaphore.java index 9bd67380762e..9dfe79316e3a 100644 --- a/semaphore/src/main/java/com/iluwatar/semaphore/Semaphore.java +++ b/semaphore/src/main/java/com/iluwatar/semaphore/Semaphore.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.semaphore; /** diff --git a/semaphore/src/test/java/com/iluwatar/semaphore/AppTest.java b/semaphore/src/test/java/com/iluwatar/semaphore/AppTest.java index 55a8f0936713..087ab78758b2 100644 --- a/semaphore/src/test/java/com/iluwatar/semaphore/AppTest.java +++ b/semaphore/src/test/java/com/iluwatar/semaphore/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.semaphore; import org.junit.jupiter.api.Test; diff --git a/semaphore/src/test/java/com/iluwatar/semaphore/FruitBowlTest.java b/semaphore/src/test/java/com/iluwatar/semaphore/FruitBowlTest.java index b2ce4beb7b98..5cab7d64d9a1 100644 --- a/semaphore/src/test/java/com/iluwatar/semaphore/FruitBowlTest.java +++ b/semaphore/src/test/java/com/iluwatar/semaphore/FruitBowlTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.semaphore; import org.junit.jupiter.api.Test; diff --git a/semaphore/src/test/java/com/iluwatar/semaphore/SemaphoreTest.java b/semaphore/src/test/java/com/iluwatar/semaphore/SemaphoreTest.java index 393db51f384d..76f68af1537e 100644 --- a/semaphore/src/test/java/com/iluwatar/semaphore/SemaphoreTest.java +++ b/semaphore/src/test/java/com/iluwatar/semaphore/SemaphoreTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.semaphore; import org.junit.jupiter.api.Test; diff --git a/servant/src/main/java/com/iluwatar/servant/App.java b/servant/src/main/java/com/iluwatar/servant/App.java index 3b982dfb8a86..a629856d5173 100644 --- a/servant/src/main/java/com/iluwatar/servant/App.java +++ b/servant/src/main/java/com/iluwatar/servant/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servant; import org.slf4j.Logger; diff --git a/servant/src/main/java/com/iluwatar/servant/King.java b/servant/src/main/java/com/iluwatar/servant/King.java index 18c5bf3f8906..19db41201b54 100644 --- a/servant/src/main/java/com/iluwatar/servant/King.java +++ b/servant/src/main/java/com/iluwatar/servant/King.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servant; /** diff --git a/servant/src/main/java/com/iluwatar/servant/Queen.java b/servant/src/main/java/com/iluwatar/servant/Queen.java index 8e7a89bed69b..3e4fa486f422 100644 --- a/servant/src/main/java/com/iluwatar/servant/Queen.java +++ b/servant/src/main/java/com/iluwatar/servant/Queen.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servant; /** diff --git a/servant/src/main/java/com/iluwatar/servant/Royalty.java b/servant/src/main/java/com/iluwatar/servant/Royalty.java index 7a755cbd8e17..88c301ffe9fa 100644 --- a/servant/src/main/java/com/iluwatar/servant/Royalty.java +++ b/servant/src/main/java/com/iluwatar/servant/Royalty.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servant; /** diff --git a/servant/src/main/java/com/iluwatar/servant/Servant.java b/servant/src/main/java/com/iluwatar/servant/Servant.java index 11b78734ba58..97d6107c4838 100644 --- a/servant/src/main/java/com/iluwatar/servant/Servant.java +++ b/servant/src/main/java/com/iluwatar/servant/Servant.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servant; import java.util.List; diff --git a/servant/src/test/java/com/iluwatar/servant/AppTest.java b/servant/src/test/java/com/iluwatar/servant/AppTest.java index a41faa57dbd1..ef37ff010477 100644 --- a/servant/src/test/java/com/iluwatar/servant/AppTest.java +++ b/servant/src/test/java/com/iluwatar/servant/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servant; import org.junit.jupiter.api.Test; diff --git a/servant/src/test/java/com/iluwatar/servant/KingTest.java b/servant/src/test/java/com/iluwatar/servant/KingTest.java index 2206673899c1..ed97ae7cfa00 100644 --- a/servant/src/test/java/com/iluwatar/servant/KingTest.java +++ b/servant/src/test/java/com/iluwatar/servant/KingTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servant; import org.junit.jupiter.api.Test; diff --git a/servant/src/test/java/com/iluwatar/servant/QueenTest.java b/servant/src/test/java/com/iluwatar/servant/QueenTest.java index 1dfe07716007..a82eec7767f4 100644 --- a/servant/src/test/java/com/iluwatar/servant/QueenTest.java +++ b/servant/src/test/java/com/iluwatar/servant/QueenTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servant; diff --git a/servant/src/test/java/com/iluwatar/servant/ServantTest.java b/servant/src/test/java/com/iluwatar/servant/ServantTest.java index 624ee32c3525..4431f6d60837 100644 --- a/servant/src/test/java/com/iluwatar/servant/ServantTest.java +++ b/servant/src/test/java/com/iluwatar/servant/ServantTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servant; import org.junit.jupiter.api.Test; diff --git a/serverless/src/main/java/com/iluwatar/serverless/baas/api/AbstractDynamoDbHandler.java b/serverless/src/main/java/com/iluwatar/serverless/baas/api/AbstractDynamoDbHandler.java index 0295f03a6694..eff21f879cdc 100644 --- a/serverless/src/main/java/com/iluwatar/serverless/baas/api/AbstractDynamoDbHandler.java +++ b/serverless/src/main/java/com/iluwatar/serverless/baas/api/AbstractDynamoDbHandler.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.serverless.baas.api; import com.amazonaws.regions.Regions; diff --git a/serverless/src/main/java/com/iluwatar/serverless/baas/api/FindPersonApiHandler.java b/serverless/src/main/java/com/iluwatar/serverless/baas/api/FindPersonApiHandler.java index 14f2b25a5153..3e0bde023761 100644 --- a/serverless/src/main/java/com/iluwatar/serverless/baas/api/FindPersonApiHandler.java +++ b/serverless/src/main/java/com/iluwatar/serverless/baas/api/FindPersonApiHandler.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.serverless.baas.api; import com.amazonaws.services.lambda.runtime.Context; diff --git a/serverless/src/main/java/com/iluwatar/serverless/baas/api/SavePersonApiHandler.java b/serverless/src/main/java/com/iluwatar/serverless/baas/api/SavePersonApiHandler.java index 8ef4b839ec63..502f12258d94 100644 --- a/serverless/src/main/java/com/iluwatar/serverless/baas/api/SavePersonApiHandler.java +++ b/serverless/src/main/java/com/iluwatar/serverless/baas/api/SavePersonApiHandler.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.serverless.baas.api; import com.amazonaws.services.lambda.runtime.Context; diff --git a/serverless/src/main/java/com/iluwatar/serverless/baas/model/Address.java b/serverless/src/main/java/com/iluwatar/serverless/baas/model/Address.java index 8c6232c4efd1..c2e8fdac609e 100644 --- a/serverless/src/main/java/com/iluwatar/serverless/baas/model/Address.java +++ b/serverless/src/main/java/com/iluwatar/serverless/baas/model/Address.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.serverless.baas.model; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute; diff --git a/serverless/src/main/java/com/iluwatar/serverless/baas/model/Person.java b/serverless/src/main/java/com/iluwatar/serverless/baas/model/Person.java index 2a83448501bd..3328b837032e 100644 --- a/serverless/src/main/java/com/iluwatar/serverless/baas/model/Person.java +++ b/serverless/src/main/java/com/iluwatar/serverless/baas/model/Person.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.serverless.baas.model; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute; diff --git a/serverless/src/main/java/com/iluwatar/serverless/faas/ApiGatewayResponse.java b/serverless/src/main/java/com/iluwatar/serverless/faas/ApiGatewayResponse.java index 665c3dec659d..8de0421612c8 100644 --- a/serverless/src/main/java/com/iluwatar/serverless/faas/ApiGatewayResponse.java +++ b/serverless/src/main/java/com/iluwatar/serverless/faas/ApiGatewayResponse.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.serverless.faas; import com.fasterxml.jackson.core.JsonProcessingException; diff --git a/serverless/src/main/java/com/iluwatar/serverless/faas/LambdaInfo.java b/serverless/src/main/java/com/iluwatar/serverless/faas/LambdaInfo.java index bae73281bc60..4186cfef8b7a 100644 --- a/serverless/src/main/java/com/iluwatar/serverless/faas/LambdaInfo.java +++ b/serverless/src/main/java/com/iluwatar/serverless/faas/LambdaInfo.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.serverless.faas; import java.io.Serializable; diff --git a/serverless/src/main/java/com/iluwatar/serverless/faas/api/LambdaInfoApiHandler.java b/serverless/src/main/java/com/iluwatar/serverless/faas/api/LambdaInfoApiHandler.java index 174e409c35c6..b88c24612453 100644 --- a/serverless/src/main/java/com/iluwatar/serverless/faas/api/LambdaInfoApiHandler.java +++ b/serverless/src/main/java/com/iluwatar/serverless/faas/api/LambdaInfoApiHandler.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.serverless.faas.api; import com.iluwatar.serverless.faas.ApiGatewayResponse; diff --git a/serverless/src/test/java/com/iluwatar/serverless/baas/api/FindPersonApiHandlerTest.java b/serverless/src/test/java/com/iluwatar/serverless/baas/api/FindPersonApiHandlerTest.java index 193346ab8ead..a688bdf9d0ac 100644 --- a/serverless/src/test/java/com/iluwatar/serverless/baas/api/FindPersonApiHandlerTest.java +++ b/serverless/src/test/java/com/iluwatar/serverless/baas/api/FindPersonApiHandlerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.serverless.baas.api; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; diff --git a/serverless/src/test/java/com/iluwatar/serverless/baas/api/SavePersonApiHandlerTest.java b/serverless/src/test/java/com/iluwatar/serverless/baas/api/SavePersonApiHandlerTest.java index da31f8ac4fd6..66636c011458 100644 --- a/serverless/src/test/java/com/iluwatar/serverless/baas/api/SavePersonApiHandlerTest.java +++ b/serverless/src/test/java/com/iluwatar/serverless/baas/api/SavePersonApiHandlerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.serverless.baas.api; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; diff --git a/serverless/src/test/java/com/iluwatar/serverless/faas/api/LambdaInfoApiHandlerTest.java b/serverless/src/test/java/com/iluwatar/serverless/faas/api/LambdaInfoApiHandlerTest.java index 9922c1a5c55e..ec6872973449 100644 --- a/serverless/src/test/java/com/iluwatar/serverless/faas/api/LambdaInfoApiHandlerTest.java +++ b/serverless/src/test/java/com/iluwatar/serverless/faas/api/LambdaInfoApiHandlerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.serverless.faas.api; import com.amazonaws.services.lambda.runtime.Context; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/app/App.java b/service-layer/src/main/java/com/iluwatar/servicelayer/app/App.java index 4d6ba0399bc1..1da25e4cb51f 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/app/App.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/app/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.app; import java.util.List; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/common/BaseEntity.java b/service-layer/src/main/java/com/iluwatar/servicelayer/common/BaseEntity.java index a3c084109887..d58ffd2c90e0 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/common/BaseEntity.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/common/BaseEntity.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.common; import javax.persistence.Inheritance; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/common/Dao.java b/service-layer/src/main/java/com/iluwatar/servicelayer/common/Dao.java index 8e72e3225580..1fb41d0c8a98 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/common/Dao.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/common/Dao.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.common; import java.util.List; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/common/DaoBaseImpl.java b/service-layer/src/main/java/com/iluwatar/servicelayer/common/DaoBaseImpl.java index 290b9d148cb6..9accede55349 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/common/DaoBaseImpl.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/common/DaoBaseImpl.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.common; import java.lang.reflect.ParameterizedType; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/hibernate/HibernateUtil.java b/service-layer/src/main/java/com/iluwatar/servicelayer/hibernate/HibernateUtil.java index a6e3bd39bd86..673918711a57 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/hibernate/HibernateUtil.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/hibernate/HibernateUtil.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.hibernate; import com.iluwatar.servicelayer.spell.Spell; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/magic/MagicService.java b/service-layer/src/main/java/com/iluwatar/servicelayer/magic/MagicService.java index ede38ec856c4..f0780b3382a3 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/magic/MagicService.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/magic/MagicService.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.magic; import java.util.List; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/magic/MagicServiceImpl.java b/service-layer/src/main/java/com/iluwatar/servicelayer/magic/MagicServiceImpl.java index d2319bc0dbe4..78bf3c0d00ce 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/magic/MagicServiceImpl.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/magic/MagicServiceImpl.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.magic; import java.util.ArrayList; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/spell/Spell.java b/service-layer/src/main/java/com/iluwatar/servicelayer/spell/Spell.java index 242dc9e16c61..cc456c12432b 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/spell/Spell.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/spell/Spell.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.spell; import javax.persistence.Column; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDao.java b/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDao.java index 50f008670381..cb7989176e83 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDao.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDao.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.spell; import com.iluwatar.servicelayer.common.Dao; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDaoImpl.java b/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDaoImpl.java index fb061bb967f0..f4be0ae902ab 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDaoImpl.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDaoImpl.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.spell; import com.iluwatar.servicelayer.common.DaoBaseImpl; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/Spellbook.java b/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/Spellbook.java index 07893f53a654..481fa20db76a 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/Spellbook.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/Spellbook.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.spellbook; import java.util.HashSet; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDao.java b/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDao.java index 69cb03fc8676..11cb667890ac 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDao.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDao.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.spellbook; import com.iluwatar.servicelayer.common.Dao; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImpl.java b/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImpl.java index 980dfdc7649c..3ca708fde8f6 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImpl.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImpl.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.spellbook; import org.hibernate.Criteria; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/Wizard.java b/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/Wizard.java index c970d88df4cc..05e65faf3f6f 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/Wizard.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/Wizard.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.wizard; import java.util.HashSet; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDao.java b/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDao.java index d42656704523..945509dc526c 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDao.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDao.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.wizard; import com.iluwatar.servicelayer.common.Dao; diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDaoImpl.java b/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDaoImpl.java index ccbd49f50ee5..e16f150d0c2e 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDaoImpl.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDaoImpl.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.wizard; import org.hibernate.Criteria; diff --git a/service-layer/src/test/java/com/iluwatar/servicelayer/app/AppTest.java b/service-layer/src/test/java/com/iluwatar/servicelayer/app/AppTest.java index fc7a4910d127..f144e026633e 100644 --- a/service-layer/src/test/java/com/iluwatar/servicelayer/app/AppTest.java +++ b/service-layer/src/test/java/com/iluwatar/servicelayer/app/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.app; import com.iluwatar.servicelayer.hibernate.HibernateUtil; diff --git a/service-layer/src/test/java/com/iluwatar/servicelayer/common/BaseDaoTest.java b/service-layer/src/test/java/com/iluwatar/servicelayer/common/BaseDaoTest.java index b46584cc9271..e70cf0625ac7 100644 --- a/service-layer/src/test/java/com/iluwatar/servicelayer/common/BaseDaoTest.java +++ b/service-layer/src/test/java/com/iluwatar/servicelayer/common/BaseDaoTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.common; import com.iluwatar.servicelayer.hibernate.HibernateUtil; diff --git a/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java b/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java index c92b15e103ce..03284ab6ddd8 100644 --- a/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java +++ b/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.magic; import com.iluwatar.servicelayer.spell.Spell; diff --git a/service-layer/src/test/java/com/iluwatar/servicelayer/spell/SpellDaoImplTest.java b/service-layer/src/test/java/com/iluwatar/servicelayer/spell/SpellDaoImplTest.java index f6f61505b4e3..bd6afaedc187 100644 --- a/service-layer/src/test/java/com/iluwatar/servicelayer/spell/SpellDaoImplTest.java +++ b/service-layer/src/test/java/com/iluwatar/servicelayer/spell/SpellDaoImplTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.spell; import com.iluwatar.servicelayer.common.BaseDaoTest; diff --git a/service-layer/src/test/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImplTest.java b/service-layer/src/test/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImplTest.java index e24b126023aa..01fed1bcb79a 100644 --- a/service-layer/src/test/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImplTest.java +++ b/service-layer/src/test/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImplTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.spellbook; import com.iluwatar.servicelayer.common.BaseDaoTest; diff --git a/service-layer/src/test/java/com/iluwatar/servicelayer/wizard/WizardDaoImplTest.java b/service-layer/src/test/java/com/iluwatar/servicelayer/wizard/WizardDaoImplTest.java index b3fa3dec0cc9..ca2b679c9e2e 100644 --- a/service-layer/src/test/java/com/iluwatar/servicelayer/wizard/WizardDaoImplTest.java +++ b/service-layer/src/test/java/com/iluwatar/servicelayer/wizard/WizardDaoImplTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelayer.wizard; import com.iluwatar.servicelayer.common.BaseDaoTest; diff --git a/service-locator/src/main/java/com/iluwatar/servicelocator/App.java b/service-locator/src/main/java/com/iluwatar/servicelocator/App.java index 72f7ed6a9a48..f5704c54f237 100644 --- a/service-locator/src/main/java/com/iluwatar/servicelocator/App.java +++ b/service-locator/src/main/java/com/iluwatar/servicelocator/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelocator; /** diff --git a/service-locator/src/main/java/com/iluwatar/servicelocator/InitContext.java b/service-locator/src/main/java/com/iluwatar/servicelocator/InitContext.java index 1366f5102183..93c6e3c7d8f8 100644 --- a/service-locator/src/main/java/com/iluwatar/servicelocator/InitContext.java +++ b/service-locator/src/main/java/com/iluwatar/servicelocator/InitContext.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelocator; import org.slf4j.Logger; diff --git a/service-locator/src/main/java/com/iluwatar/servicelocator/Service.java b/service-locator/src/main/java/com/iluwatar/servicelocator/Service.java index 271bd60c279b..805b3e92c40d 100644 --- a/service-locator/src/main/java/com/iluwatar/servicelocator/Service.java +++ b/service-locator/src/main/java/com/iluwatar/servicelocator/Service.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelocator; /** diff --git a/service-locator/src/main/java/com/iluwatar/servicelocator/ServiceCache.java b/service-locator/src/main/java/com/iluwatar/servicelocator/ServiceCache.java index 9009c336086c..e32585b6b489 100644 --- a/service-locator/src/main/java/com/iluwatar/servicelocator/ServiceCache.java +++ b/service-locator/src/main/java/com/iluwatar/servicelocator/ServiceCache.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelocator; import org.slf4j.Logger; diff --git a/service-locator/src/main/java/com/iluwatar/servicelocator/ServiceImpl.java b/service-locator/src/main/java/com/iluwatar/servicelocator/ServiceImpl.java index f26c221411c3..b2440c838310 100644 --- a/service-locator/src/main/java/com/iluwatar/servicelocator/ServiceImpl.java +++ b/service-locator/src/main/java/com/iluwatar/servicelocator/ServiceImpl.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelocator; import org.slf4j.Logger; diff --git a/service-locator/src/main/java/com/iluwatar/servicelocator/ServiceLocator.java b/service-locator/src/main/java/com/iluwatar/servicelocator/ServiceLocator.java index cd2b94b7f24e..a94d8289e39b 100644 --- a/service-locator/src/main/java/com/iluwatar/servicelocator/ServiceLocator.java +++ b/service-locator/src/main/java/com/iluwatar/servicelocator/ServiceLocator.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelocator; /** diff --git a/service-locator/src/test/java/com/iluwatar/servicelocator/AppTest.java b/service-locator/src/test/java/com/iluwatar/servicelocator/AppTest.java index 9d337263781e..f77f1c612edf 100644 --- a/service-locator/src/test/java/com/iluwatar/servicelocator/AppTest.java +++ b/service-locator/src/test/java/com/iluwatar/servicelocator/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelocator; import org.junit.jupiter.api.Test; diff --git a/service-locator/src/test/java/com/iluwatar/servicelocator/ServiceLocatorTest.java b/service-locator/src/test/java/com/iluwatar/servicelocator/ServiceLocatorTest.java index c50b44a4bc09..16bc934eb017 100644 --- a/service-locator/src/test/java/com/iluwatar/servicelocator/ServiceLocatorTest.java +++ b/service-locator/src/test/java/com/iluwatar/servicelocator/ServiceLocatorTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.servicelocator; import org.junit.jupiter.api.Test; diff --git a/singleton/src/main/java/com/iluwatar/singleton/App.java b/singleton/src/main/java/com/iluwatar/singleton/App.java index 54d0da981dc7..668e7658b65e 100644 --- a/singleton/src/main/java/com/iluwatar/singleton/App.java +++ b/singleton/src/main/java/com/iluwatar/singleton/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.singleton; import org.slf4j.Logger; diff --git a/singleton/src/main/java/com/iluwatar/singleton/EnumIvoryTower.java b/singleton/src/main/java/com/iluwatar/singleton/EnumIvoryTower.java index b9dc1b3b146a..2028b7d76bd4 100644 --- a/singleton/src/main/java/com/iluwatar/singleton/EnumIvoryTower.java +++ b/singleton/src/main/java/com/iluwatar/singleton/EnumIvoryTower.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.singleton; /** diff --git a/singleton/src/main/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiom.java b/singleton/src/main/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiom.java index c3492ac6cdb0..dfd4951f7726 100644 --- a/singleton/src/main/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiom.java +++ b/singleton/src/main/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiom.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.singleton; /** diff --git a/singleton/src/main/java/com/iluwatar/singleton/IvoryTower.java b/singleton/src/main/java/com/iluwatar/singleton/IvoryTower.java index d6cf3a3fb3ab..c8d551404c8b 100644 --- a/singleton/src/main/java/com/iluwatar/singleton/IvoryTower.java +++ b/singleton/src/main/java/com/iluwatar/singleton/IvoryTower.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.singleton; /** diff --git a/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLocking.java b/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLocking.java index 3a811b5521a7..db285ce2f427 100644 --- a/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLocking.java +++ b/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLocking.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.singleton; /** diff --git a/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTower.java b/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTower.java index 3001b7691a26..82580acf6896 100644 --- a/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTower.java +++ b/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTower.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.singleton; /** diff --git a/singleton/src/test/java/com/iluwatar/singleton/AppTest.java b/singleton/src/test/java/com/iluwatar/singleton/AppTest.java index 5c418b1036c7..66974e47271a 100644 --- a/singleton/src/test/java/com/iluwatar/singleton/AppTest.java +++ b/singleton/src/test/java/com/iluwatar/singleton/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.singleton; import org.junit.jupiter.api.Test; diff --git a/singleton/src/test/java/com/iluwatar/singleton/EnumIvoryTowerTest.java b/singleton/src/test/java/com/iluwatar/singleton/EnumIvoryTowerTest.java index fb10c9d54b49..49dfae6b0d1b 100644 --- a/singleton/src/test/java/com/iluwatar/singleton/EnumIvoryTowerTest.java +++ b/singleton/src/test/java/com/iluwatar/singleton/EnumIvoryTowerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.singleton; /** diff --git a/singleton/src/test/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiomTest.java b/singleton/src/test/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiomTest.java index 4f5eb715606a..d7021dac7bdd 100644 --- a/singleton/src/test/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiomTest.java +++ b/singleton/src/test/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiomTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.singleton; /** diff --git a/singleton/src/test/java/com/iluwatar/singleton/IvoryTowerTest.java b/singleton/src/test/java/com/iluwatar/singleton/IvoryTowerTest.java index 9f367bd2b6bd..ac5a145cbedc 100644 --- a/singleton/src/test/java/com/iluwatar/singleton/IvoryTowerTest.java +++ b/singleton/src/test/java/com/iluwatar/singleton/IvoryTowerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.singleton; /** diff --git a/singleton/src/test/java/com/iluwatar/singleton/SingletonTest.java b/singleton/src/test/java/com/iluwatar/singleton/SingletonTest.java index 19814c3a5372..e98796aefa5b 100644 --- a/singleton/src/test/java/com/iluwatar/singleton/SingletonTest.java +++ b/singleton/src/test/java/com/iluwatar/singleton/SingletonTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.singleton; import org.junit.jupiter.api.Disabled; diff --git a/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLockingTest.java b/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLockingTest.java index 0255bd74a7bc..fff516ad3a2e 100644 --- a/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLockingTest.java +++ b/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLockingTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.singleton; import org.junit.Test; diff --git a/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTowerTest.java b/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTowerTest.java index a1cf61cd91e2..7ca1caf3d695 100644 --- a/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTowerTest.java +++ b/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTowerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.singleton; /** diff --git a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/App.java b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/App.java index f6a07de62f6a..3e7a64b6ca34 100644 --- a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/App.java +++ b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.spatialpartition; import org.slf4j.Logger; diff --git a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Bubble.java b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Bubble.java index 8147c4ea3f5d..8a11c4f88895 100644 --- a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Bubble.java +++ b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Bubble.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.spatialpartition; import org.slf4j.Logger; diff --git a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Point.java b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Point.java index b1d58d7a8e01..3b5fb963f20c 100644 --- a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Point.java +++ b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Point.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.spatialpartition; import java.util.ArrayList; diff --git a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/QuadTree.java b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/QuadTree.java index ea49020b8629..7c2a93bda901 100644 --- a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/QuadTree.java +++ b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/QuadTree.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.spatialpartition; import java.util.ArrayList; diff --git a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Rect.java b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Rect.java index 71d4eda5bfa7..6142c99d896e 100644 --- a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Rect.java +++ b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/Rect.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.spatialpartition; /** diff --git a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/SpatialPartitionBubbles.java b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/SpatialPartitionBubbles.java index e1ed341452df..48714aa0a9cc 100644 --- a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/SpatialPartitionBubbles.java +++ b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/SpatialPartitionBubbles.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.spatialpartition; import java.util.ArrayList; diff --git a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/SpatialPartitionGeneric.java b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/SpatialPartitionGeneric.java index 82c3d87e7e74..d5f1818ed3c5 100644 --- a/spatial-partition/src/main/java/com/iluwatar/spatialpartition/SpatialPartitionGeneric.java +++ b/spatial-partition/src/main/java/com/iluwatar/spatialpartition/SpatialPartitionGeneric.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.spatialpartition; import java.util.Hashtable; diff --git a/spatial-partition/src/test/java/com/iluwatar/spatialpartition/BubbleTest.java b/spatial-partition/src/test/java/com/iluwatar/spatialpartition/BubbleTest.java index a8fc236474c2..e26de5b696c4 100644 --- a/spatial-partition/src/test/java/com/iluwatar/spatialpartition/BubbleTest.java +++ b/spatial-partition/src/test/java/com/iluwatar/spatialpartition/BubbleTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.spatialpartition; import static org.junit.jupiter.api.Assertions.*; diff --git a/spatial-partition/src/test/java/com/iluwatar/spatialpartition/QuadTreeTest.java b/spatial-partition/src/test/java/com/iluwatar/spatialpartition/QuadTreeTest.java index 15f1022fdae9..9335cd9c9641 100644 --- a/spatial-partition/src/test/java/com/iluwatar/spatialpartition/QuadTreeTest.java +++ b/spatial-partition/src/test/java/com/iluwatar/spatialpartition/QuadTreeTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.spatialpartition; import static org.junit.jupiter.api.Assertions.*; diff --git a/spatial-partition/src/test/java/com/iluwatar/spatialpartition/RectTest.java b/spatial-partition/src/test/java/com/iluwatar/spatialpartition/RectTest.java index 7a88d43bc103..599b0d9f48ae 100644 --- a/spatial-partition/src/test/java/com/iluwatar/spatialpartition/RectTest.java +++ b/spatial-partition/src/test/java/com/iluwatar/spatialpartition/RectTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.spatialpartition; import static org.junit.jupiter.api.Assertions.*; diff --git a/spatial-partition/src/test/java/com/iluwatar/spatialpartition/SpatialPartitionBubblesTest.java b/spatial-partition/src/test/java/com/iluwatar/spatialpartition/SpatialPartitionBubblesTest.java index 3b7a7d18dc87..aac2e0d69992 100644 --- a/spatial-partition/src/test/java/com/iluwatar/spatialpartition/SpatialPartitionBubblesTest.java +++ b/spatial-partition/src/test/java/com/iluwatar/spatialpartition/SpatialPartitionBubblesTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.spatialpartition; import static org.junit.jupiter.api.Assertions.*; diff --git a/specification/src/main/java/com/iluwatar/specification/app/App.java b/specification/src/main/java/com/iluwatar/specification/app/App.java index 0be1c109aa7b..df80f855f1f5 100644 --- a/specification/src/main/java/com/iluwatar/specification/app/App.java +++ b/specification/src/main/java/com/iluwatar/specification/app/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.app; import java.util.Arrays; diff --git a/specification/src/main/java/com/iluwatar/specification/creature/AbstractCreature.java b/specification/src/main/java/com/iluwatar/specification/creature/AbstractCreature.java index 033589f02265..566885560c7e 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/AbstractCreature.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/AbstractCreature.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.creature; import com.iluwatar.specification.property.Color; diff --git a/specification/src/main/java/com/iluwatar/specification/creature/Creature.java b/specification/src/main/java/com/iluwatar/specification/creature/Creature.java index 9c1705a9defd..c999f546d928 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/Creature.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/Creature.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.creature; import com.iluwatar.specification.property.Color; diff --git a/specification/src/main/java/com/iluwatar/specification/creature/Dragon.java b/specification/src/main/java/com/iluwatar/specification/creature/Dragon.java index 458c8e806fbb..833b8522b866 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/Dragon.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/Dragon.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.creature; import com.iluwatar.specification.property.Color; diff --git a/specification/src/main/java/com/iluwatar/specification/creature/Goblin.java b/specification/src/main/java/com/iluwatar/specification/creature/Goblin.java index 3835d6f713a7..0153e21fe7e0 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/Goblin.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/Goblin.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.creature; import com.iluwatar.specification.property.Color; diff --git a/specification/src/main/java/com/iluwatar/specification/creature/KillerBee.java b/specification/src/main/java/com/iluwatar/specification/creature/KillerBee.java index f4ad3d2c7679..04c416b7abe2 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/KillerBee.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/KillerBee.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.creature; import com.iluwatar.specification.property.Color; diff --git a/specification/src/main/java/com/iluwatar/specification/creature/Octopus.java b/specification/src/main/java/com/iluwatar/specification/creature/Octopus.java index ef99f5e4036e..bb2c5718b8de 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/Octopus.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/Octopus.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.creature; import com.iluwatar.specification.property.Color; diff --git a/specification/src/main/java/com/iluwatar/specification/creature/Shark.java b/specification/src/main/java/com/iluwatar/specification/creature/Shark.java index ef68b96bcd58..56ec1651aa4b 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/Shark.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/Shark.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.creature; import com.iluwatar.specification.property.Color; diff --git a/specification/src/main/java/com/iluwatar/specification/creature/Troll.java b/specification/src/main/java/com/iluwatar/specification/creature/Troll.java index a6a74e17ee39..1d6a79bb8296 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/Troll.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/Troll.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.creature; import com.iluwatar.specification.property.Color; diff --git a/specification/src/main/java/com/iluwatar/specification/property/Color.java b/specification/src/main/java/com/iluwatar/specification/property/Color.java index 8af07d6c967d..9f64e1b77b2e 100644 --- a/specification/src/main/java/com/iluwatar/specification/property/Color.java +++ b/specification/src/main/java/com/iluwatar/specification/property/Color.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.property; /** diff --git a/specification/src/main/java/com/iluwatar/specification/property/Movement.java b/specification/src/main/java/com/iluwatar/specification/property/Movement.java index 7869fe63dfa4..5bf0863e4ed2 100644 --- a/specification/src/main/java/com/iluwatar/specification/property/Movement.java +++ b/specification/src/main/java/com/iluwatar/specification/property/Movement.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.property; /** diff --git a/specification/src/main/java/com/iluwatar/specification/property/Size.java b/specification/src/main/java/com/iluwatar/specification/property/Size.java index c82b53ca69b0..a4a09e96c798 100644 --- a/specification/src/main/java/com/iluwatar/specification/property/Size.java +++ b/specification/src/main/java/com/iluwatar/specification/property/Size.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.property; /** diff --git a/specification/src/main/java/com/iluwatar/specification/selector/ColorSelector.java b/specification/src/main/java/com/iluwatar/specification/selector/ColorSelector.java index 9fb150b46ebd..75e922bff0ab 100644 --- a/specification/src/main/java/com/iluwatar/specification/selector/ColorSelector.java +++ b/specification/src/main/java/com/iluwatar/specification/selector/ColorSelector.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.selector; import java.util.function.Predicate; diff --git a/specification/src/main/java/com/iluwatar/specification/selector/MovementSelector.java b/specification/src/main/java/com/iluwatar/specification/selector/MovementSelector.java index c0987218f431..19613dfeddb7 100644 --- a/specification/src/main/java/com/iluwatar/specification/selector/MovementSelector.java +++ b/specification/src/main/java/com/iluwatar/specification/selector/MovementSelector.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.selector; import java.util.function.Predicate; diff --git a/specification/src/main/java/com/iluwatar/specification/selector/SizeSelector.java b/specification/src/main/java/com/iluwatar/specification/selector/SizeSelector.java index 39594cef0f1d..1d561e95cff1 100644 --- a/specification/src/main/java/com/iluwatar/specification/selector/SizeSelector.java +++ b/specification/src/main/java/com/iluwatar/specification/selector/SizeSelector.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.selector; import java.util.function.Predicate; diff --git a/specification/src/test/java/com/iluwatar/specification/app/AppTest.java b/specification/src/test/java/com/iluwatar/specification/app/AppTest.java index 64df2b286e5c..5f6d950fe6f4 100644 --- a/specification/src/test/java/com/iluwatar/specification/app/AppTest.java +++ b/specification/src/test/java/com/iluwatar/specification/app/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.app; import org.junit.jupiter.api.Test; diff --git a/specification/src/test/java/com/iluwatar/specification/creature/CreatureTest.java b/specification/src/test/java/com/iluwatar/specification/creature/CreatureTest.java index 29d4bbd651eb..022475c24238 100644 --- a/specification/src/test/java/com/iluwatar/specification/creature/CreatureTest.java +++ b/specification/src/test/java/com/iluwatar/specification/creature/CreatureTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.creature; import com.iluwatar.specification.property.Color; diff --git a/specification/src/test/java/com/iluwatar/specification/selector/ColorSelectorTest.java b/specification/src/test/java/com/iluwatar/specification/selector/ColorSelectorTest.java index 2c8572c54268..cc47ba5955e2 100644 --- a/specification/src/test/java/com/iluwatar/specification/selector/ColorSelectorTest.java +++ b/specification/src/test/java/com/iluwatar/specification/selector/ColorSelectorTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.selector; import com.iluwatar.specification.creature.Creature; diff --git a/specification/src/test/java/com/iluwatar/specification/selector/MovementSelectorTest.java b/specification/src/test/java/com/iluwatar/specification/selector/MovementSelectorTest.java index 2797ef92d9b7..e194790fbc2c 100644 --- a/specification/src/test/java/com/iluwatar/specification/selector/MovementSelectorTest.java +++ b/specification/src/test/java/com/iluwatar/specification/selector/MovementSelectorTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.selector; import com.iluwatar.specification.creature.Creature; diff --git a/specification/src/test/java/com/iluwatar/specification/selector/SizeSelectorTest.java b/specification/src/test/java/com/iluwatar/specification/selector/SizeSelectorTest.java index 66891927b075..9145f9b810c6 100644 --- a/specification/src/test/java/com/iluwatar/specification/selector/SizeSelectorTest.java +++ b/specification/src/test/java/com/iluwatar/specification/selector/SizeSelectorTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.specification.selector; import com.iluwatar.specification.creature.Creature; diff --git a/state/src/main/java/com/iluwatar/state/AngryState.java b/state/src/main/java/com/iluwatar/state/AngryState.java index b792202882b1..0ce9f868c364 100644 --- a/state/src/main/java/com/iluwatar/state/AngryState.java +++ b/state/src/main/java/com/iluwatar/state/AngryState.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.state; import org.slf4j.Logger; diff --git a/state/src/main/java/com/iluwatar/state/App.java b/state/src/main/java/com/iluwatar/state/App.java index 31d8baf76a82..d930e048bdda 100644 --- a/state/src/main/java/com/iluwatar/state/App.java +++ b/state/src/main/java/com/iluwatar/state/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.state; /** diff --git a/state/src/main/java/com/iluwatar/state/Mammoth.java b/state/src/main/java/com/iluwatar/state/Mammoth.java index df0a23deaf26..0791815f00c5 100644 --- a/state/src/main/java/com/iluwatar/state/Mammoth.java +++ b/state/src/main/java/com/iluwatar/state/Mammoth.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.state; /** diff --git a/state/src/main/java/com/iluwatar/state/PeacefulState.java b/state/src/main/java/com/iluwatar/state/PeacefulState.java index 37c6f643963b..49586f87729e 100644 --- a/state/src/main/java/com/iluwatar/state/PeacefulState.java +++ b/state/src/main/java/com/iluwatar/state/PeacefulState.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.state; import org.slf4j.Logger; diff --git a/state/src/main/java/com/iluwatar/state/State.java b/state/src/main/java/com/iluwatar/state/State.java index f4dbbce1ed25..c2ae69780aa9 100644 --- a/state/src/main/java/com/iluwatar/state/State.java +++ b/state/src/main/java/com/iluwatar/state/State.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.state; /** diff --git a/state/src/test/java/com/iluwatar/state/AppTest.java b/state/src/test/java/com/iluwatar/state/AppTest.java index b5089e7ab412..b61fdcb10371 100644 --- a/state/src/test/java/com/iluwatar/state/AppTest.java +++ b/state/src/test/java/com/iluwatar/state/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.state; import org.junit.jupiter.api.Test; diff --git a/state/src/test/java/com/iluwatar/state/MammothTest.java b/state/src/test/java/com/iluwatar/state/MammothTest.java index af943d78ba9f..1286d74266d7 100644 --- a/state/src/test/java/com/iluwatar/state/MammothTest.java +++ b/state/src/test/java/com/iluwatar/state/MammothTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.state; import ch.qos.logback.classic.Logger; diff --git a/step-builder/src/main/java/com/iluwatar/stepbuilder/App.java b/step-builder/src/main/java/com/iluwatar/stepbuilder/App.java index 1dd03306d637..dda5dd2258de 100644 --- a/step-builder/src/main/java/com/iluwatar/stepbuilder/App.java +++ b/step-builder/src/main/java/com/iluwatar/stepbuilder/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.stepbuilder; import org.slf4j.Logger; diff --git a/step-builder/src/main/java/com/iluwatar/stepbuilder/Character.java b/step-builder/src/main/java/com/iluwatar/stepbuilder/Character.java index aa94e36837fc..5036bd3366b7 100644 --- a/step-builder/src/main/java/com/iluwatar/stepbuilder/Character.java +++ b/step-builder/src/main/java/com/iluwatar/stepbuilder/Character.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.stepbuilder; import java.util.List; diff --git a/step-builder/src/main/java/com/iluwatar/stepbuilder/CharacterStepBuilder.java b/step-builder/src/main/java/com/iluwatar/stepbuilder/CharacterStepBuilder.java index b07897ab56fd..e11698b2acf6 100644 --- a/step-builder/src/main/java/com/iluwatar/stepbuilder/CharacterStepBuilder.java +++ b/step-builder/src/main/java/com/iluwatar/stepbuilder/CharacterStepBuilder.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.stepbuilder; import java.util.ArrayList; diff --git a/step-builder/src/test/java/com/iluwatar/stepbuilder/AppTest.java b/step-builder/src/test/java/com/iluwatar/stepbuilder/AppTest.java index 7b4079a1f329..d4e99bc9ea1e 100644 --- a/step-builder/src/test/java/com/iluwatar/stepbuilder/AppTest.java +++ b/step-builder/src/test/java/com/iluwatar/stepbuilder/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.stepbuilder; import org.junit.jupiter.api.Test; diff --git a/step-builder/src/test/java/com/iluwatar/stepbuilder/CharacterStepBuilderTest.java b/step-builder/src/test/java/com/iluwatar/stepbuilder/CharacterStepBuilderTest.java index 46d4a8cf3f64..4c8ebbd3975a 100644 --- a/step-builder/src/test/java/com/iluwatar/stepbuilder/CharacterStepBuilderTest.java +++ b/step-builder/src/test/java/com/iluwatar/stepbuilder/CharacterStepBuilderTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.stepbuilder; import org.junit.jupiter.api.Test; diff --git a/strategy/src/main/java/com/iluwatar/strategy/App.java b/strategy/src/main/java/com/iluwatar/strategy/App.java index d44ec5784d76..746afc0419dc 100644 --- a/strategy/src/main/java/com/iluwatar/strategy/App.java +++ b/strategy/src/main/java/com/iluwatar/strategy/App.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.strategy; import org.slf4j.Logger; diff --git a/strategy/src/main/java/com/iluwatar/strategy/DragonSlayer.java b/strategy/src/main/java/com/iluwatar/strategy/DragonSlayer.java index f04060c8d4ab..0455edaca98b 100644 --- a/strategy/src/main/java/com/iluwatar/strategy/DragonSlayer.java +++ b/strategy/src/main/java/com/iluwatar/strategy/DragonSlayer.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.strategy; /** diff --git a/strategy/src/main/java/com/iluwatar/strategy/DragonSlayingStrategy.java b/strategy/src/main/java/com/iluwatar/strategy/DragonSlayingStrategy.java index 933a3d51e8fe..eb89523ad402 100644 --- a/strategy/src/main/java/com/iluwatar/strategy/DragonSlayingStrategy.java +++ b/strategy/src/main/java/com/iluwatar/strategy/DragonSlayingStrategy.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.strategy; /** diff --git a/strategy/src/main/java/com/iluwatar/strategy/MeleeStrategy.java b/strategy/src/main/java/com/iluwatar/strategy/MeleeStrategy.java index 68c556baa754..8cb2f24c12be 100644 --- a/strategy/src/main/java/com/iluwatar/strategy/MeleeStrategy.java +++ b/strategy/src/main/java/com/iluwatar/strategy/MeleeStrategy.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.strategy; import org.slf4j.Logger; diff --git a/strategy/src/main/java/com/iluwatar/strategy/ProjectileStrategy.java b/strategy/src/main/java/com/iluwatar/strategy/ProjectileStrategy.java index 1da72fb09ebf..4b6031ddfa21 100644 --- a/strategy/src/main/java/com/iluwatar/strategy/ProjectileStrategy.java +++ b/strategy/src/main/java/com/iluwatar/strategy/ProjectileStrategy.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.strategy; import org.slf4j.Logger; diff --git a/strategy/src/main/java/com/iluwatar/strategy/SpellStrategy.java b/strategy/src/main/java/com/iluwatar/strategy/SpellStrategy.java index ca3faa827e65..ffe85c7a21f8 100644 --- a/strategy/src/main/java/com/iluwatar/strategy/SpellStrategy.java +++ b/strategy/src/main/java/com/iluwatar/strategy/SpellStrategy.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.strategy; import org.slf4j.Logger; diff --git a/strategy/src/test/java/com/iluwatar/strategy/AppTest.java b/strategy/src/test/java/com/iluwatar/strategy/AppTest.java index 44487654f1da..598085ce4e03 100644 --- a/strategy/src/test/java/com/iluwatar/strategy/AppTest.java +++ b/strategy/src/test/java/com/iluwatar/strategy/AppTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.strategy; import org.junit.jupiter.api.Test; diff --git a/strategy/src/test/java/com/iluwatar/strategy/DragonSlayerTest.java b/strategy/src/test/java/com/iluwatar/strategy/DragonSlayerTest.java index 2c1347d2e0df..52dfb3ff19e9 100644 --- a/strategy/src/test/java/com/iluwatar/strategy/DragonSlayerTest.java +++ b/strategy/src/test/java/com/iluwatar/strategy/DragonSlayerTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.strategy; import org.junit.jupiter.api.Test; diff --git a/strategy/src/test/java/com/iluwatar/strategy/DragonSlayingStrategyTest.java b/strategy/src/test/java/com/iluwatar/strategy/DragonSlayingStrategyTest.java index c9d5170ffc40..b97cf499fbf8 100644 --- a/strategy/src/test/java/com/iluwatar/strategy/DragonSlayingStrategyTest.java +++ b/strategy/src/test/java/com/iluwatar/strategy/DragonSlayingStrategyTest.java @@ -1,4 +1,4 @@ -/** +/* * The MIT License * Copyright © 2014-2019 Ilkka Seppälä * @@ -20,6 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + package com.iluwatar.strategy; import ch.qos.logback.classic.Logger; diff --git a/subclass-sandbox/pom.xml b/subclass-sandbox/pom.xml index 8016ba471ed0..eb493b28cc3b 100644 --- a/subclass-sandbox/pom.xml +++ b/subclass-sandbox/pom.xml @@ -2,7 +2,7 @@ + + org.commonjava.maven.plugins + directory-maven-plugin + 0.3.1 + + + directories + + directory-of + + initialize + + projectRoot + + com.iluwatar + java-design-patterns + + + + + + com.mycila license-maven-plugin @@ -417,7 +442,7 @@ true - license-plugin-header-style.xml + ${projectRoot}${file.separator}license-plugin-header-style.xml SLASHSTAR_CUSTOM_STYLE From d1767bbb51aa6895032f12bb58b62f6958e43f98 Mon Sep 17 00:00:00 2001 From: Boris Date: Sat, 26 Oct 2019 18:58:40 +0100 Subject: [PATCH 51/68] The pattern Role object (#1031) * init repo for role object * add to init * add to init * add first impl * add pattern * add license * add changes --- role-object/README.md | 31 ++++++ role-object/pom.xml | 44 ++++++++ .../roleobject/ApplicationRoleObject.java | 93 ++++++++++++++++ .../com/iluwatar/roleobject/BorrowerRole.java | 40 +++++++ .../com/iluwatar/roleobject/Customer.java | 79 ++++++++++++++ .../com/iluwatar/roleobject/CustomerCore.java | 75 +++++++++++++ .../com/iluwatar/roleobject/CustomerRole.java | 28 +++++ .../com/iluwatar/roleobject/InvestorRole.java | 48 ++++++++ .../java/com/iluwatar/roleobject/Role.java | 55 ++++++++++ .../roleobject/ApplicationRoleObjectTest.java | 33 ++++++ .../iluwatar/roleobject/BorrowerRoleTest.java | 40 +++++++ .../iluwatar/roleobject/CustomerCoreTest.java | 103 ++++++++++++++++++ .../iluwatar/roleobject/InvestorRoleTest.java | 38 +++++++ .../com/iluwatar/roleobject/RoleTest.java | 40 +++++++ 14 files changed, 747 insertions(+) create mode 100644 role-object/README.md create mode 100644 role-object/pom.xml create mode 100644 role-object/src/main/java/com/iluwatar/roleobject/ApplicationRoleObject.java create mode 100644 role-object/src/main/java/com/iluwatar/roleobject/BorrowerRole.java create mode 100644 role-object/src/main/java/com/iluwatar/roleobject/Customer.java create mode 100644 role-object/src/main/java/com/iluwatar/roleobject/CustomerCore.java create mode 100644 role-object/src/main/java/com/iluwatar/roleobject/CustomerRole.java create mode 100644 role-object/src/main/java/com/iluwatar/roleobject/InvestorRole.java create mode 100644 role-object/src/main/java/com/iluwatar/roleobject/Role.java create mode 100644 role-object/src/test/java/com/iluwatar/roleobject/ApplicationRoleObjectTest.java create mode 100644 role-object/src/test/java/com/iluwatar/roleobject/BorrowerRoleTest.java create mode 100644 role-object/src/test/java/com/iluwatar/roleobject/CustomerCoreTest.java create mode 100644 role-object/src/test/java/com/iluwatar/roleobject/InvestorRoleTest.java create mode 100644 role-object/src/test/java/com/iluwatar/roleobject/RoleTest.java diff --git a/role-object/README.md b/role-object/README.md new file mode 100644 index 000000000000..c97177d7b1d5 --- /dev/null +++ b/role-object/README.md @@ -0,0 +1,31 @@ +--- +layout: pattern +title: Role object +folder: Migration +permalink: /patterns/role-object/ +categories: Structural +tags: + - Java + - Difficulty-Medium + - Handle Body Pattern +--- + +## Also known as +Post pattern, Extension Object pattern + +## Intent +Adapt an object to different client’s needs through transparently attached role objects, each one representing a role +the object has to play in that client’s context. The object manages its role set dynamically. By representing roles as +individual objects, different contexts are kept separate and system configuration is simplified. + +## Applicability +Use the Role Object pattern, if: +- you want to handle a key abstraction in different contexts and you do not want to put the resulting context specific interfaces into the same class interface. +- you want to handle the available roles dynamically so that they can be attached and removed on demand, that is at runtime, rather than fixing them statically at compile-time. +- you want to treat the extensions transparently and need to preserve the logical object identity of the resultingobject conglomerate. +- you want to keep role/client pairs independent from each other so that changes to a role do not affect clients that are not interested in that role. + +## Credits +- [Hillside - Role object pattern](https://hillside.net/plop/plop97/Proceedings/riehle.pdf) +- [Role object](http://wiki.c2.com/?RoleObject) +- [Fowler - Dealing with roles](https://martinfowler.com/apsupp/roles.pdf) \ No newline at end of file diff --git a/role-object/pom.xml b/role-object/pom.xml new file mode 100644 index 000000000000..c9feb1419afd --- /dev/null +++ b/role-object/pom.xml @@ -0,0 +1,44 @@ + + + + 4.0.0 + + com.iluwatar + java-design-patterns + 1.22.0-SNAPSHOT + + + role-object + + + junit + junit + test + + + + diff --git a/role-object/src/main/java/com/iluwatar/roleobject/ApplicationRoleObject.java b/role-object/src/main/java/com/iluwatar/roleobject/ApplicationRoleObject.java new file mode 100644 index 000000000000..b8296dabacc6 --- /dev/null +++ b/role-object/src/main/java/com/iluwatar/roleobject/ApplicationRoleObject.java @@ -0,0 +1,93 @@ +/* + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.roleobject; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static com.iluwatar.roleobject.Role.*; + +/** + * The Role Object pattern suggests to model context-specific views + * of an object as separate role objects which are + * dynamically attached to and removed from the core object. + * We call the resulting composite object structure, + * consisting of the core and its role objects, a subject. + * A subject often plays several roles and the same role is likely to + * be played by different subjects. + * As an example consider two different customers playing the role of borrower and + * investor, respectively. Both roles could as well be played by a single {@link Customer} object. + * The common superclass for customer-specific roles is provided by {@link CustomerRole}, + * which also supports the {@link Customer} interface. + *

    + * The {@link CustomerRole} class is abstract and not meant to be instantiated. + * Concrete subclasses of {@link CustomerRole}, for example {@link BorrowerRole} or {@link InvestorRole}, + * define and implement the interface for specific roles. It is only + * these subclasses which are instantiated at runtime. + * The {@link BorrowerRole} class defines the context-specific view of {@link Customer} objects as needed by the loan department. + * It defines additional operations to manage the customer’s + * credits and securities. Similarly, the {@link InvestorRole} class adds operations specific + * to the investment department’s view of customers. + * A client like the loan application may either work with objects of the {@link CustomerRole} class, using the interface class + * {@link Customer}, or with objects of concrete {@link CustomerRole} subclasses. Suppose the loan application knows a particular + * {@link Customer} instance through its {@link Customer} interface. The loan application may want to check whether the {@link Customer} + * object plays the role of Borrower. + * To this end it calls {@link Customer#hasRole(Role)} with a suitable role specification. For the purpose of + * our example, let’s assume we can name roles with enum. + * If the {@link Customer} object can play the role named “Borrower,” the loan application will ask it + * to return a reference to the corresponding object. + * The loan application may now use this reference to call Borrower-specific operations. + */ +public class ApplicationRoleObject { + + private static final Logger logger = LoggerFactory.getLogger(Role.class); + + public static void main(String[] args) { + Customer customer = Customer.newCustomer(Borrower, Investor); + + logger.info(" the new customer created : {}", customer); + + boolean hasBorrowerRole = customer.hasRole(Borrower); + logger.info(" customer has a borrowed role - {}", hasBorrowerRole); + boolean hasInvestorRole = customer.hasRole(Investor); + logger.info(" customer has an investor role - {}", hasInvestorRole); + + customer.getRole(Investor, InvestorRole.class) + .ifPresent(inv -> { + inv.setAmountToInvest(1000); + inv.setName("Billy"); + }); + customer.getRole(Borrower, BorrowerRole.class) + .ifPresent(inv -> inv.setName("Johny")); + + customer.getRole(Investor, InvestorRole.class) + .map(InvestorRole::invest) + .ifPresent(logger::info); + + customer.getRole(Borrower, BorrowerRole.class) + .map(BorrowerRole::borrow) + .ifPresent(logger::info); + } + + +} diff --git a/role-object/src/main/java/com/iluwatar/roleobject/BorrowerRole.java b/role-object/src/main/java/com/iluwatar/roleobject/BorrowerRole.java new file mode 100644 index 000000000000..425d9511d083 --- /dev/null +++ b/role-object/src/main/java/com/iluwatar/roleobject/BorrowerRole.java @@ -0,0 +1,40 @@ +/* + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.roleobject; + +public class BorrowerRole extends CustomerRole{ + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String borrow(){ + return String.format("Borrower %s wants to get some money.",name); + } + +} diff --git a/role-object/src/main/java/com/iluwatar/roleobject/Customer.java b/role-object/src/main/java/com/iluwatar/roleobject/Customer.java new file mode 100644 index 000000000000..ebcddff4b154 --- /dev/null +++ b/role-object/src/main/java/com/iluwatar/roleobject/Customer.java @@ -0,0 +1,79 @@ +/* + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.roleobject; + +import java.util.Optional; + +/** + * The main abstraction to work with Customer. + */ +public abstract class Customer { + + /** + * Add specific role @see {@link Role} + * + * @param role to add + * @return true if the operation has been successful otherwise false + */ + public abstract boolean addRole(Role role); + + /** + * Check specific role @see {@link Role} + * + * @param role to check + * @return true if the role exists otherwise false + */ + + public abstract boolean hasRole(Role role); + + /** + * Remove specific role @see {@link Role} + * + * @param role to remove + * @return true if the operation has been successful otherwise false + */ + public abstract boolean remRole(Role role); + + /** + * Get specific instance associated with this role @see {@link Role} + * + * @param role to get + * @param expectedRole instance class expected to get + * @return optional with value if the instance exists and corresponds expected class + */ + public abstract Optional getRole(Role role, Class expectedRole); + + + public static Customer newCustomer() { + return new CustomerCore(); + } + + public static Customer newCustomer(Role... role) { + Customer customer = newCustomer(); + for (Role r : role) { + customer.addRole(r); + } + return customer; + } + +} diff --git a/role-object/src/main/java/com/iluwatar/roleobject/CustomerCore.java b/role-object/src/main/java/com/iluwatar/roleobject/CustomerCore.java new file mode 100644 index 000000000000..5de27aa9295d --- /dev/null +++ b/role-object/src/main/java/com/iluwatar/roleobject/CustomerCore.java @@ -0,0 +1,75 @@ +/* + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.roleobject; + +import java.util.*; + +/** + * Core class to store different customer roles + * + * @see CustomerRole + * Note: not thread safe + */ +public class CustomerCore extends Customer { + + private Map roles; + + public CustomerCore() { + roles = new HashMap<>(); + } + + @Override + public boolean addRole(Role role) { + return role + .instance() + .map(inst -> { + roles.put(role, inst); + return true; + }) + .orElse(false); + } + + @Override + public boolean hasRole(Role role) { + return roles.containsKey(role); + } + + @Override + public boolean remRole(Role role) { + return Objects.nonNull(roles.remove(role)); + } + + @Override + public Optional getRole(Role role, Class expectedRole) { + return Optional + .ofNullable(roles.get(role)) + .filter(expectedRole::isInstance) + .map(expectedRole::cast); + } + + @Override + public String toString() { + String roles = Arrays.toString(this.roles.keySet().toArray()); + return "Customer{roles=" + roles + "}"; + } +} diff --git a/role-object/src/main/java/com/iluwatar/roleobject/CustomerRole.java b/role-object/src/main/java/com/iluwatar/roleobject/CustomerRole.java new file mode 100644 index 000000000000..40fe2341b3a9 --- /dev/null +++ b/role-object/src/main/java/com/iluwatar/roleobject/CustomerRole.java @@ -0,0 +1,28 @@ +/* + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.roleobject; + +/** + * Key abstraction for segregated roles + */ +public abstract class CustomerRole extends CustomerCore{} diff --git a/role-object/src/main/java/com/iluwatar/roleobject/InvestorRole.java b/role-object/src/main/java/com/iluwatar/roleobject/InvestorRole.java new file mode 100644 index 000000000000..6d5c17c904f7 --- /dev/null +++ b/role-object/src/main/java/com/iluwatar/roleobject/InvestorRole.java @@ -0,0 +1,48 @@ +/* + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.roleobject; + +public class InvestorRole extends CustomerRole { + private String name; + private long amountToInvest; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public long getAmountToInvest() { + return amountToInvest; + } + + public void setAmountToInvest(long amountToInvest) { + this.amountToInvest = amountToInvest; + } + + public String invest() { + return String.format("Investor %s has invested %d dollars", name, amountToInvest); + } +} diff --git a/role-object/src/main/java/com/iluwatar/roleobject/Role.java b/role-object/src/main/java/com/iluwatar/roleobject/Role.java new file mode 100644 index 000000000000..f6c739891566 --- /dev/null +++ b/role-object/src/main/java/com/iluwatar/roleobject/Role.java @@ -0,0 +1,55 @@ +/* + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.roleobject; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Optional; + +/** + * Possible roles + */ +public enum Role { + Borrower(BorrowerRole.class), Investor(InvestorRole.class); + + private Class typeCst; + + Role(Class typeCst) { + this.typeCst = typeCst; + } + + private static final Logger logger = LoggerFactory.getLogger(Role.class); + + @SuppressWarnings("unchecked") + public Optional instance() { + Class typeCst = this.typeCst; + try { + return (Optional) Optional.of(typeCst.newInstance()); + } catch (InstantiationException | IllegalAccessException e) { + logger.error("error creating an object", e); + } + return Optional.empty(); + } + +} diff --git a/role-object/src/test/java/com/iluwatar/roleobject/ApplicationRoleObjectTest.java b/role-object/src/test/java/com/iluwatar/roleobject/ApplicationRoleObjectTest.java new file mode 100644 index 000000000000..831781d7103b --- /dev/null +++ b/role-object/src/test/java/com/iluwatar/roleobject/ApplicationRoleObjectTest.java @@ -0,0 +1,33 @@ +/* + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.roleobject; + +import org.junit.Test; + +public class ApplicationRoleObjectTest { + + @Test + public void mainTest() { + ApplicationRoleObject.main(new String[]{}); + } +} \ No newline at end of file diff --git a/role-object/src/test/java/com/iluwatar/roleobject/BorrowerRoleTest.java b/role-object/src/test/java/com/iluwatar/roleobject/BorrowerRoleTest.java new file mode 100644 index 000000000000..0c0f92fc2322 --- /dev/null +++ b/role-object/src/test/java/com/iluwatar/roleobject/BorrowerRoleTest.java @@ -0,0 +1,40 @@ +/* + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.roleobject; + +import org.junit.Assert; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class BorrowerRoleTest { + + @Test + public void borrowTest() { + BorrowerRole borrowerRole = new BorrowerRole(); + borrowerRole.setName("test"); + String res = "Borrower test wants to get some money."; + + Assert.assertEquals(borrowerRole.borrow(),res); + } +} \ No newline at end of file diff --git a/role-object/src/test/java/com/iluwatar/roleobject/CustomerCoreTest.java b/role-object/src/test/java/com/iluwatar/roleobject/CustomerCoreTest.java new file mode 100644 index 000000000000..1b2987400d05 --- /dev/null +++ b/role-object/src/test/java/com/iluwatar/roleobject/CustomerCoreTest.java @@ -0,0 +1,103 @@ +/* + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.roleobject; + +import org.junit.Test; + +import java.util.Optional; + +import static org.junit.Assert.*; + +public class CustomerCoreTest { + + @Test + public void addRole() { + CustomerCore core = new CustomerCore(); + boolean add = core.addRole(Role.Borrower); + assertTrue(add); + + } + + @Test + public void hasRole() { + CustomerCore core = new CustomerCore(); + core.addRole(Role.Borrower); + + boolean has = core.hasRole(Role.Borrower); + assertTrue(has); + + boolean notHas = core.hasRole(Role.Investor); + assertFalse(notHas); + } + + @Test + public void remRole() { + CustomerCore core = new CustomerCore(); + core.addRole(Role.Borrower); + + Optional bRole = core.getRole(Role.Borrower, BorrowerRole.class); + assertTrue(bRole.isPresent()); + + boolean res = core.remRole(Role.Borrower); + assertTrue(res); + + Optional empt = core.getRole(Role.Borrower, BorrowerRole.class); + assertFalse(empt.isPresent()); + + } + + @Test + public void getRole() { + CustomerCore core = new CustomerCore(); + core.addRole(Role.Borrower); + + Optional bRole = core.getRole(Role.Borrower, BorrowerRole.class); + assertTrue(bRole.isPresent()); + + Optional nonRole = core.getRole(Role.Borrower, InvestorRole.class); + assertFalse(nonRole.isPresent()); + + Optional invRole = core.getRole(Role.Investor, InvestorRole.class); + assertFalse(invRole.isPresent()); + + + } + + + @Test + public void toStringTest() { + CustomerCore core = new CustomerCore(); + core.addRole(Role.Borrower); + assertEquals(core.toString(), "Customer{roles=[Borrower]}"); + + core = new CustomerCore(); + core.addRole(Role.Investor); + assertEquals(core.toString(), "Customer{roles=[Investor]}"); + + core = new CustomerCore(); + assertEquals(core.toString(), "Customer{roles=[]}"); + + + } + +} \ No newline at end of file diff --git a/role-object/src/test/java/com/iluwatar/roleobject/InvestorRoleTest.java b/role-object/src/test/java/com/iluwatar/roleobject/InvestorRoleTest.java new file mode 100644 index 000000000000..06afa1016275 --- /dev/null +++ b/role-object/src/test/java/com/iluwatar/roleobject/InvestorRoleTest.java @@ -0,0 +1,38 @@ +/* + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.roleobject; + +import org.junit.Assert; +import org.junit.Test; + +public class InvestorRoleTest { + + @Test + public void investTest() { + InvestorRole investorRole = new InvestorRole(); + investorRole.setName("test"); + investorRole.setAmountToInvest(10); + String res = "Investor test has invested 10 dollars"; + Assert.assertEquals(investorRole.invest(), res); + } +} \ No newline at end of file diff --git a/role-object/src/test/java/com/iluwatar/roleobject/RoleTest.java b/role-object/src/test/java/com/iluwatar/roleobject/RoleTest.java new file mode 100644 index 000000000000..6ae5b0cd8857 --- /dev/null +++ b/role-object/src/test/java/com/iluwatar/roleobject/RoleTest.java @@ -0,0 +1,40 @@ +/* + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.roleobject; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.Optional; + +import static org.junit.Assert.*; + +public class RoleTest { + + @Test + public void instanceTest() { + Optional instance = Role.Borrower.instance(); + Assert.assertTrue(instance.isPresent()); + Assert.assertEquals(instance.get().getClass(),BorrowerRole.class); + } +} \ No newline at end of file From 9f7e3fe55216d88e14d49e403a6149765d5e4d1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Sat, 26 Oct 2019 21:09:19 +0300 Subject: [PATCH 52/68] Update license headers --- .../com/iluwatar/adapter/package-info.java | 23 +++++++++++++++++++ pom.xml | 3 +++ 2 files changed, 26 insertions(+) diff --git a/adapter/src/main/java/com/iluwatar/adapter/package-info.java b/adapter/src/main/java/com/iluwatar/adapter/package-info.java index eb7e442f9f20..d036d86ddb47 100644 --- a/adapter/src/main/java/com/iluwatar/adapter/package-info.java +++ b/adapter/src/main/java/com/iluwatar/adapter/package-info.java @@ -1 +1,24 @@ +/* + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + package com.iluwatar.adapter; diff --git a/pom.xml b/pom.xml index 1bcf73b8b4d5..8b8139f790e3 100644 --- a/pom.xml +++ b/pom.xml @@ -447,6 +447,9 @@ SLASHSTAR_CUSTOM_STYLE + + .github/FUNDING.yml + From b50189e283b8e90023cc2b61b3ca0993f1618c90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Sat, 26 Oct 2019 21:26:42 +0300 Subject: [PATCH 53/68] Fix Role Object front matter --- role-object/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/role-object/README.md b/role-object/README.md index c97177d7b1d5..0e960140c987 100644 --- a/role-object/README.md +++ b/role-object/README.md @@ -1,7 +1,7 @@ --- layout: pattern -title: Role object -folder: Migration +title: Role Object +folder: role-object permalink: /patterns/role-object/ categories: Structural tags: From 63fb8dc31824ff81dc977de3e8e506e3041039af Mon Sep 17 00:00:00 2001 From: Leon Mak Date: Mon, 28 Oct 2019 04:05:10 +0800 Subject: [PATCH 54/68] Add java 11 (#1048) --- .../com/iluwatar/abstractdocument/App.java | 34 ++++++------ .../AbstractDocumentTest.java | 11 ++-- .../iluwatar/abstractdocument/DomainTest.java | 29 +++++----- .../iluwatar/collectionpipeline/AppTest.java | 44 ++++++++------- .../java/com/iluwatar/commander/Service.java | 8 ++- .../commander/queue/QueueDatabase.java | 9 ++-- .../com/iluwatar/commander/RetryTest.java | 24 ++++----- composite/README.md | 34 ++++++------ .../com/iluwatar/composite/Messenger.java | 54 ++++++++----------- .../main/java/com/iluwatar/converter/App.java | 6 +-- .../com/iluwatar/converter/ConverterTest.java | 7 ++- 11 files changed, 117 insertions(+), 143 deletions(-) diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java index a0d9d13c8a79..99be4ee12719 100644 --- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java +++ b/abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java @@ -23,14 +23,13 @@ package com.iluwatar.abstractdocument; -import java.util.Arrays; -import java.util.HashMap; - +import com.iluwatar.abstractdocument.domain.Car; +import com.iluwatar.abstractdocument.domain.enums.Property; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.iluwatar.abstractdocument.domain.Car; -import com.iluwatar.abstractdocument.domain.enums.Property; +import java.util.List; +import java.util.Map; /** * The Abstract Document pattern enables handling additional, non-static @@ -52,21 +51,20 @@ public class App { public App() { LOGGER.info("Constructing parts and car"); - var carProperties = new HashMap(); - carProperties.put(Property.MODEL.toString(), "300SL"); - carProperties.put(Property.PRICE.toString(), 10000L); - - var wheelProperties = new HashMap(); - wheelProperties.put(Property.TYPE.toString(), "wheel"); - wheelProperties.put(Property.MODEL.toString(), "15C"); - wheelProperties.put(Property.PRICE.toString(), 100L); + var wheelProperties = Map.of( + Property.TYPE.toString(), "wheel", + Property.MODEL.toString(), "15C", + Property.PRICE.toString(), 100L); - var doorProperties = new HashMap(); - doorProperties.put(Property.TYPE.toString(), "door"); - doorProperties.put(Property.MODEL.toString(), "Lambo"); - doorProperties.put(Property.PRICE.toString(), 300L); + var doorProperties = Map.of( + Property.TYPE.toString(), "door", + Property.MODEL.toString(), "Lambo", + Property.PRICE.toString(), 300L); - carProperties.put(Property.PARTS.toString(), Arrays.asList(wheelProperties, doorProperties)); + var carProperties = Map.of( + Property.MODEL.toString(), "300SL", + Property.PRICE.toString(), 10000L, + Property.PARTS.toString(), List.of(wheelProperties, doorProperties)); var car = new Car(carProperties); diff --git a/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java b/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java index 7f3e1eada124..0514c750aa77 100644 --- a/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java +++ b/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java @@ -31,9 +31,7 @@ import java.util.Map; import java.util.stream.Stream; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; /** * AbstractDocument test class @@ -60,9 +58,7 @@ public void shouldPutAndGetValue() { @Test public void shouldRetrieveChildren() { - Map child1 = new HashMap<>(); - Map child2 = new HashMap<>(); - List> children = Arrays.asList(child1, child2); + var children = List.of(Map.of(), Map.of()); document.put(KEY, children); @@ -80,8 +76,7 @@ public void shouldRetrieveEmptyStreamForNonExistingChildren() { @Test public void shouldIncludePropsInToString() { - Map props = new HashMap<>(); - props.put(KEY, VALUE); + Map props = Map.of(KEY, VALUE); DocumentImplementation document = new DocumentImplementation(props); assertTrue(document.toString().contains(KEY)); assertTrue(document.toString().contains(VALUE)); diff --git a/abstract-document/src/test/java/com/iluwatar/abstractdocument/DomainTest.java b/abstract-document/src/test/java/com/iluwatar/abstractdocument/DomainTest.java index 2dde49a1ea2a..663071f6a0a7 100644 --- a/abstract-document/src/test/java/com/iluwatar/abstractdocument/DomainTest.java +++ b/abstract-document/src/test/java/com/iluwatar/abstractdocument/DomainTest.java @@ -23,17 +23,16 @@ package com.iluwatar.abstractdocument; -import static org.junit.jupiter.api.Assertions.assertEquals; +import com.iluwatar.abstractdocument.domain.Car; +import com.iluwatar.abstractdocument.domain.Part; +import com.iluwatar.abstractdocument.domain.enums.Property; +import org.junit.jupiter.api.Test; -import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; -import org.junit.jupiter.api.Test; - -import com.iluwatar.abstractdocument.domain.Car; -import com.iluwatar.abstractdocument.domain.Part; -import com.iluwatar.abstractdocument.domain.enums.Property; +import static org.junit.jupiter.api.Assertions.assertEquals; /** * Test for Part and Car @@ -49,10 +48,10 @@ public class DomainTest { @Test public void shouldConstructPart() { - Map partProperties = new HashMap<>(); - partProperties.put(Property.TYPE.toString(), TEST_PART_TYPE); - partProperties.put(Property.MODEL.toString(), TEST_PART_MODEL); - partProperties.put(Property.PRICE.toString(), TEST_PART_PRICE); + Map partProperties = Map.of( + Property.TYPE.toString(), TEST_PART_TYPE, + Property.MODEL.toString(), TEST_PART_MODEL, + Property.PRICE.toString(), TEST_PART_PRICE); Part part = new Part(partProperties); assertEquals(TEST_PART_TYPE, part.getType().get()); @@ -62,10 +61,10 @@ public void shouldConstructPart() { @Test public void shouldConstructCar() { - Map carProperties = new HashMap<>(); - carProperties.put(Property.MODEL.toString(), TEST_CAR_MODEL); - carProperties.put(Property.PRICE.toString(), TEST_CAR_PRICE); - carProperties.put(Property.PARTS.toString(), Arrays.asList(new HashMap<>(), new HashMap<>())); + Map carProperties = Map.of( + Property.MODEL.toString(), TEST_CAR_MODEL, + Property.PRICE.toString(), TEST_CAR_PRICE, + Property.PARTS.toString(), List.of(new HashMap<>(), new HashMap<>())); Car car = new Car(carProperties); assertEquals(TEST_CAR_MODEL, car.getModel().get()); diff --git a/collection-pipeline/src/test/java/com/iluwatar/collectionpipeline/AppTest.java b/collection-pipeline/src/test/java/com/iluwatar/collectionpipeline/AppTest.java index 5cec263cdead..6bc035920d88 100644 --- a/collection-pipeline/src/test/java/com/iluwatar/collectionpipeline/AppTest.java +++ b/collection-pipeline/src/test/java/com/iluwatar/collectionpipeline/AppTest.java @@ -23,16 +23,14 @@ package com.iluwatar.collectionpipeline; -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import java.util.Arrays; -import java.util.HashMap; import java.util.List; import java.util.Map; -import org.junit.jupiter.api.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import static org.junit.jupiter.api.Assertions.assertEquals; /** * Tests that Collection Pipeline methods work as expected. @@ -44,27 +42,27 @@ public class AppTest { @Test public void testGetModelsAfter2000UsingFor() { - List models = ImperativeProgramming.getModelsAfter2000(cars); - assertEquals(Arrays.asList("Avenger", "Wrangler", "Focus", "Cascada"), models); + var models = ImperativeProgramming.getModelsAfter2000(cars); + assertEquals(List.of("Avenger", "Wrangler", "Focus", "Cascada"), models); } @Test public void testGetModelsAfter2000UsingPipeline() { - List models = FunctionalProgramming.getModelsAfter2000(cars); - assertEquals(Arrays.asList("Avenger", "Wrangler", "Focus", "Cascada"), models); + var models = FunctionalProgramming.getModelsAfter2000(cars); + assertEquals(List.of("Avenger", "Wrangler", "Focus", "Cascada"), models); } @Test public void testGetGroupingOfCarsByCategory() { - Map> modelsExpected = new HashMap<>(); - modelsExpected.put(Category.CONVERTIBLE, Arrays.asList(new Car("Buick", "Cascada", 2016, Category.CONVERTIBLE), - new Car("Chevrolet", "Geo Metro", 1992, Category.CONVERTIBLE))); - modelsExpected.put(Category.SEDAN, Arrays.asList(new Car("Dodge", "Avenger", 2010, Category.SEDAN), - new Car("Ford", "Focus", 2012, Category.SEDAN))); - modelsExpected.put(Category.JEEP, Arrays.asList(new Car("Jeep", "Wrangler", 2011, Category.JEEP), - new Car("Jeep", "Comanche", 1990, Category.JEEP))); - Map> modelsFunctional = FunctionalProgramming.getGroupingOfCarsByCategory(cars); - Map> modelsImperative = ImperativeProgramming.getGroupingOfCarsByCategory(cars); + var modelsExpected = Map.of( + Category.CONVERTIBLE, List.of(new Car("Buick", "Cascada", 2016, Category.CONVERTIBLE), + new Car("Chevrolet", "Geo Metro", 1992, Category.CONVERTIBLE)), + Category.SEDAN, List.of(new Car("Dodge", "Avenger", 2010, Category.SEDAN), + new Car("Ford", "Focus", 2012, Category.SEDAN)), + Category.JEEP, List.of(new Car("Jeep", "Wrangler", 2011, Category.JEEP), + new Car("Jeep", "Comanche", 1990, Category.JEEP))); + var modelsFunctional = FunctionalProgramming.getGroupingOfCarsByCategory(cars); + var modelsImperative = ImperativeProgramming.getGroupingOfCarsByCategory(cars); LOGGER.info("Category " + modelsFunctional); assertEquals(modelsExpected, modelsFunctional); assertEquals(modelsExpected, modelsImperative); @@ -72,11 +70,11 @@ public void testGetGroupingOfCarsByCategory() { @Test public void testGetSedanCarsOwnedSortedByDate() { - Person john = new Person(cars); - List modelsExpected = Arrays.asList(new Car("Dodge", "Avenger", 2010, Category.SEDAN), + var john = new Person(cars); + var modelsExpected = List.of(new Car("Dodge", "Avenger", 2010, Category.SEDAN), new Car("Ford", "Focus", 2012, Category.SEDAN)); - List modelsFunctional = FunctionalProgramming.getSedanCarsOwnedSortedByDate(Arrays.asList(john)); - List modelsImperative = ImperativeProgramming.getSedanCarsOwnedSortedByDate(Arrays.asList(john)); + var modelsFunctional = FunctionalProgramming.getSedanCarsOwnedSortedByDate(List.of(john)); + var modelsImperative = ImperativeProgramming.getSedanCarsOwnedSortedByDate(List.of(john)); assertEquals(modelsExpected, modelsFunctional); assertEquals(modelsExpected, modelsImperative); } diff --git a/commander/src/main/java/com/iluwatar/commander/Service.java b/commander/src/main/java/com/iluwatar/commander/Service.java index f3b1940c7093..2e293520b87b 100644 --- a/commander/src/main/java/com/iluwatar/commander/Service.java +++ b/commander/src/main/java/com/iluwatar/commander/Service.java @@ -23,10 +23,8 @@ package com.iluwatar.commander; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Hashtable; -import java.util.Random; +import java.util.*; + import com.iluwatar.commander.exceptions.DatabaseUnavailableException; /** @@ -49,7 +47,7 @@ public abstract class Service { protected Service(Database db, Exception...exc) { this.database = db; - this.exceptionsList = new ArrayList(Arrays.asList(exc)); + this.exceptionsList = new ArrayList<>(List.of(exc)); } public abstract String receiveRequest(Object...parameters) throws DatabaseUnavailableException; diff --git a/commander/src/main/java/com/iluwatar/commander/queue/QueueDatabase.java b/commander/src/main/java/com/iluwatar/commander/queue/QueueDatabase.java index 0010ce1f4d3e..6b9007b9fd36 100644 --- a/commander/src/main/java/com/iluwatar/commander/queue/QueueDatabase.java +++ b/commander/src/main/java/com/iluwatar/commander/queue/QueueDatabase.java @@ -23,12 +23,13 @@ package com.iluwatar.commander.queue; -import java.util.ArrayList; -import java.util.Arrays; import com.iluwatar.commander.Database; import com.iluwatar.commander.exceptions.DatabaseUnavailableException; import com.iluwatar.commander.exceptions.IsEmptyException; +import java.util.ArrayList; +import java.util.List; + /** * QueueDatabase id where the instructions to be implemented are queued. */ @@ -39,8 +40,8 @@ public class QueueDatabase extends Database { public ArrayList exceptionsList; public QueueDatabase(Exception...exc) { - this.data = new Queue(); - this.exceptionsList = new ArrayList(Arrays.asList(exc)); + this.data = new Queue<>(); + this.exceptionsList = new ArrayList<>(List.of(exc)); } @Override diff --git a/commander/src/test/java/com/iluwatar/commander/RetryTest.java b/commander/src/test/java/com/iluwatar/commander/RetryTest.java index 7dd142b9c83a..c4ee5caf7964 100644 --- a/commander/src/test/java/com/iluwatar/commander/RetryTest.java +++ b/commander/src/test/java/com/iluwatar/commander/RetryTest.java @@ -23,18 +23,14 @@ package com.iluwatar.commander; -import static org.junit.jupiter.api.Assertions.*; -import java.util.ArrayList; -import java.util.Arrays; -import org.junit.jupiter.api.Test; - -import com.iluwatar.commander.Order; -import com.iluwatar.commander.Retry; -import com.iluwatar.commander.User; -import com.iluwatar.commander.Retry.HandleErrorIssue; -import com.iluwatar.commander.Retry.Operation; import com.iluwatar.commander.exceptions.DatabaseUnavailableException; import com.iluwatar.commander.exceptions.ItemUnavailableException; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertTrue; class RetryTest { @@ -55,15 +51,15 @@ void performTest() { e -> DatabaseUnavailableException.class.isAssignableFrom(e.getClass())); User user = new User("Jim", "ABCD"); Order order = new Order(user, "book", 10f); - ArrayList arr1 = new ArrayList(Arrays.asList(new Exception[] - {new ItemUnavailableException(), new DatabaseUnavailableException()})); + ArrayList arr1 = new ArrayList<>(List.of( + new ItemUnavailableException(), new DatabaseUnavailableException())); try { r1.perform(arr1, order); } catch (Exception e1) { e1.printStackTrace(); } - ArrayList arr2 = new ArrayList(Arrays.asList(new Exception[] - {new DatabaseUnavailableException(), new ItemUnavailableException()})); + ArrayList arr2 = new ArrayList<>(List.of( + new DatabaseUnavailableException(), new ItemUnavailableException())); try { r2.perform(arr2, order); } catch (Exception e1) { diff --git a/composite/README.md b/composite/README.md index 05ee70cbb9b9..68d5339fb016 100644 --- a/composite/README.md +++ b/composite/README.md @@ -94,27 +94,27 @@ Then we have a messenger to carry messages ```java public class Messenger { LetterComposite messageFromOrcs() { - List words = new ArrayList<>(); - words.add(new Word(Arrays.asList(new Letter('W'), new Letter('h'), new Letter('e'), new Letter('r'), new Letter('e')))); - words.add(new Word(Arrays.asList(new Letter('t'), new Letter('h'), new Letter('e'), new Letter('r'), new Letter('e')))); - words.add(new Word(Arrays.asList(new Letter('i'), new Letter('s')))); - words.add(new Word(Arrays.asList(new Letter('a')))); - words.add(new Word(Arrays.asList(new Letter('w'), new Letter('h'), new Letter('i'), new Letter('p')))); - words.add(new Word(Arrays.asList(new Letter('t'), new Letter('h'), new Letter('e'), new Letter('r'), new Letter('e')))); - words.add(new Word(Arrays.asList(new Letter('i'), new Letter('s')))); - words.add(new Word(Arrays.asList(new Letter('a')))); - words.add(new Word(Arrays.asList(new Letter('w'), new Letter('a'), new Letter('y')))); + List words = List.of( + new Word(List.of(new Letter('W'), new Letter('h'), new Letter('e'), new Letter('r'), new Letter('e'))), + new Word(List.of(new Letter('t'), new Letter('h'), new Letter('e'), new Letter('r'), new Letter('e'))), + new Word(List.of(new Letter('i'), new Letter('s'))), + new Word(List.of(new Letter('a'))), + new Word(List.of(new Letter('w'), new Letter('h'), new Letter('i'), new Letter('p'))), + new Word(List.of(new Letter('t'), new Letter('h'), new Letter('e'), new Letter('r'), new Letter('e'))), + new Word(List.of(new Letter('i'), new Letter('s'))), + new Word(List.of(new Letter('a'))), + new Word(List.of(new Letter('w'), new Letter('a'), new Letter('y')))); return new Sentence(words); } LetterComposite messageFromElves() { - List words = new ArrayList<>(); - words.add(new Word(Arrays.asList(new Letter('M'), new Letter('u'), new Letter('c'), new Letter('h')))); - words.add(new Word(Arrays.asList(new Letter('w'), new Letter('i'), new Letter('n'), new Letter('d')))); - words.add(new Word(Arrays.asList(new Letter('p'), new Letter('o'), new Letter('u'), new Letter('r'), new Letter('s')))); - words.add(new Word(Arrays.asList(new Letter('f'), new Letter('r'), new Letter('o'), new Letter('m')))); - words.add(new Word(Arrays.asList(new Letter('y'), new Letter('o'), new Letter('u'), new Letter('r')))); - words.add(new Word(Arrays.asList(new Letter('m'), new Letter('o'), new Letter('u'), new Letter('t'), new Letter('h')))); + List words = List.of( + new Word(List.of(new Letter('M'), new Letter('u'), new Letter('c'), new Letter('h'))), + new Word(List.of(new Letter('w'), new Letter('i'), new Letter('n'), new Letter('d'))), + new Word(List.of(new Letter('p'), new Letter('o'), new Letter('u'), new Letter('r'), new Letter('s'))), + new Word(List.of(new Letter('f'), new Letter('r'), new Letter('o'), new Letter('m'))), + new Word(List.of(new Letter('y'), new Letter('o'), new Letter('u'), new Letter('r'))), + new Word(List.of(new Letter('m'), new Letter('o'), new Letter('u'), new Letter('t'), new Letter('h')))); return new Sentence(words); } } diff --git a/composite/src/main/java/com/iluwatar/composite/Messenger.java b/composite/src/main/java/com/iluwatar/composite/Messenger.java index c4d99faf61fa..ba6a08161456 100644 --- a/composite/src/main/java/com/iluwatar/composite/Messenger.java +++ b/composite/src/main/java/com/iluwatar/composite/Messenger.java @@ -23,8 +23,6 @@ package com.iluwatar.composite; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; /** @@ -36,21 +34,20 @@ public class Messenger { LetterComposite messageFromOrcs() { - List words = new ArrayList<>(); - - words.add(new Word(Arrays.asList(new Letter('W'), new Letter('h'), new Letter('e'), new Letter( - 'r'), new Letter('e')))); - words.add(new Word(Arrays.asList(new Letter('t'), new Letter('h'), new Letter('e'), new Letter( - 'r'), new Letter('e')))); - words.add(new Word(Arrays.asList(new Letter('i'), new Letter('s')))); - words.add(new Word(Arrays.asList(new Letter('a')))); - words.add(new Word(Arrays.asList(new Letter('w'), new Letter('h'), new Letter('i'), new Letter( - 'p')))); - words.add(new Word(Arrays.asList(new Letter('t'), new Letter('h'), new Letter('e'), new Letter( - 'r'), new Letter('e')))); - words.add(new Word(Arrays.asList(new Letter('i'), new Letter('s')))); - words.add(new Word(Arrays.asList(new Letter('a')))); - words.add(new Word(Arrays.asList(new Letter('w'), new Letter('a'), new Letter('y')))); + List words = List.of( + new Word(List.of(new Letter('W'), new Letter('h'), new Letter('e'), new Letter( + 'r'), new Letter('e'))), + new Word(List.of(new Letter('t'), new Letter('h'), new Letter('e'), new Letter( + 'r'), new Letter('e'))), + new Word(List.of(new Letter('i'), new Letter('s'))), + new Word(List.of(new Letter('a'))), + new Word(List.of(new Letter('w'), new Letter('h'), new Letter('i'), new Letter( + 'p'))), + new Word(List.of(new Letter('t'), new Letter('h'), new Letter('e'), new Letter( + 'r'), new Letter('e'))), + new Word(List.of(new Letter('i'), new Letter('s'))), + new Word(List.of(new Letter('a'))), + new Word(List.of(new Letter('w'), new Letter('a'), new Letter('y')))); return new Sentence(words); @@ -58,20 +55,15 @@ LetterComposite messageFromOrcs() { LetterComposite messageFromElves() { - List words = new ArrayList<>(); - - words.add(new Word(Arrays.asList(new Letter('M'), new Letter('u'), new Letter('c'), new Letter( - 'h')))); - words.add(new Word(Arrays.asList(new Letter('w'), new Letter('i'), new Letter('n'), new Letter( - 'd')))); - words.add(new Word(Arrays.asList(new Letter('p'), new Letter('o'), new Letter('u'), new Letter( - 'r'), new Letter('s')))); - words.add(new Word(Arrays.asList(new Letter('f'), new Letter('r'), new Letter('o'), new Letter( - 'm')))); - words.add(new Word(Arrays.asList(new Letter('y'), new Letter('o'), new Letter('u'), new Letter( - 'r')))); - words.add(new Word(Arrays.asList(new Letter('m'), new Letter('o'), new Letter('u'), new Letter( - 't'), new Letter('h')))); + List words = List.of( + new Word(List.of(new Letter('M'), new Letter('u'), new Letter('c'), new Letter('h'))), + new Word(List.of(new Letter('w'), new Letter('i'), new Letter('n'), new Letter('d'))), + new Word(List.of(new Letter('p'), new Letter('o'), new Letter('u'), new Letter('r'), + new Letter('s'))), + new Word(List.of(new Letter('f'), new Letter('r'), new Letter('o'), new Letter('m'))), + new Word(List.of(new Letter('y'), new Letter('o'), new Letter('u'), new Letter('r'))), + new Word(List.of(new Letter('m'), new Letter('o'), new Letter('u'), new Letter('t'), + new Letter('h')))); return new Sentence(words); diff --git a/converter/src/main/java/com/iluwatar/converter/App.java b/converter/src/main/java/com/iluwatar/converter/App.java index 0d4666ae6cb2..fab472328afd 100644 --- a/converter/src/main/java/com/iluwatar/converter/App.java +++ b/converter/src/main/java/com/iluwatar/converter/App.java @@ -24,11 +24,9 @@ package com.iluwatar.converter; -import com.google.common.collect.Lists; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; import java.util.List; /** @@ -38,7 +36,7 @@ * objects between types. */ public class App { - + private static final Logger LOGGER = LoggerFactory.getLogger(App.class); /** * Program entry point @@ -52,7 +50,7 @@ public static void main(String[] args) { User user = userConverter.convertFromDto(dtoUser); LOGGER.info("Entity converted from DTO:" + user); - ArrayList users = Lists.newArrayList(new User("Camile", "Tough", false, "124sad"), + var users = List.of(new User("Camile", "Tough", false, "124sad"), new User("Marti", "Luther", true, "42309fd"), new User("Kate", "Smith", true, "if0243")); LOGGER.info("Domain entities:"); users.stream().map(User::toString).forEach(LOGGER::info); diff --git a/converter/src/test/java/com/iluwatar/converter/ConverterTest.java b/converter/src/test/java/com/iluwatar/converter/ConverterTest.java index 90160c4678df..92d47bb41087 100644 --- a/converter/src/test/java/com/iluwatar/converter/ConverterTest.java +++ b/converter/src/test/java/com/iluwatar/converter/ConverterTest.java @@ -23,10 +23,8 @@ package com.iluwatar.converter; -import com.google.common.collect.Lists; import org.junit.jupiter.api.Test; -import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -81,8 +79,9 @@ public void testCustomConverter() { */ @Test public void testCollectionConversion() { - ArrayList users = Lists.newArrayList(new User("Camile", "Tough", false, "124sad"), - new User("Marti", "Luther", true, "42309fd"), new User("Kate", "Smith", true, "if0243")); + List users = List.of(new User("Camile", "Tough", false, "124sad"), + new User("Marti", "Luther", true, "42309fd"), + new User("Kate", "Smith", true, "if0243")); List fromDtos = userConverter.createFromDtos(userConverter.createFromEntities(users)); assertEquals(users, fromDtos); } From 6bb343896539bdce4a87e219f32362101e5088ac Mon Sep 17 00:00:00 2001 From: Leon Mak Date: Mon, 28 Oct 2019 04:08:09 +0800 Subject: [PATCH 55/68] Add java 11 (#1049) --- dao/src/main/java/com/iluwatar/dao/App.java | 6 +-- .../java/com/iluwatar/doubledispatch/App.java | 11 +++-- facade/README.md | 8 ++-- .../facade/DwarvenGoldmineFacade.java | 9 ++--- .../com/iluwatar/flyweight/AlchemistShop.java | 40 ++++++++----------- 5 files changed, 31 insertions(+), 43 deletions(-) diff --git a/dao/src/main/java/com/iluwatar/dao/App.java b/dao/src/main/java/com/iluwatar/dao/App.java index c8dd5629db7a..78406208a77e 100644 --- a/dao/src/main/java/com/iluwatar/dao/App.java +++ b/dao/src/main/java/com/iluwatar/dao/App.java @@ -128,10 +128,6 @@ public static List generateSampleCustomers() { final Customer customer1 = new Customer(1, "Adam", "Adamson"); final Customer customer2 = new Customer(2, "Bob", "Bobson"); final Customer customer3 = new Customer(3, "Carl", "Carlson"); - final List customers = new ArrayList<>(); - customers.add(customer1); - customers.add(customer2); - customers.add(customer3); - return customers; + return List.of(customer1, customer2, customer3); } } diff --git a/double-dispatch/src/main/java/com/iluwatar/doubledispatch/App.java b/double-dispatch/src/main/java/com/iluwatar/doubledispatch/App.java index 08d5440b9bc3..e6b670a6d524 100644 --- a/double-dispatch/src/main/java/com/iluwatar/doubledispatch/App.java +++ b/double-dispatch/src/main/java/com/iluwatar/doubledispatch/App.java @@ -26,7 +26,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; import java.util.List; /** @@ -59,11 +58,11 @@ public class App { */ public static void main(String[] args) { // initialize game objects and print their status - List objects = new ArrayList<>(); - objects.add(new FlamingAsteroid(0, 0, 5, 5)); - objects.add(new SpaceStationMir(1, 1, 2, 2)); - objects.add(new Meteoroid(10, 10, 15, 15)); - objects.add(new SpaceStationIss(12, 12, 14, 14)); + List objects = List.of( + new FlamingAsteroid(0, 0, 5, 5), + new SpaceStationMir(1, 1, 2, 2), + new Meteoroid(10, 10, 15, 15), + new SpaceStationIss(12, 12, 14, 14)); objects.stream().forEach(o -> LOGGER.info(o.toString())); LOGGER.info(""); diff --git a/facade/README.md b/facade/README.md index 505ceee394bb..d6c64500c3f8 100644 --- a/facade/README.md +++ b/facade/README.md @@ -146,10 +146,10 @@ public class DwarvenGoldmineFacade { private final List workers; public DwarvenGoldmineFacade() { - workers = new ArrayList<>(); - workers.add(new DwarvenGoldDigger()); - workers.add(new DwarvenCartOperator()); - workers.add(new DwarvenTunnelDigger()); + workers = List.of( + new DwarvenGoldDigger(), + new DwarvenCartOperator(), + new DwarvenTunnelDigger()); } public void startNewDay() { diff --git a/facade/src/main/java/com/iluwatar/facade/DwarvenGoldmineFacade.java b/facade/src/main/java/com/iluwatar/facade/DwarvenGoldmineFacade.java index e7062f334617..b49d46e93b53 100644 --- a/facade/src/main/java/com/iluwatar/facade/DwarvenGoldmineFacade.java +++ b/facade/src/main/java/com/iluwatar/facade/DwarvenGoldmineFacade.java @@ -23,7 +23,6 @@ package com.iluwatar.facade; -import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -43,10 +42,10 @@ public class DwarvenGoldmineFacade { * Constructor */ public DwarvenGoldmineFacade() { - workers = new ArrayList<>(); - workers.add(new DwarvenGoldDigger()); - workers.add(new DwarvenCartOperator()); - workers.add(new DwarvenTunnelDigger()); + workers = List.of( + new DwarvenGoldDigger(), + new DwarvenCartOperator(), + new DwarvenTunnelDigger()); } public void startNewDay() { diff --git a/flyweight/src/main/java/com/iluwatar/flyweight/AlchemistShop.java b/flyweight/src/main/java/com/iluwatar/flyweight/AlchemistShop.java index c139e25b47b9..78f01474ff8c 100644 --- a/flyweight/src/main/java/com/iluwatar/flyweight/AlchemistShop.java +++ b/flyweight/src/main/java/com/iluwatar/flyweight/AlchemistShop.java @@ -26,7 +26,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -46,29 +45,24 @@ public class AlchemistShop { * Constructor */ public AlchemistShop() { - topShelf = new ArrayList<>(); - bottomShelf = new ArrayList<>(); - fillShelves(); - } - - private void fillShelves() { - PotionFactory factory = new PotionFactory(); - - topShelf.add(factory.createPotion(PotionType.INVISIBILITY)); - topShelf.add(factory.createPotion(PotionType.INVISIBILITY)); - topShelf.add(factory.createPotion(PotionType.STRENGTH)); - topShelf.add(factory.createPotion(PotionType.HEALING)); - topShelf.add(factory.createPotion(PotionType.INVISIBILITY)); - topShelf.add(factory.createPotion(PotionType.STRENGTH)); - topShelf.add(factory.createPotion(PotionType.HEALING)); - topShelf.add(factory.createPotion(PotionType.HEALING)); - - bottomShelf.add(factory.createPotion(PotionType.POISON)); - bottomShelf.add(factory.createPotion(PotionType.POISON)); - bottomShelf.add(factory.createPotion(PotionType.POISON)); - bottomShelf.add(factory.createPotion(PotionType.HOLY_WATER)); - bottomShelf.add(factory.createPotion(PotionType.HOLY_WATER)); + topShelf = List.of( + factory.createPotion(PotionType.INVISIBILITY), + factory.createPotion(PotionType.INVISIBILITY), + factory.createPotion(PotionType.STRENGTH), + factory.createPotion(PotionType.HEALING), + factory.createPotion(PotionType.INVISIBILITY), + factory.createPotion(PotionType.STRENGTH), + factory.createPotion(PotionType.HEALING), + factory.createPotion(PotionType.HEALING) + ); + bottomShelf = List.of( + factory.createPotion(PotionType.POISON), + factory.createPotion(PotionType.POISON), + factory.createPotion(PotionType.POISON), + factory.createPotion(PotionType.HOLY_WATER), + factory.createPotion(PotionType.HOLY_WATER) + ); } /** From dd971d8c19bcf3ae8b25956ea6daed0362488cef Mon Sep 17 00:00:00 2001 From: Leon Mak Date: Mon, 28 Oct 2019 23:02:17 +0800 Subject: [PATCH 56/68] Use java 11 (#1050) --- .../hexagonal/sampledata/SampleData.java | 82 +++++++++---------- .../service/LotteryConsoleServiceImpl.java | 12 +-- .../hexagonal/domain/LotteryNumbersTest.java | 11 +-- .../hexagonal/domain/LotteryTest.java | 11 +-- .../hexagonal/domain/LotteryTicketTest.java | 7 +- .../hexagonal/test/LotteryTestUtils.java | 2 +- .../iluwatar/iterator/list/TreasureChest.java | 22 ++--- .../iterator/list/TreasureChestTest.java | 25 +++--- .../java/com/iluwatar/layers/CakeTest.java | 11 ++- .../com/iluwatar/layers/CakeViewImplTest.java | 12 ++- .../bully/BullyMessageManagerTest.java | 29 ++----- .../ring/RingMessageManagerTest.java | 19 +---- 12 files changed, 102 insertions(+), 141 deletions(-) diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java index 90dfd1fbdc18..8189303eb04a 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java @@ -31,7 +31,6 @@ import com.iluwatar.hexagonal.domain.LotteryTicketId; import com.iluwatar.hexagonal.domain.PlayerDetails; -import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -44,46 +43,47 @@ public class SampleData { private static final Random RANDOM = new Random(); static { - PLAYERS = new ArrayList<>(); - PLAYERS.add(new PlayerDetails("john@google.com", "312-342", "+3242434242")); - PLAYERS.add(new PlayerDetails("mary@google.com", "234-987", "+23452346")); - PLAYERS.add(new PlayerDetails("steve@google.com", "833-836", "+63457543")); - PLAYERS.add(new PlayerDetails("wayne@google.com", "319-826", "+24626")); - PLAYERS.add(new PlayerDetails("johnie@google.com", "983-322", "+3635635")); - PLAYERS.add(new PlayerDetails("andy@google.com", "934-734", "+0898245")); - PLAYERS.add(new PlayerDetails("richard@google.com", "536-738", "+09845325")); - PLAYERS.add(new PlayerDetails("kevin@google.com", "453-936", "+2423532")); - PLAYERS.add(new PlayerDetails("arnold@google.com", "114-988", "+5646346524")); - PLAYERS.add(new PlayerDetails("ian@google.com", "663-765", "+928394235")); - PLAYERS.add(new PlayerDetails("robin@google.com", "334-763", "+35448")); - PLAYERS.add(new PlayerDetails("ted@google.com", "735-964", "+98752345")); - PLAYERS.add(new PlayerDetails("larry@google.com", "734-853", "+043842423")); - PLAYERS.add(new PlayerDetails("calvin@google.com", "334-746", "+73294135")); - PLAYERS.add(new PlayerDetails("jacob@google.com", "444-766", "+358042354")); - PLAYERS.add(new PlayerDetails("edwin@google.com", "895-345", "+9752435")); - PLAYERS.add(new PlayerDetails("mary@google.com", "760-009", "+34203542")); - PLAYERS.add(new PlayerDetails("lolita@google.com", "425-907", "+9872342")); - PLAYERS.add(new PlayerDetails("bruno@google.com", "023-638", "+673824122")); - PLAYERS.add(new PlayerDetails("peter@google.com", "335-886", "+5432503945")); - PLAYERS.add(new PlayerDetails("warren@google.com", "225-946", "+9872341324")); - PLAYERS.add(new PlayerDetails("monica@google.com", "265-748", "+134124")); - PLAYERS.add(new PlayerDetails("ollie@google.com", "190-045", "+34453452")); - PLAYERS.add(new PlayerDetails("yngwie@google.com", "241-465", "+9897641231")); - PLAYERS.add(new PlayerDetails("lars@google.com", "746-936", "+42345298345")); - PLAYERS.add(new PlayerDetails("bobbie@google.com", "946-384", "+79831742")); - PLAYERS.add(new PlayerDetails("tyron@google.com", "310-992", "+0498837412")); - PLAYERS.add(new PlayerDetails("tyrell@google.com", "032-045", "+67834134")); - PLAYERS.add(new PlayerDetails("nadja@google.com", "000-346", "+498723")); - PLAYERS.add(new PlayerDetails("wendy@google.com", "994-989", "+987324454")); - PLAYERS.add(new PlayerDetails("luke@google.com", "546-634", "+987642435")); - PLAYERS.add(new PlayerDetails("bjorn@google.com", "342-874", "+7834325")); - PLAYERS.add(new PlayerDetails("lisa@google.com", "024-653", "+980742154")); - PLAYERS.add(new PlayerDetails("anton@google.com", "834-935", "+876423145")); - PLAYERS.add(new PlayerDetails("bruce@google.com", "284-936", "+09843212345")); - PLAYERS.add(new PlayerDetails("ray@google.com", "843-073", "+678324123")); - PLAYERS.add(new PlayerDetails("ron@google.com", "637-738", "+09842354")); - PLAYERS.add(new PlayerDetails("xavier@google.com", "143-947", "+375245")); - PLAYERS.add(new PlayerDetails("harriet@google.com", "842-404", "+131243252")); + PLAYERS = List.of( + new PlayerDetails("john@google.com", "312-342", "+3242434242"), + new PlayerDetails("mary@google.com", "234-987", "+23452346"), + new PlayerDetails("steve@google.com", "833-836", "+63457543"), + new PlayerDetails("wayne@google.com", "319-826", "+24626"), + new PlayerDetails("johnie@google.com", "983-322", "+3635635"), + new PlayerDetails("andy@google.com", "934-734", "+0898245"), + new PlayerDetails("richard@google.com", "536-738", "+09845325"), + new PlayerDetails("kevin@google.com", "453-936", "+2423532"), + new PlayerDetails("arnold@google.com", "114-988", "+5646346524"), + new PlayerDetails("ian@google.com", "663-765", "+928394235"), + new PlayerDetails("robin@google.com", "334-763", "+35448"), + new PlayerDetails("ted@google.com", "735-964", "+98752345"), + new PlayerDetails("larry@google.com", "734-853", "+043842423"), + new PlayerDetails("calvin@google.com", "334-746", "+73294135"), + new PlayerDetails("jacob@google.com", "444-766", "+358042354"), + new PlayerDetails("edwin@google.com", "895-345", "+9752435"), + new PlayerDetails("mary@google.com", "760-009", "+34203542"), + new PlayerDetails("lolita@google.com", "425-907", "+9872342"), + new PlayerDetails("bruno@google.com", "023-638", "+673824122"), + new PlayerDetails("peter@google.com", "335-886", "+5432503945"), + new PlayerDetails("warren@google.com", "225-946", "+9872341324"), + new PlayerDetails("monica@google.com", "265-748", "+134124"), + new PlayerDetails("ollie@google.com", "190-045", "+34453452"), + new PlayerDetails("yngwie@google.com", "241-465", "+9897641231"), + new PlayerDetails("lars@google.com", "746-936", "+42345298345"), + new PlayerDetails("bobbie@google.com", "946-384", "+79831742"), + new PlayerDetails("tyron@google.com", "310-992", "+0498837412"), + new PlayerDetails("tyrell@google.com", "032-045", "+67834134"), + new PlayerDetails("nadja@google.com", "000-346", "+498723"), + new PlayerDetails("wendy@google.com", "994-989", "+987324454"), + new PlayerDetails("luke@google.com", "546-634", "+987642435"), + new PlayerDetails("bjorn@google.com", "342-874", "+7834325"), + new PlayerDetails("lisa@google.com", "024-653", "+980742154"), + new PlayerDetails("anton@google.com", "834-935", "+876423145"), + new PlayerDetails("bruce@google.com", "284-936", "+09843212345"), + new PlayerDetails("ray@google.com", "843-073", "+678324123"), + new PlayerDetails("ron@google.com", "637-738", "+09842354"), + new PlayerDetails("xavier@google.com", "143-947", "+375245"), + new PlayerDetails("harriet@google.com", "842-404", "+131243252") + ); InMemoryBank wireTransfers = new InMemoryBank(); for (PlayerDetails player : PLAYERS) { wireTransfers.setFunds(player.getBankAccount(), diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java index c2a164353c08..3641b9a5c50c 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java @@ -27,10 +27,9 @@ import com.iluwatar.hexagonal.domain.*; import org.slf4j.Logger; -import java.util.HashSet; -import java.util.Optional; -import java.util.Scanner; -import java.util.Set; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.IntStream; /** * Console implementation for lottery console service @@ -88,10 +87,7 @@ public void submitTicket(LotteryService service, Scanner scanner) { String numbers = readString( scanner ); try { String[] parts = numbers.split( "," ); - Set chosen = new HashSet<>(); - for (int i = 0; i < 4; i++) { - chosen.add( Integer.parseInt( parts[i] ) ); - } + Set chosen = Arrays.stream(parts).map(Integer::parseInt).collect(Collectors.toSet()); LotteryNumbers lotteryNumbers = LotteryNumbers.create( chosen ); LotteryTicket lotteryTicket = new LotteryTicket( new LotteryTicketId(), details, lotteryNumbers ); Optional id = service.submitTicket( lotteryTicket ); diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryNumbersTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryNumbersTest.java index 83699d6d413b..1812263899b7 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryNumbersTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryNumbersTest.java @@ -27,6 +27,7 @@ import java.util.Arrays; import java.util.HashSet; +import java.util.Set; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; @@ -43,7 +44,7 @@ class LotteryNumbersTest { @Test void testGivenNumbers() { LotteryNumbers numbers = LotteryNumbers.create( - new HashSet<>(Arrays.asList(1, 2, 3, 4))); + Set.of(1, 2, 3, 4)); assertEquals(numbers.getNumbers().size(), 4); assertTrue(numbers.getNumbers().contains(1)); assertTrue(numbers.getNumbers().contains(2)); @@ -54,7 +55,7 @@ void testGivenNumbers() { @Test void testNumbersCantBeModified() { LotteryNumbers numbers = LotteryNumbers.create( - new HashSet<>(Arrays.asList(1, 2, 3, 4))); + Set.of(1, 2, 3, 4)); assertThrows(UnsupportedOperationException.class, () -> numbers.getNumbers().add(5)); } @@ -67,12 +68,12 @@ void testRandomNumbers() { @Test void testEquals() { LotteryNumbers numbers1 = LotteryNumbers.create( - new HashSet<>(Arrays.asList(1, 2, 3, 4))); + Set.of(1, 2, 3, 4)); LotteryNumbers numbers2 = LotteryNumbers.create( - new HashSet<>(Arrays.asList(1, 2, 3, 4))); + Set.of(1, 2, 3, 4)); assertEquals(numbers1, numbers2); LotteryNumbers numbers3 = LotteryNumbers.create( - new HashSet<>(Arrays.asList(11, 12, 13, 14))); + Set.of(11, 12, 13, 14)); assertNotEquals(numbers1, numbers3); } } diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTest.java index 4d06463d0c0f..a62adaff870a 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTest.java @@ -33,10 +33,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Map; -import java.util.Optional; +import java.util.*; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; @@ -76,13 +73,13 @@ void testLottery() { // players submit the lottery tickets Optional ticket1 = service.submitTicket(LotteryTestUtils.createLotteryTicket("cvt@bbb.com", - "123-12312", "+32425255", new HashSet<>(Arrays.asList(1, 2, 3, 4)))); + "123-12312", "+32425255", Set.of(1, 2, 3, 4))); assertTrue(ticket1.isPresent()); Optional ticket2 = service.submitTicket(LotteryTestUtils.createLotteryTicket("ant@bac.com", - "123-12312", "+32423455", new HashSet<>(Arrays.asList(11, 12, 13, 14)))); + "123-12312", "+32423455", Set.of(11, 12, 13, 14))); assertTrue(ticket2.isPresent()); Optional ticket3 = service.submitTicket(LotteryTestUtils.createLotteryTicket("arg@boo.com", - "123-12312", "+32421255", new HashSet<>(Arrays.asList(6, 8, 13, 19)))); + "123-12312", "+32421255", Set.of(6, 8, 13, 19))); assertTrue(ticket3.isPresent()); assertEquals(3, administration.getAllSubmittedTickets().size()); diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketTest.java index 5b9441a913cd..0e81a163b844 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketTest.java @@ -27,6 +27,7 @@ import java.util.Arrays; import java.util.HashSet; +import java.util.Set; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; @@ -39,14 +40,14 @@ class LotteryTicketTest { @Test void testEquals() { PlayerDetails details1 = new PlayerDetails("bob@foo.bar", "1212-121212", "+34332322"); - LotteryNumbers numbers1 = LotteryNumbers.create(new HashSet<>(Arrays.asList(1, 2, 3, 4))); + LotteryNumbers numbers1 = LotteryNumbers.create(Set.of(1, 2, 3, 4)); LotteryTicket ticket1 = new LotteryTicket(new LotteryTicketId(), details1, numbers1); PlayerDetails details2 = new PlayerDetails("bob@foo.bar", "1212-121212", "+34332322"); - LotteryNumbers numbers2 = LotteryNumbers.create(new HashSet<>(Arrays.asList(1, 2, 3, 4))); + LotteryNumbers numbers2 = LotteryNumbers.create(Set.of(1, 2, 3, 4)); LotteryTicket ticket2 = new LotteryTicket(new LotteryTicketId(), details2, numbers2); assertEquals(ticket1, ticket2); PlayerDetails details3 = new PlayerDetails("elsa@foo.bar", "1223-121212", "+49332322"); - LotteryNumbers numbers3 = LotteryNumbers.create(new HashSet<>(Arrays.asList(1, 2, 3, 8))); + LotteryNumbers numbers3 = LotteryNumbers.create(Set.of(1, 2, 3, 8)); LotteryTicket ticket3 = new LotteryTicket(new LotteryTicketId(), details3, numbers3); assertNotEquals(ticket1, ticket3); } diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/test/LotteryTestUtils.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/test/LotteryTestUtils.java index 2e67d2536a7e..4646aa2ff69d 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/test/LotteryTestUtils.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/test/LotteryTestUtils.java @@ -43,7 +43,7 @@ public class LotteryTestUtils { * @return lottery ticket */ public static LotteryTicket createLotteryTicket() { - return createLotteryTicket("foo@bar.com", "12231-213132", "+99324554", new HashSet<>(Arrays.asList(1, 2, 3, 4))); + return createLotteryTicket("foo@bar.com", "12231-213132", "+99324554", Set.of(1, 2, 3, 4)); } /** diff --git a/iterator/src/main/java/com/iluwatar/iterator/list/TreasureChest.java b/iterator/src/main/java/com/iluwatar/iterator/list/TreasureChest.java index 9c6dbc64feb5..3fb93f5af804 100644 --- a/iterator/src/main/java/com/iluwatar/iterator/list/TreasureChest.java +++ b/iterator/src/main/java/com/iluwatar/iterator/list/TreasureChest.java @@ -40,17 +40,17 @@ public class TreasureChest { * Constructor */ public TreasureChest() { - items = new ArrayList<>(); - items.add(new Item(ItemType.POTION, "Potion of courage")); - items.add(new Item(ItemType.RING, "Ring of shadows")); - items.add(new Item(ItemType.POTION, "Potion of wisdom")); - items.add(new Item(ItemType.POTION, "Potion of blood")); - items.add(new Item(ItemType.WEAPON, "Sword of silver +1")); - items.add(new Item(ItemType.POTION, "Potion of rust")); - items.add(new Item(ItemType.POTION, "Potion of healing")); - items.add(new Item(ItemType.RING, "Ring of armor")); - items.add(new Item(ItemType.WEAPON, "Steel halberd")); - items.add(new Item(ItemType.WEAPON, "Dagger of poison")); + items = List.of( + new Item(ItemType.POTION, "Potion of courage"), + new Item(ItemType.RING, "Ring of shadows"), + new Item(ItemType.POTION, "Potion of wisdom"), + new Item(ItemType.POTION, "Potion of blood"), + new Item(ItemType.WEAPON, "Sword of silver +1"), + new Item(ItemType.POTION, "Potion of rust"), + new Item(ItemType.POTION, "Potion of healing"), + new Item(ItemType.RING, "Ring of armor"), + new Item(ItemType.WEAPON, "Steel halberd"), + new Item(ItemType.WEAPON, "Dagger of poison")); } public Iterator iterator(ItemType itemType) { diff --git a/iterator/src/test/java/com/iluwatar/iterator/list/TreasureChestTest.java b/iterator/src/test/java/com/iluwatar/iterator/list/TreasureChestTest.java index cac45c851c8f..350934590e51 100644 --- a/iterator/src/test/java/com/iluwatar/iterator/list/TreasureChestTest.java +++ b/iterator/src/test/java/com/iluwatar/iterator/list/TreasureChestTest.java @@ -28,7 +28,6 @@ import static org.junit.jupiter.api.Assertions.fail; import com.iluwatar.iterator.Iterator; -import java.util.ArrayList; import java.util.List; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -46,18 +45,18 @@ public class TreasureChestTest { * @return The set of all expected items in the chest */ public static List dataProvider() { - final List parameters = new ArrayList<>(); - parameters.add(new Object[]{new Item(ItemType.POTION, "Potion of courage")}); - parameters.add(new Object[]{new Item(ItemType.RING, "Ring of shadows")}); - parameters.add(new Object[]{new Item(ItemType.POTION, "Potion of wisdom")}); - parameters.add(new Object[]{new Item(ItemType.POTION, "Potion of blood")}); - parameters.add(new Object[]{new Item(ItemType.WEAPON, "Sword of silver +1")}); - parameters.add(new Object[]{new Item(ItemType.POTION, "Potion of rust")}); - parameters.add(new Object[]{new Item(ItemType.POTION, "Potion of healing")}); - parameters.add(new Object[]{new Item(ItemType.RING, "Ring of armor")}); - parameters.add(new Object[]{new Item(ItemType.WEAPON, "Steel halberd")}); - parameters.add(new Object[]{new Item(ItemType.WEAPON, "Dagger of poison")}); - return parameters; + return List.of( + new Object[]{new Item(ItemType.POTION, "Potion of courage")}, + new Object[]{new Item(ItemType.RING, "Ring of shadows")}, + new Object[]{new Item(ItemType.POTION, "Potion of wisdom")}, + new Object[]{new Item(ItemType.POTION, "Potion of blood")}, + new Object[]{new Item(ItemType.WEAPON, "Sword of silver +1")}, + new Object[]{new Item(ItemType.POTION, "Potion of rust")}, + new Object[]{new Item(ItemType.POTION, "Potion of healing")}, + new Object[]{new Item(ItemType.RING, "Ring of armor")}, + new Object[]{new Item(ItemType.WEAPON, "Steel halberd")}, + new Object[]{new Item(ItemType.WEAPON, "Dagger of poison")} + ); } /** diff --git a/layers/src/test/java/com/iluwatar/layers/CakeTest.java b/layers/src/test/java/com/iluwatar/layers/CakeTest.java index 28bbf02601c8..81bb6d1deec9 100644 --- a/layers/src/test/java/com/iluwatar/layers/CakeTest.java +++ b/layers/src/test/java/com/iluwatar/layers/CakeTest.java @@ -66,11 +66,10 @@ public void testSetLayers() { assertNotNull(cake.getLayers()); assertTrue(cake.getLayers().isEmpty()); - final Set expectedLayers = new HashSet<>(); - expectedLayers.add(new CakeLayer("layer1", 1000)); - expectedLayers.add(new CakeLayer("layer2", 2000)); - expectedLayers.add(new CakeLayer("layer3", 3000)); - + final Set expectedLayers = Set.of( + new CakeLayer("layer1", 1000), + new CakeLayer("layer2", 2000), + new CakeLayer("layer3", 3000)); cake.setLayers(expectedLayers); assertEquals(expectedLayers, cake.getLayers()); } @@ -111,7 +110,7 @@ public void testToString() { cake.setTopping(topping); cake.addLayer(layer); - final String expected = "id=1234 topping=id=2345 name=topping calories=20 " + final String expected = "id=1234 topping=id=2345 name=topping calories=20 " + "layers=[id=3456 name=layer calories=100]"; assertEquals(expected, cake.toString()); diff --git a/layers/src/test/java/com/iluwatar/layers/CakeViewImplTest.java b/layers/src/test/java/com/iluwatar/layers/CakeViewImplTest.java index 56feae2e092f..ec19b115ce45 100644 --- a/layers/src/test/java/com/iluwatar/layers/CakeViewImplTest.java +++ b/layers/src/test/java/com/iluwatar/layers/CakeViewImplTest.java @@ -31,7 +31,6 @@ import org.junit.jupiter.api.Test; import org.slf4j.LoggerFactory; -import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -64,14 +63,13 @@ public void tearDown() { @Test public void testRender() { - final List layers = new ArrayList<>(); - layers.add(new CakeLayerInfo("layer1", 1000)); - layers.add(new CakeLayerInfo("layer2", 2000)); - layers.add(new CakeLayerInfo("layer3", 3000)); + final List layers = List.of( + new CakeLayerInfo("layer1", 1000), + new CakeLayerInfo("layer2", 2000), + new CakeLayerInfo("layer3", 3000)); - final List cakes = new ArrayList<>(); final CakeInfo cake = new CakeInfo(new CakeToppingInfo("topping", 1000), layers); - cakes.add(cake); + final List cakes = List.of(cake); final CakeBakingService bakingService = mock(CakeBakingService.class); when(bakingService.getAllCakes()).thenReturn(cakes); diff --git a/leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyMessageManagerTest.java b/leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyMessageManagerTest.java index f099ed9466a0..524cf32170dc 100644 --- a/leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyMessageManagerTest.java +++ b/leader-election/src/test/java/com/iluwatar/leaderelection/bully/BullyMessageManagerTest.java @@ -24,12 +24,9 @@ package com.iluwatar.leaderelection.bully; import com.iluwatar.leaderelection.*; -import com.iluwatar.leaderelection.ring.RingInstance; -import com.iluwatar.leaderelection.ring.RingMessageManager; import org.junit.jupiter.api.Test; import java.lang.reflect.Field; -import java.util.HashMap; import java.util.Map; import java.util.Queue; @@ -43,8 +40,7 @@ public class BullyMessageManagerTest { @Test public void testSendHeartbeatMessage() { Instance instance1 = new BullyInstance(null, 1, 1); - Map instanceMap = new HashMap<>(); - instanceMap.put(1, instance1); + Map instanceMap = Map.of(1, instance1); MessageManager messageManager = new BullyMessageManager(instanceMap); assertTrue(messageManager.sendHeartbeatMessage(1)); } @@ -56,11 +52,7 @@ public void testSendElectionMessageNotAccepted() { Instance instance2 = new BullyInstance(null, 1, 2); Instance instance3 = new BullyInstance(null, 1, 3); Instance instance4 = new BullyInstance(null, 1, 4); - Map instanceMap = new HashMap<>(); - instanceMap.put(1, instance1); - instanceMap.put(2, instance2); - instanceMap.put(3, instance3); - instanceMap.put(4, instance4); + Map instanceMap = Map.of(1, instance1, 2, instance2, 3, instance3, 4, instance4); instance1.setAlive(false); MessageManager messageManager = new BullyMessageManager(instanceMap); boolean result = messageManager.sendElectionMessage(3, "3"); @@ -84,11 +76,7 @@ public void testElectionMessageAccepted() { Instance instance2 = new BullyInstance(null, 1, 2); Instance instance3 = new BullyInstance(null, 1, 3); Instance instance4 = new BullyInstance(null, 1, 4); - Map instanceMap = new HashMap<>(); - instanceMap.put(1, instance1); - instanceMap.put(2, instance2); - instanceMap.put(3, instance3); - instanceMap.put(4, instance4); + Map instanceMap = Map.of(1, instance1, 2, instance2, 3, instance3, 4, instance4); instance1.setAlive(false); MessageManager messageManager = new BullyMessageManager(instanceMap); boolean result = messageManager.sendElectionMessage(2, "2"); @@ -102,11 +90,7 @@ public void testSendLeaderMessage() { Instance instance2 = new BullyInstance(null, 1, 2); Instance instance3 = new BullyInstance(null, 1, 3); Instance instance4 = new BullyInstance(null, 1, 4); - Map instanceMap = new HashMap<>(); - instanceMap.put(1, instance1); - instanceMap.put(2, instance2); - instanceMap.put(3, instance3); - instanceMap.put(4, instance4); + Map instanceMap = Map.of(1, instance1, 2, instance2, 3, instance3, 4, instance4); instance1.setAlive(false); MessageManager messageManager = new BullyMessageManager(instanceMap); messageManager.sendLeaderMessage(2, 2); @@ -129,10 +113,7 @@ public void testSendHeartbeatInvokeMessage() { Instance instance1 = new BullyInstance(null, 1, 1); Instance instance2 = new BullyInstance(null, 1, 2); Instance instance3 = new BullyInstance(null, 1, 3); - Map instanceMap = new HashMap<>(); - instanceMap.put(1, instance1); - instanceMap.put(2, instance2); - instanceMap.put(3, instance3); + Map instanceMap = Map.of(1, instance1, 2, instance2, 3, instance3); MessageManager messageManager = new BullyMessageManager(instanceMap); messageManager.sendHeartbeatInvokeMessage(2); Message message = new Message(MessageType.HEARTBEAT_INVOKE, ""); diff --git a/leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingMessageManagerTest.java b/leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingMessageManagerTest.java index 82a5a5936f59..d8429f02b05f 100644 --- a/leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingMessageManagerTest.java +++ b/leader-election/src/test/java/com/iluwatar/leaderelection/ring/RingMessageManagerTest.java @@ -27,7 +27,6 @@ import org.junit.jupiter.api.Test; import java.lang.reflect.Field; -import java.util.HashMap; import java.util.Map; import java.util.Queue; @@ -41,8 +40,7 @@ public class RingMessageManagerTest { @Test public void testSendHeartbeatMessage() { Instance instance1 = new RingInstance(null, 1, 1); - Map instanceMap = new HashMap<>(); - instanceMap.put(1, instance1); + Map instanceMap = Map.of(1, instance1); MessageManager messageManager = new RingMessageManager(instanceMap); assertTrue(messageManager.sendHeartbeatMessage(1)); } @@ -53,10 +51,7 @@ public void testSendElectionMessage() { Instance instance1 = new RingInstance(null, 1, 1); Instance instance2 = new RingInstance(null, 1, 2); Instance instance3 = new RingInstance(null, 1, 3); - Map instanceMap = new HashMap<>(); - instanceMap.put(1, instance1); - instanceMap.put(2, instance2); - instanceMap.put(3, instance3); + Map instanceMap = Map.of(1, instance1, 2, instance2, 3, instance3); MessageManager messageManager = new RingMessageManager(instanceMap); String messageContent = "2"; messageManager.sendElectionMessage(2, messageContent); @@ -78,10 +73,7 @@ public void testSendLeaderMessage() { Instance instance1 = new RingInstance(null, 1, 1); Instance instance2 = new RingInstance(null, 1, 2); Instance instance3 = new RingInstance(null, 1, 3); - Map instanceMap = new HashMap<>(); - instanceMap.put(1, instance1); - instanceMap.put(2, instance2); - instanceMap.put(3, instance3); + Map instanceMap = Map.of(1, instance1, 2, instance2, 3, instance3); MessageManager messageManager = new RingMessageManager(instanceMap); String messageContent = "3"; messageManager.sendLeaderMessage(2, 3); @@ -102,10 +94,7 @@ public void testSendHeartbeatInvokeMessage() { Instance instance1 = new RingInstance(null, 1, 1); Instance instance2 = new RingInstance(null, 1, 2); Instance instance3 = new RingInstance(null, 1, 3); - Map instanceMap = new HashMap<>(); - instanceMap.put(1, instance1); - instanceMap.put(2, instance2); - instanceMap.put(3, instance3); + Map instanceMap = Map.of(1, instance1, 2, instance2, 3, instance3); MessageManager messageManager = new RingMessageManager(instanceMap); messageManager.sendHeartbeatInvokeMessage(2); Message ringMessage = new Message(MessageType.HEARTBEAT_INVOKE, ""); From c8a481bb77ddfb725ae138110ad6e5cd301a5291 Mon Sep 17 00:00:00 2001 From: Leon Mak Date: Tue, 29 Oct 2019 14:37:40 +0800 Subject: [PATCH 57/68] Add java 11 support for #987 (o-t) (#1051) * Use java 11 * Use .of - Replace Arrays.asList with List.of - Replace HashSet<>(List.of()) with Set.of * Formatting --- .../AbstractDocumentTest.java | 1 - .../iluwatar/abstractdocument/DomainTest.java | 3 +- .../com/iluwatar/collectionpipeline/App.java | 13 ++++---- .../collectionpipeline/CarFactory.java | 3 +- .../java/com/iluwatar/commander/Service.java | 2 +- .../com/iluwatar/commander/RetryTest.java | 4 +-- .../com/iluwatar/fluentinterface/app/App.java | 15 ++++----- .../fluentiterable/FluentIterableTest.java | 31 +++++++----------- .../hexagonal/domain/LotteryNumbersTest.java | 22 ++++--------- .../hexagonal/domain/LotteryTest.java | 4 +-- .../hexagonal/domain/LotteryTicketTest.java | 2 -- .../hexagonal/test/LotteryTestUtils.java | 6 ++-- .../main/java/com/iluwatar/layers/App.java | 12 ++++--- .../layers/CakeBakingServiceImplTest.java | 15 +++------ .../iluwatar/mediator/PartyMemberTest.java | 3 +- .../scenarios/RecreateSimpleObjects.java | 15 ++++----- .../object/pool/OliphauntPoolTest.java | 9 ++---- .../com/iluwatar/observer/HobbitsTest.java | 12 +++---- .../java/com/iluwatar/observer/OrcsTest.java | 12 +++---- .../observer/generic/GHobbitsTest.java | 13 ++++---- .../iluwatar/observer/generic/OrcsTest.java | 13 ++++---- .../com/iluwatar/partialresponse/App.java | 12 ++++--- .../partialresponse/VideoResourceTest.java | 12 ++++--- .../com/iluwatar/prototype/PrototypeTest.java | 9 ++---- .../AnnotationBasedRepositoryTest.java | 19 ++++------- .../iluwatar/repository/RepositoryTest.java | 19 ++++------- .../java/com/iluwatar/retry/FindCustomer.java | 4 +-- .../main/java/com/iluwatar/servant/App.java | 5 +-- .../com/iluwatar/servant/ServantTest.java | 11 ++----- .../magic/MagicServiceImplTest.java | 18 +++++------ .../com/iluwatar/specification/app/App.java | 18 +++-------- .../specification/creature/CreatureTest.java | 10 +++--- .../strategy/DragonSlayingStrategyTest.java | 27 ++++++++-------- .../java/com/iluwatar/threadpool/App.java | 32 +++++++++---------- .../iluwatar/tls/DateFormatCallableTest.java | 9 +++--- ...FormatCallableTestIncorrectDateFormat.java | 9 +++--- .../DateFormatCallableTestMultiThread.java | 9 +++--- 37 files changed, 176 insertions(+), 257 deletions(-) diff --git a/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java b/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java index 0514c750aa77..da576539102a 100644 --- a/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java +++ b/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java @@ -25,7 +25,6 @@ import org.junit.jupiter.api.Test; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/abstract-document/src/test/java/com/iluwatar/abstractdocument/DomainTest.java b/abstract-document/src/test/java/com/iluwatar/abstractdocument/DomainTest.java index 663071f6a0a7..eed4ad9bb94e 100644 --- a/abstract-document/src/test/java/com/iluwatar/abstractdocument/DomainTest.java +++ b/abstract-document/src/test/java/com/iluwatar/abstractdocument/DomainTest.java @@ -28,7 +28,6 @@ import com.iluwatar.abstractdocument.domain.enums.Property; import org.junit.jupiter.api.Test; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -64,7 +63,7 @@ public void shouldConstructCar() { Map carProperties = Map.of( Property.MODEL.toString(), TEST_CAR_MODEL, Property.PRICE.toString(), TEST_CAR_PRICE, - Property.PARTS.toString(), List.of(new HashMap<>(), new HashMap<>())); + Property.PARTS.toString(), List.of(Map.of(), Map.of())); Car car = new Car(carProperties); assertEquals(TEST_CAR_MODEL, car.getModel().get()); diff --git a/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/App.java b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/App.java index 3a811f0e0806..de19a3b15508 100644 --- a/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/App.java +++ b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/App.java @@ -23,13 +23,12 @@ package com.iluwatar.collectionpipeline; -import java.util.Arrays; -import java.util.List; -import java.util.Map; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.List; +import java.util.Map; + /** * In imperative-style programming, it is common to use for and while loops for * most kinds of data processing. Function composition is a simple technique @@ -67,11 +66,11 @@ public static void main(String[] args) { LOGGER.info(groupingByCategoryFunctional.toString()); Person john = new Person(cars); - - List sedansOwnedImperative = ImperativeProgramming.getSedanCarsOwnedSortedByDate(Arrays.asList(john)); + + List sedansOwnedImperative = ImperativeProgramming.getSedanCarsOwnedSortedByDate(List.of(john)); LOGGER.info(sedansOwnedImperative.toString()); - List sedansOwnedFunctional = FunctionalProgramming.getSedanCarsOwnedSortedByDate(Arrays.asList(john)); + List sedansOwnedFunctional = FunctionalProgramming.getSedanCarsOwnedSortedByDate(List.of(john)); LOGGER.info(sedansOwnedFunctional.toString()); } } diff --git a/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/CarFactory.java b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/CarFactory.java index 6e4531f5fb0a..aee1e21932df 100644 --- a/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/CarFactory.java +++ b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/CarFactory.java @@ -23,7 +23,6 @@ package com.iluwatar.collectionpipeline; -import java.util.Arrays; import java.util.List; /** @@ -38,7 +37,7 @@ private CarFactory() { * @return {@link List} of {@link Car} */ public static List createCars() { - return Arrays.asList(new Car("Jeep", "Wrangler", 2011, Category.JEEP), + return List.of(new Car("Jeep", "Wrangler", 2011, Category.JEEP), new Car("Jeep", "Comanche", 1990, Category.JEEP), new Car("Dodge", "Avenger", 2010, Category.SEDAN), new Car("Buick", "Cascada", 2016, Category.CONVERTIBLE), diff --git a/commander/src/main/java/com/iluwatar/commander/Service.java b/commander/src/main/java/com/iluwatar/commander/Service.java index 2e293520b87b..64af79053459 100644 --- a/commander/src/main/java/com/iluwatar/commander/Service.java +++ b/commander/src/main/java/com/iluwatar/commander/Service.java @@ -43,7 +43,7 @@ public abstract class Service { public ArrayList exceptionsList; private static final Random RANDOM = new Random(); private static final String ALL_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; - private static final Hashtable USED_IDS = new Hashtable(); + private static final Hashtable USED_IDS = new Hashtable<>(); protected Service(Database db, Exception...exc) { this.database = db; diff --git a/commander/src/test/java/com/iluwatar/commander/RetryTest.java b/commander/src/test/java/com/iluwatar/commander/RetryTest.java index c4ee5caf7964..749b2619cbac 100644 --- a/commander/src/test/java/com/iluwatar/commander/RetryTest.java +++ b/commander/src/test/java/com/iluwatar/commander/RetryTest.java @@ -45,9 +45,9 @@ void performTest() { Retry.HandleErrorIssue handleError = (o,e) -> { return; }; - Retry r1 = new Retry(op, handleError, 3, 30000, + Retry r1 = new Retry<>(op, handleError, 3, 30000, e -> DatabaseUnavailableException.class.isAssignableFrom(e.getClass())); - Retry r2 = new Retry(op, handleError, 3, 30000, + Retry r2 = new Retry<>(op, handleError, 3, 30000, e -> DatabaseUnavailableException.class.isAssignableFrom(e.getClass())); User user = new User("Jim", "ABCD"); Order order = new Order(user, "book", 10f); diff --git a/fluentinterface/src/main/java/com/iluwatar/fluentinterface/app/App.java b/fluentinterface/src/main/java/com/iluwatar/fluentinterface/app/App.java index 597f9d928f75..36766a568003 100644 --- a/fluentinterface/src/main/java/com/iluwatar/fluentinterface/app/App.java +++ b/fluentinterface/src/main/java/com/iluwatar/fluentinterface/app/App.java @@ -23,21 +23,20 @@ package com.iluwatar.fluentinterface.app; -import static java.lang.String.valueOf; +import com.iluwatar.fluentinterface.fluentiterable.FluentIterable; +import com.iluwatar.fluentinterface.fluentiterable.lazy.LazyFluentIterable; +import com.iluwatar.fluentinterface.fluentiterable.simple.SimpleFluentIterable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.ArrayList; -import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.StringJoiner; import java.util.function.Function; import java.util.function.Predicate; -import com.iluwatar.fluentinterface.fluentiterable.FluentIterable; -import com.iluwatar.fluentinterface.fluentiterable.lazy.LazyFluentIterable; -import com.iluwatar.fluentinterface.fluentiterable.simple.SimpleFluentIterable; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import static java.lang.String.valueOf; /** * The Fluent Interface pattern is useful when you want to provide an easy readable, flowing API. @@ -61,7 +60,7 @@ public class App { public static void main(String[] args) { List integerList = new ArrayList<>(); - integerList.addAll(Arrays.asList(1, -61, 14, -22, 18, -87, 6, 64, -82, 26, -98, 97, 45, 23, 2, + integerList.addAll(List.of(1, -61, 14, -22, 18, -87, 6, 64, -82, 26, -98, 97, 45, 23, 2, -68, 45)); prettyPrint("The initial list contains: ", integerList); diff --git a/fluentinterface/src/test/java/com/iluwatar/fluentinterface/fluentiterable/FluentIterableTest.java b/fluentinterface/src/test/java/com/iluwatar/fluentinterface/fluentiterable/FluentIterableTest.java index cfe52be7f1e5..4ee30d3e5734 100644 --- a/fluentinterface/src/test/java/com/iluwatar/fluentinterface/fluentiterable/FluentIterableTest.java +++ b/fluentinterface/src/test/java/com/iluwatar/fluentinterface/fluentiterable/FluentIterableTest.java @@ -25,21 +25,14 @@ import org.junit.jupiter.api.Test; -import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.Spliterator; import java.util.function.Consumer; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; /** * Date: 12/12/15 - 7:00 PM @@ -58,7 +51,7 @@ public abstract class FluentIterableTest { @Test public void testFirst() throws Exception { - final List integers = Arrays.asList(1, 2, 3, 10, 9, 8); + final List integers = List.of(1, 2, 3, 10, 9, 8); final Optional first = createFluentIterable(integers).first(); assertNotNull(first); assertTrue(first.isPresent()); @@ -75,7 +68,7 @@ public void testFirstEmptyCollection() throws Exception { @Test public void testFirstCount() throws Exception { - final List integers = Arrays.asList(1, 2, 3, 10, 9, 8); + final List integers = List.of(1, 2, 3, 10, 9, 8); final List first4 = createFluentIterable(integers) .first(4) .asList(); @@ -91,7 +84,7 @@ public void testFirstCount() throws Exception { @Test public void testFirstCountLessItems() throws Exception { - final List integers = Arrays.asList(1, 2, 3); + final List integers = List.of(1, 2, 3); final List first4 = createFluentIterable(integers) .first(4) .asList(); @@ -106,7 +99,7 @@ public void testFirstCountLessItems() throws Exception { @Test public void testLast() throws Exception { - final List integers = Arrays.asList(1, 2, 3, 10, 9, 8); + final List integers = List.of(1, 2, 3, 10, 9, 8); final Optional last = createFluentIterable(integers).last(); assertNotNull(last); assertTrue(last.isPresent()); @@ -123,7 +116,7 @@ public void testLastEmptyCollection() throws Exception { @Test public void testLastCount() throws Exception { - final List integers = Arrays.asList(1, 2, 3, 10, 9, 8); + final List integers = List.of(1, 2, 3, 10, 9, 8); final List last4 = createFluentIterable(integers) .last(4) .asList(); @@ -138,7 +131,7 @@ public void testLastCount() throws Exception { @Test public void testLastCountLessItems() throws Exception { - final List integers = Arrays.asList(1, 2, 3); + final List integers = List.of(1, 2, 3); final List last4 = createFluentIterable(integers) .last(4) .asList(); @@ -153,7 +146,7 @@ public void testLastCountLessItems() throws Exception { @Test public void testFilter() throws Exception { - final List integers = Arrays.asList(1, 2, 3, 10, 9, 8); + final List integers = List.of(1, 2, 3, 10, 9, 8); final List evenItems = createFluentIterable(integers) .filter(i -> i % 2 == 0) .asList(); @@ -167,7 +160,7 @@ public void testFilter() throws Exception { @Test public void testMap() throws Exception { - final List integers = Arrays.asList(1, 2, 3); + final List integers = List.of(1, 2, 3); final List longs = createFluentIterable(integers) .map(Integer::longValue) .asList(); @@ -181,7 +174,7 @@ public void testMap() throws Exception { @Test public void testForEach() { - final List integers = Arrays.asList(1, 2, 3); + final List integers = List.of(1, 2, 3); final Consumer consumer = mock(Consumer.class); createFluentIterable(integers).forEach(consumer); @@ -195,7 +188,7 @@ public void testForEach() { @Test public void testSpliterator() throws Exception { - final List integers = Arrays.asList(1, 2, 3); + final List integers = List.of(1, 2, 3); final Spliterator split = createFluentIterable(integers).spliterator(); assertNotNull(split); } diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryNumbersTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryNumbersTest.java index 1812263899b7..c17c5c1fdc39 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryNumbersTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryNumbersTest.java @@ -25,14 +25,9 @@ import org.junit.jupiter.api.Test; -import java.util.Arrays; -import java.util.HashSet; import java.util.Set; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; /** * @@ -43,8 +38,7 @@ class LotteryNumbersTest { @Test void testGivenNumbers() { - LotteryNumbers numbers = LotteryNumbers.create( - Set.of(1, 2, 3, 4)); + LotteryNumbers numbers = LotteryNumbers.create(Set.of(1, 2, 3, 4)); assertEquals(numbers.getNumbers().size(), 4); assertTrue(numbers.getNumbers().contains(1)); assertTrue(numbers.getNumbers().contains(2)); @@ -54,8 +48,7 @@ void testGivenNumbers() { @Test void testNumbersCantBeModified() { - LotteryNumbers numbers = LotteryNumbers.create( - Set.of(1, 2, 3, 4)); + LotteryNumbers numbers = LotteryNumbers.create(Set.of(1, 2, 3, 4)); assertThrows(UnsupportedOperationException.class, () -> numbers.getNumbers().add(5)); } @@ -67,13 +60,10 @@ void testRandomNumbers() { @Test void testEquals() { - LotteryNumbers numbers1 = LotteryNumbers.create( - Set.of(1, 2, 3, 4)); - LotteryNumbers numbers2 = LotteryNumbers.create( - Set.of(1, 2, 3, 4)); + LotteryNumbers numbers1 = LotteryNumbers.create(Set.of(1, 2, 3, 4)); + LotteryNumbers numbers2 = LotteryNumbers.create(Set.of(1, 2, 3, 4)); assertEquals(numbers1, numbers2); - LotteryNumbers numbers3 = LotteryNumbers.create( - Set.of(11, 12, 13, 14)); + LotteryNumbers numbers3 = LotteryNumbers.create(Set.of(11, 12, 13, 14)); assertNotEquals(numbers1, numbers3); } } diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTest.java index a62adaff870a..927e2fcd19a9 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTest.java @@ -35,9 +35,7 @@ import java.util.*; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; /** * diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketTest.java index 0e81a163b844..6d2e371c4bd0 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketTest.java @@ -25,8 +25,6 @@ import org.junit.jupiter.api.Test; -import java.util.Arrays; -import java.util.HashSet; import java.util.Set; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/test/LotteryTestUtils.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/test/LotteryTestUtils.java index 4646aa2ff69d..2f02ca34e9f2 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/test/LotteryTestUtils.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/test/LotteryTestUtils.java @@ -23,15 +23,13 @@ package com.iluwatar.hexagonal.test; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Set; - import com.iluwatar.hexagonal.domain.LotteryNumbers; import com.iluwatar.hexagonal.domain.LotteryTicket; import com.iluwatar.hexagonal.domain.LotteryTicketId; import com.iluwatar.hexagonal.domain.PlayerDetails; +import java.util.Set; + /** * * Utilities for lottery tests diff --git a/layers/src/main/java/com/iluwatar/layers/App.java b/layers/src/main/java/com/iluwatar/layers/App.java index 744c82768212..a4e0a4ab20fe 100644 --- a/layers/src/main/java/com/iluwatar/layers/App.java +++ b/layers/src/main/java/com/iluwatar/layers/App.java @@ -23,7 +23,7 @@ package com.iluwatar.layers; -import java.util.Arrays; +import java.util.List; /** * @@ -99,16 +99,18 @@ private static void initializeData(CakeBakingService cakeBakingService) { cakeBakingService.saveNewTopping(new CakeToppingInfo("cherry", 350)); CakeInfo cake1 = - new CakeInfo(new CakeToppingInfo("candies", 0), Arrays.asList(new CakeLayerInfo( - "chocolate", 0), new CakeLayerInfo("banana", 0), new CakeLayerInfo("strawberry", 0))); + new CakeInfo(new CakeToppingInfo("candies", 0), List.of( + new CakeLayerInfo("chocolate", 0), + new CakeLayerInfo("banana", 0), + new CakeLayerInfo("strawberry", 0))); try { cakeBakingService.bakeNewCake(cake1); } catch (CakeBakingException e) { e.printStackTrace(); } CakeInfo cake2 = - new CakeInfo(new CakeToppingInfo("cherry", 0), Arrays.asList( - new CakeLayerInfo("vanilla", 0), new CakeLayerInfo("lemon", 0), new CakeLayerInfo( + new CakeInfo(new CakeToppingInfo("cherry", 0), List.of( + new CakeLayerInfo("vanilla", 0), new CakeLayerInfo("lemon", 0), new CakeLayerInfo( "strawberry", 0))); try { cakeBakingService.bakeNewCake(cake2); diff --git a/layers/src/test/java/com/iluwatar/layers/CakeBakingServiceImplTest.java b/layers/src/test/java/com/iluwatar/layers/CakeBakingServiceImplTest.java index 681b37e05870..21f3623298fb 100644 --- a/layers/src/test/java/com/iluwatar/layers/CakeBakingServiceImplTest.java +++ b/layers/src/test/java/com/iluwatar/layers/CakeBakingServiceImplTest.java @@ -25,15 +25,10 @@ import org.junit.jupiter.api.Test; -import java.util.Arrays; import java.util.Collections; import java.util.List; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; /** * Date: 12/15/15 - 9:55 PM @@ -108,7 +103,7 @@ public void testBakeCakes() throws CakeBakingException { service.saveNewLayer(layer2); service.saveNewLayer(layer3); - service.bakeNewCake(new CakeInfo(topping1, Arrays.asList(layer1, layer2))); + service.bakeNewCake(new CakeInfo(topping1, List.of(layer1, layer2))); service.bakeNewCake(new CakeInfo(topping2, Collections.singletonList(layer3))); final List allCakes = service.getAllCakes(); @@ -136,7 +131,7 @@ public void testBakeCakeMissingTopping() { final CakeToppingInfo missingTopping = new CakeToppingInfo("Topping1", 1000); assertThrows(CakeBakingException.class, () -> { - service.bakeNewCake(new CakeInfo(missingTopping, Arrays.asList(layer1, layer2))); + service.bakeNewCake(new CakeInfo(missingTopping, List.of(layer1, layer2))); }); } @@ -156,7 +151,7 @@ public void testBakeCakeMissingLayer() { final CakeLayerInfo missingLayer = new CakeLayerInfo("Layer2", 2000); assertThrows(CakeBakingException.class, () -> { - service.bakeNewCake(new CakeInfo(topping1, Arrays.asList(layer1, missingLayer))); + service.bakeNewCake(new CakeInfo(topping1, List.of(layer1, missingLayer))); }); } @@ -178,7 +173,7 @@ public void testBakeCakesUsedLayer() throws CakeBakingException { service.saveNewLayer(layer1); service.saveNewLayer(layer2); - service.bakeNewCake(new CakeInfo(topping1, Arrays.asList(layer1, layer2))); + service.bakeNewCake(new CakeInfo(topping1, List.of(layer1, layer2))); assertThrows(CakeBakingException.class, () -> { service.bakeNewCake(new CakeInfo(topping2, Collections.singletonList(layer2))); }); diff --git a/mediator/src/test/java/com/iluwatar/mediator/PartyMemberTest.java b/mediator/src/test/java/com/iluwatar/mediator/PartyMemberTest.java index b7092347b840..951f8e166c89 100644 --- a/mediator/src/test/java/com/iluwatar/mediator/PartyMemberTest.java +++ b/mediator/src/test/java/com/iluwatar/mediator/PartyMemberTest.java @@ -32,7 +32,6 @@ import org.junit.jupiter.params.provider.MethodSource; import org.slf4j.LoggerFactory; -import java.util.Arrays; import java.util.Collection; import java.util.LinkedList; import java.util.List; @@ -50,7 +49,7 @@ public class PartyMemberTest { static Collection[]> dataProvider() { - return Arrays.asList( + return List.of( new Supplier[]{Hobbit::new}, new Supplier[]{Hunter::new}, new Supplier[]{Rogue::new}, diff --git a/naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java b/naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java index 2c201ead22e6..303dfda4fa13 100644 --- a/naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java +++ b/naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java @@ -23,17 +23,14 @@ package domainapp.fixture.scenarios; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - import com.google.common.collect.Lists; - -import org.apache.isis.applib.fixturescripts.FixtureScript; - import domainapp.dom.modules.simple.SimpleObject; import domainapp.fixture.modules.simple.SimpleObjectCreate; import domainapp.fixture.modules.simple.SimpleObjectsTearDown; +import org.apache.isis.applib.fixturescripts.FixtureScript; + +import java.util.Collections; +import java.util.List; /** @@ -41,8 +38,8 @@ */ public class RecreateSimpleObjects extends FixtureScript { - public final List names = Collections.unmodifiableList(Arrays.asList("Foo", "Bar", "Baz", - "Frodo", "Froyo", "Fizz", "Bip", "Bop", "Bang", "Boo")); + public final List names = Collections.unmodifiableList(List.of("Foo", "Bar", "Baz", + "Frodo", "Froyo", "Fizz", "Bip", "Bop", "Bang", "Boo")); // region > number (optional input) private Integer number; diff --git a/object-pool/src/test/java/com/iluwatar/object/pool/OliphauntPoolTest.java b/object-pool/src/test/java/com/iluwatar/object/pool/OliphauntPoolTest.java index b946f80981d7..d4ca42948b81 100644 --- a/object-pool/src/test/java/com/iluwatar/object/pool/OliphauntPoolTest.java +++ b/object-pool/src/test/java/com/iluwatar/object/pool/OliphauntPoolTest.java @@ -25,15 +25,10 @@ import org.junit.jupiter.api.Test; -import java.util.Arrays; import java.util.List; import static java.time.Duration.ofMillis; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotSame; -import static org.junit.jupiter.api.Assertions.assertSame; -import static org.junit.jupiter.api.Assertions.assertTimeout; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; /** * Date: 12/27/15 - 1:05 AM @@ -115,7 +110,7 @@ public void testConcurrentCheckinCheckout() { // The order of the returned instances is not determined, so just put them in a list // and verify if both expected instances are in there. - final List oliphaunts = Arrays.asList(pool.checkOut(), pool.checkOut()); + final List oliphaunts = List.of(pool.checkOut(), pool.checkOut()); assertEquals(pool.toString(), "Pool available=0 inUse=2"); assertTrue(oliphaunts.contains(firstOliphaunt)); assertTrue(oliphaunts.contains(secondOliphaunt)); diff --git a/observer/src/test/java/com/iluwatar/observer/HobbitsTest.java b/observer/src/test/java/com/iluwatar/observer/HobbitsTest.java index c43c592da611..66ec45fdb62e 100644 --- a/observer/src/test/java/com/iluwatar/observer/HobbitsTest.java +++ b/observer/src/test/java/com/iluwatar/observer/HobbitsTest.java @@ -23,7 +23,6 @@ package com.iluwatar.observer; -import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -36,12 +35,11 @@ public class HobbitsTest extends WeatherObserverTest { @Override public Collection dataProvider() { - final List testData = new ArrayList<>(); - testData.add(new Object[]{WeatherType.SUNNY, "The happy hobbits bade in the warm sun."}); - testData.add(new Object[]{WeatherType.RAINY, "The hobbits look for cover from the rain."}); - testData.add(new Object[]{WeatherType.WINDY, "The hobbits hold their hats tightly in the windy weather."}); - testData.add(new Object[]{WeatherType.COLD, "The hobbits are shivering in the cold weather."}); - return testData; + return List.of( + new Object[]{WeatherType.SUNNY, "The happy hobbits bade in the warm sun."}, + new Object[]{WeatherType.RAINY, "The hobbits look for cover from the rain."}, + new Object[]{WeatherType.WINDY, "The hobbits hold their hats tightly in the windy weather."}, + new Object[]{WeatherType.COLD, "The hobbits are shivering in the cold weather."}); } /** diff --git a/observer/src/test/java/com/iluwatar/observer/OrcsTest.java b/observer/src/test/java/com/iluwatar/observer/OrcsTest.java index b2c0fcbaca10..ff615df3c94e 100644 --- a/observer/src/test/java/com/iluwatar/observer/OrcsTest.java +++ b/observer/src/test/java/com/iluwatar/observer/OrcsTest.java @@ -23,7 +23,6 @@ package com.iluwatar.observer; -import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -36,12 +35,11 @@ public class OrcsTest extends WeatherObserverTest { @Override public Collection dataProvider() { - final List testData = new ArrayList<>(); - testData.add(new Object[]{WeatherType.SUNNY, "The sun hurts the orcs' eyes."}); - testData.add(new Object[]{WeatherType.RAINY, "The orcs are dripping wet."}); - testData.add(new Object[]{WeatherType.WINDY, "The orc smell almost vanishes in the wind."}); - testData.add(new Object[]{WeatherType.COLD, "The orcs are freezing cold."}); - return testData; + return List.of( + new Object[]{WeatherType.SUNNY, "The sun hurts the orcs' eyes."}, + new Object[]{WeatherType.RAINY, "The orcs are dripping wet."}, + new Object[]{WeatherType.WINDY, "The orc smell almost vanishes in the wind."}, + new Object[]{WeatherType.COLD, "The orcs are freezing cold."}); } /** diff --git a/observer/src/test/java/com/iluwatar/observer/generic/GHobbitsTest.java b/observer/src/test/java/com/iluwatar/observer/generic/GHobbitsTest.java index 93e68a9f1ac1..dd0e6d6bf5f4 100644 --- a/observer/src/test/java/com/iluwatar/observer/generic/GHobbitsTest.java +++ b/observer/src/test/java/com/iluwatar/observer/generic/GHobbitsTest.java @@ -25,7 +25,6 @@ import com.iluwatar.observer.WeatherType; -import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -38,12 +37,12 @@ public class GHobbitsTest extends ObserverTest { @Override public Collection dataProvider() { - final List testData = new ArrayList<>(); - testData.add(new Object[]{WeatherType.SUNNY, "The happy hobbits bade in the warm sun."}); - testData.add(new Object[]{WeatherType.RAINY, "The hobbits look for cover from the rain."}); - testData.add(new Object[]{WeatherType.WINDY, "The hobbits hold their hats tightly in the windy weather."}); - testData.add(new Object[]{WeatherType.COLD, "The hobbits are shivering in the cold weather."}); - return testData; + return List.of( + new Object[]{WeatherType.SUNNY, "The happy hobbits bade in the warm sun."}, + new Object[]{WeatherType.RAINY, "The hobbits look for cover from the rain."}, + new Object[]{WeatherType.WINDY, "The hobbits hold their hats tightly in the windy weather."}, + new Object[]{WeatherType.COLD, "The hobbits are shivering in the cold weather."} + ); } /** diff --git a/observer/src/test/java/com/iluwatar/observer/generic/OrcsTest.java b/observer/src/test/java/com/iluwatar/observer/generic/OrcsTest.java index b73b105199cc..396de445669f 100644 --- a/observer/src/test/java/com/iluwatar/observer/generic/OrcsTest.java +++ b/observer/src/test/java/com/iluwatar/observer/generic/OrcsTest.java @@ -25,7 +25,6 @@ import com.iluwatar.observer.WeatherType; -import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -38,12 +37,12 @@ public class OrcsTest extends ObserverTest { @Override public Collection dataProvider() { - final List testData = new ArrayList<>(); - testData.add(new Object[]{WeatherType.SUNNY, "The sun hurts the orcs' eyes."}); - testData.add(new Object[]{WeatherType.RAINY, "The orcs are dripping wet."}); - testData.add(new Object[]{WeatherType.WINDY, "The orc smell almost vanishes in the wind."}); - testData.add(new Object[]{WeatherType.COLD, "The orcs are freezing cold."}); - return testData; + return List.of( + new Object[]{WeatherType.SUNNY, "The sun hurts the orcs' eyes."}, + new Object[]{WeatherType.RAINY, "The orcs are dripping wet."}, + new Object[]{WeatherType.WINDY, "The orc smell almost vanishes in the wind."}, + new Object[]{WeatherType.COLD, "The orcs are freezing cold."} + ); } /** diff --git a/partial-response/src/main/java/com/iluwatar/partialresponse/App.java b/partial-response/src/main/java/com/iluwatar/partialresponse/App.java index 05aa660880c1..314846a3dbe5 100644 --- a/partial-response/src/main/java/com/iluwatar/partialresponse/App.java +++ b/partial-response/src/main/java/com/iluwatar/partialresponse/App.java @@ -26,7 +26,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.HashMap; import java.util.Map; /** @@ -47,10 +46,13 @@ public class App { * @param args program argument. */ public static void main(String[] args) throws Exception { - Map videos = new HashMap<>(); - videos.put(1, new Video(1, "Avatar", 178, "epic science fiction film", "James Cameron", "English")); - videos.put(2, new Video(2, "Godzilla Resurgence", 120, "Action & drama movie|", "Hideaki Anno", "Japanese")); - videos.put(3, new Video(3, "Interstellar", 169, "Adventure & Sci-Fi", "Christopher Nolan", "English")); + Map videos = Map.of( + 1, new Video(1, "Avatar", 178, "epic science fiction film", + "James Cameron", "English"), + 2, new Video(2, "Godzilla Resurgence", 120, "Action & drama movie|", + "Hideaki Anno", "Japanese"), + 3, new Video(3, "Interstellar", 169, "Adventure & Sci-Fi", + "Christopher Nolan", "English")); VideoResource videoResource = new VideoResource(new FieldJsonMapper(), videos); diff --git a/partial-response/src/test/java/com/iluwatar/partialresponse/VideoResourceTest.java b/partial-response/src/test/java/com/iluwatar/partialresponse/VideoResourceTest.java index c28613f4a8c7..85f240fa03db 100644 --- a/partial-response/src/test/java/com/iluwatar/partialresponse/VideoResourceTest.java +++ b/partial-response/src/test/java/com/iluwatar/partialresponse/VideoResourceTest.java @@ -29,7 +29,6 @@ import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; -import java.util.HashMap; import java.util.Map; import static org.junit.Assert.assertEquals; @@ -49,10 +48,13 @@ public class VideoResourceTest { @Before public void setUp() { - Map videos = new HashMap<>(); - videos.put(1, new Video(1, "Avatar", 178, "epic science fiction film", "James Cameron", "English")); - videos.put(2, new Video(2, "Godzilla Resurgence", 120, "Action & drama movie|", "Hideaki Anno", "Japanese")); - videos.put(3, new Video(3, "Interstellar", 169, "Adventure & Sci-Fi", "Christopher Nolan", "English")); + Map videos = Map.of( + 1, new Video(1, "Avatar", 178, "epic science fiction film", + "James Cameron", "English"), + 2, new Video(2, "Godzilla Resurgence", 120, "Action & drama movie|", + "Hideaki Anno", "Japanese"), + 3, new Video(3, "Interstellar", 169, "Adventure & Sci-Fi", + "Christopher Nolan", "English")); resource = new VideoResource(fieldJsonMapper, videos); } diff --git a/prototype/src/test/java/com/iluwatar/prototype/PrototypeTest.java b/prototype/src/test/java/com/iluwatar/prototype/PrototypeTest.java index 8fbd80294b4c..e4dd0658a0d8 100644 --- a/prototype/src/test/java/com/iluwatar/prototype/PrototypeTest.java +++ b/prototype/src/test/java/com/iluwatar/prototype/PrototypeTest.java @@ -26,13 +26,10 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -import java.util.Arrays; import java.util.Collection; +import java.util.List; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNotSame; -import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.*; /** * Date: 12/28/15 - 8:45 PM @@ -41,7 +38,7 @@ */ public class PrototypeTest

    { static Collection dataProvider() { - return Arrays.asList( + return List.of( new Object[]{new OrcBeast("axe"), "Orcish wolf attacks with axe"}, new Object[]{new OrcMage("sword"), "Orcish mage attacks with sword"}, new Object[]{new OrcWarlord("laser"), "Orcish warlord attacks with laser"}, diff --git a/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java b/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java index 6e53713233a1..3b0bff608327 100644 --- a/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java +++ b/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java @@ -23,16 +23,7 @@ package com.iluwatar.repository; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.util.Arrays; -import java.util.List; -import java.util.Optional; - -import javax.annotation.Resource; - +import com.google.common.collect.Lists; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -40,7 +31,11 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit.jupiter.SpringExtension; -import com.google.common.collect.Lists; +import javax.annotation.Resource; +import java.util.List; +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.*; /** * Test case to test the functions of {@link PersonRepository}, beside the CRUD functions, the query @@ -59,7 +54,7 @@ public class AnnotationBasedRepositoryTest { Person john = new Person("John", "lawrence", 35); Person terry = new Person("Terry", "Law", 36); - List persons = Arrays.asList(peter, nasta, john, terry); + List persons = List.of(peter, nasta, john, terry); /** * Prepare data for test diff --git a/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java b/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java index 9f7615aa57de..614f18dba1af 100644 --- a/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java +++ b/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java @@ -23,16 +23,7 @@ package com.iluwatar.repository; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.util.Arrays; -import java.util.List; -import java.util.Optional; - -import javax.annotation.Resource; - +import com.google.common.collect.Lists; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -40,7 +31,11 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit.jupiter.SpringExtension; -import com.google.common.collect.Lists; +import javax.annotation.Resource; +import java.util.List; +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.*; /** * Test case to test the functions of {@link PersonRepository}, beside the CRUD functions, the query @@ -58,7 +53,7 @@ public class RepositoryTest { Person john = new Person("John", "lawrence", 35); Person terry = new Person("Terry", "Law", 36); - List persons = Arrays.asList(peter, nasta, john, terry); + List persons = List.of(peter, nasta, john, terry); /** * Prepare data for test diff --git a/retry/src/main/java/com/iluwatar/retry/FindCustomer.java b/retry/src/main/java/com/iluwatar/retry/FindCustomer.java index 11c2b40d6e03..e5013f50e925 100644 --- a/retry/src/main/java/com/iluwatar/retry/FindCustomer.java +++ b/retry/src/main/java/com/iluwatar/retry/FindCustomer.java @@ -24,8 +24,8 @@ package com.iluwatar.retry; import java.util.ArrayDeque; -import java.util.Arrays; import java.util.Deque; +import java.util.List; /** * Finds a customer, returning its ID from our records. @@ -48,7 +48,7 @@ public final class FindCustomer implements BusinessOperation { */ public FindCustomer(String customerId, BusinessException... errors) { this.customerId = customerId; - this.errors = new ArrayDeque<>(Arrays.asList(errors)); + this.errors = new ArrayDeque<>(List.of(errors)); } @Override diff --git a/servant/src/main/java/com/iluwatar/servant/App.java b/servant/src/main/java/com/iluwatar/servant/App.java index a629856d5173..35a26dbcc955 100644 --- a/servant/src/main/java/com/iluwatar/servant/App.java +++ b/servant/src/main/java/com/iluwatar/servant/App.java @@ -26,7 +26,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; import java.util.List; @@ -60,9 +59,7 @@ public static void scenario(Servant servant, int compliment) { King k = new King(); Queen q = new Queen(); - List guests = new ArrayList<>(); - guests.add(k); - guests.add(q); + List guests = List.of(k, q); // feed servant.feed(k); diff --git a/servant/src/test/java/com/iluwatar/servant/ServantTest.java b/servant/src/test/java/com/iluwatar/servant/ServantTest.java index 4431f6d60837..02b69559e624 100644 --- a/servant/src/test/java/com/iluwatar/servant/ServantTest.java +++ b/servant/src/test/java/com/iluwatar/servant/ServantTest.java @@ -25,7 +25,6 @@ import org.junit.jupiter.api.Test; -import java.util.ArrayList; import java.util.List; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -76,15 +75,9 @@ public void testCheckIfYouWillBeHanged() { final Royalty badMoodRoyalty = mock(Royalty.class); when(badMoodRoyalty.getMood()).thenReturn(true); - final List goodCompany = new ArrayList<>(); - goodCompany.add(goodMoodRoyalty); - goodCompany.add(goodMoodRoyalty); - goodCompany.add(goodMoodRoyalty); + final List goodCompany = List.of(goodMoodRoyalty, goodMoodRoyalty, goodMoodRoyalty); - final List badCompany = new ArrayList<>(); - goodCompany.add(goodMoodRoyalty); - goodCompany.add(goodMoodRoyalty); - goodCompany.add(badMoodRoyalty); + final List badCompany = List.of(goodMoodRoyalty, goodMoodRoyalty, badMoodRoyalty); assertTrue(new Servant("test").checkIfYouWillBeHanged(goodCompany)); assertTrue(new Servant("test").checkIfYouWillBeHanged(badCompany)); diff --git a/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java b/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java index 03284ab6ddd8..b4b3c5714ca3 100644 --- a/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java +++ b/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java @@ -97,11 +97,10 @@ public void testFindAllSpells() throws Exception { public void testFindWizardsWithSpellbook() throws Exception { final String bookname = "bookname"; final Spellbook spellbook = mock(Spellbook.class); - final Set wizards = new HashSet<>(); - wizards.add(mock(Wizard.class)); - wizards.add(mock(Wizard.class)); - wizards.add(mock(Wizard.class)); - + final Set wizards = Set.of( + mock(Wizard.class), + mock(Wizard.class), + mock(Wizard.class)); when(spellbook.getWizards()).thenReturn(wizards); final SpellbookDao spellbookDao = mock(SpellbookDao.class); @@ -126,11 +125,10 @@ public void testFindWizardsWithSpellbook() throws Exception { @Test public void testFindWizardsWithSpell() throws Exception { - final Set wizards = new HashSet<>(); - wizards.add(mock(Wizard.class)); - wizards.add(mock(Wizard.class)); - wizards.add(mock(Wizard.class)); - + final Set wizards = Set.of( + mock(Wizard.class), + mock(Wizard.class), + mock(Wizard.class)); final Spellbook spellbook = mock(Spellbook.class); when(spellbook.getWizards()).thenReturn(wizards); diff --git a/specification/src/main/java/com/iluwatar/specification/app/App.java b/specification/src/main/java/com/iluwatar/specification/app/App.java index df80f855f1f5..00b37181438c 100644 --- a/specification/src/main/java/com/iluwatar/specification/app/App.java +++ b/specification/src/main/java/com/iluwatar/specification/app/App.java @@ -23,17 +23,7 @@ package com.iluwatar.specification.app; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -import com.iluwatar.specification.creature.Creature; -import com.iluwatar.specification.creature.Dragon; -import com.iluwatar.specification.creature.Goblin; -import com.iluwatar.specification.creature.KillerBee; -import com.iluwatar.specification.creature.Octopus; -import com.iluwatar.specification.creature.Shark; -import com.iluwatar.specification.creature.Troll; +import com.iluwatar.specification.creature.*; import com.iluwatar.specification.property.Color; import com.iluwatar.specification.property.Movement; import com.iluwatar.specification.selector.ColorSelector; @@ -41,6 +31,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.List; +import java.util.stream.Collectors; + /** * * The central idea of the Specification pattern is to separate the statement of how to match a @@ -64,8 +57,7 @@ public class App { public static void main(String[] args) { // initialize creatures list List creatures = - Arrays.asList(new Goblin(), new Octopus(), new Dragon(), new Shark(), new Troll(), - new KillerBee()); + List.of(new Goblin(), new Octopus(), new Dragon(), new Shark(), new Troll(), new KillerBee()); // find all walking creatures LOGGER.info("Find all walking creatures"); List walkingCreatures = diff --git a/specification/src/test/java/com/iluwatar/specification/creature/CreatureTest.java b/specification/src/test/java/com/iluwatar/specification/creature/CreatureTest.java index 022475c24238..26ff4c1ab877 100644 --- a/specification/src/test/java/com/iluwatar/specification/creature/CreatureTest.java +++ b/specification/src/test/java/com/iluwatar/specification/creature/CreatureTest.java @@ -29,8 +29,8 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -import java.util.Arrays; import java.util.Collection; +import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -46,7 +46,7 @@ public class CreatureTest { * @return The tested {@link Creature} instance and its expected specs */ public static Collection dataProvider() { - return Arrays.asList( + return List.of( new Object[]{new Dragon(), "Dragon", Size.LARGE, Movement.FLYING, Color.RED}, new Object[]{new Goblin(), "Goblin", Size.SMALL, Movement.WALKING, Color.GREEN}, new Object[]{new KillerBee(), "KillerBee", Size.SMALL, Movement.FLYING, Color.LIGHT}, @@ -76,15 +76,13 @@ public void testGetMovement(Creature testedCreature, String name, Size size, Mov @ParameterizedTest @MethodSource("dataProvider") - public void testGetColor(Creature testedCreature, String name, Size size, Movement movement, - Color color) { + public void testGetColor(Creature testedCreature, String name, Size size, Movement movement, Color color) { assertEquals(color, testedCreature.getColor()); } @ParameterizedTest @MethodSource("dataProvider") - public void testToString(Creature testedCreature, String name, Size size, Movement movement, - Color color) { + public void testToString(Creature testedCreature, String name, Size size, Movement movement, Color color) { final String toString = testedCreature.toString(); assertNotNull(toString); assertEquals( diff --git a/strategy/src/test/java/com/iluwatar/strategy/DragonSlayingStrategyTest.java b/strategy/src/test/java/com/iluwatar/strategy/DragonSlayingStrategyTest.java index b97cf499fbf8..67e4b92cc643 100644 --- a/strategy/src/test/java/com/iluwatar/strategy/DragonSlayingStrategyTest.java +++ b/strategy/src/test/java/com/iluwatar/strategy/DragonSlayingStrategyTest.java @@ -32,7 +32,6 @@ import org.junit.jupiter.params.provider.MethodSource; import org.slf4j.LoggerFactory; -import java.util.Arrays; import java.util.Collection; import java.util.LinkedList; import java.util.List; @@ -50,19 +49,19 @@ public class DragonSlayingStrategyTest { * @return The test parameters for each cycle */ static Collection dataProvider() { - return Arrays.asList( - new Object[]{ - new MeleeStrategy(), - "With your Excalibur you sever the dragon's head!" - }, - new Object[]{ - new ProjectileStrategy(), - "You shoot the dragon with the magical crossbow and it falls dead on the ground!" - }, - new Object[]{ - new SpellStrategy(), - "You cast the spell of disintegration and the dragon vaporizes in a pile of dust!" - } + return List.of( + new Object[]{ + new MeleeStrategy(), + "With your Excalibur you sever the dragon's head!" + }, + new Object[]{ + new ProjectileStrategy(), + "You shoot the dragon with the magical crossbow and it falls dead on the ground!" + }, + new Object[]{ + new SpellStrategy(), + "You cast the spell of disintegration and the dragon vaporizes in a pile of dust!" + } ); } diff --git a/thread-pool/src/main/java/com/iluwatar/threadpool/App.java b/thread-pool/src/main/java/com/iluwatar/threadpool/App.java index 9fe16d36ac2a..b21f8cc4a1d3 100644 --- a/thread-pool/src/main/java/com/iluwatar/threadpool/App.java +++ b/thread-pool/src/main/java/com/iluwatar/threadpool/App.java @@ -60,22 +60,22 @@ public static void main(String[] args) { LOGGER.info("Program started"); // Create a list of tasks to be executed - List tasks = new ArrayList<>(); - tasks.add(new PotatoPeelingTask(3)); - tasks.add(new PotatoPeelingTask(6)); - tasks.add(new CoffeeMakingTask(2)); - tasks.add(new CoffeeMakingTask(6)); - tasks.add(new PotatoPeelingTask(4)); - tasks.add(new CoffeeMakingTask(2)); - tasks.add(new PotatoPeelingTask(4)); - tasks.add(new CoffeeMakingTask(9)); - tasks.add(new PotatoPeelingTask(3)); - tasks.add(new CoffeeMakingTask(2)); - tasks.add(new PotatoPeelingTask(4)); - tasks.add(new CoffeeMakingTask(2)); - tasks.add(new CoffeeMakingTask(7)); - tasks.add(new PotatoPeelingTask(4)); - tasks.add(new PotatoPeelingTask(5)); + List tasks = List.of( + new PotatoPeelingTask(3), + new PotatoPeelingTask(6), + new CoffeeMakingTask(2), + new CoffeeMakingTask(6), + new PotatoPeelingTask(4), + new CoffeeMakingTask(2), + new PotatoPeelingTask(4), + new CoffeeMakingTask(9), + new PotatoPeelingTask(3), + new CoffeeMakingTask(2), + new PotatoPeelingTask(4), + new CoffeeMakingTask(2), + new CoffeeMakingTask(7), + new PotatoPeelingTask(4), + new PotatoPeelingTask(5)); // Creates a thread pool that reuses a fixed number of threads operating off a shared // unbounded queue. At any point, at most nThreads threads will be active processing diff --git a/tls/src/test/java/com/iluwatar/tls/DateFormatCallableTest.java b/tls/src/test/java/com/iluwatar/tls/DateFormatCallableTest.java index 04ca5ffcce4f..2e69e2c7f2e9 100644 --- a/tls/src/test/java/com/iluwatar/tls/DateFormatCallableTest.java +++ b/tls/src/test/java/com/iluwatar/tls/DateFormatCallableTest.java @@ -23,8 +23,10 @@ package com.iluwatar.tls; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + import java.util.ArrayList; -import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -32,9 +34,6 @@ import java.util.concurrent.Executors; import java.util.concurrent.Future; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; @@ -82,7 +81,7 @@ public class DateFormatCallableTest { /** * Expected content of the list containing the date values created by the run of DateFormatRunnalbe */ - List expectedDateValues = Arrays.asList("15.11.2015", "15.11.2015", "15.11.2015", "15.11.2015", "15.11.2015"); + List expectedDateValues = List.of("15.11.2015", "15.11.2015", "15.11.2015", "15.11.2015", "15.11.2015"); /** * Run Callable and prepare results for usage in the test methods diff --git a/tls/src/test/java/com/iluwatar/tls/DateFormatCallableTestIncorrectDateFormat.java b/tls/src/test/java/com/iluwatar/tls/DateFormatCallableTestIncorrectDateFormat.java index 2c88fc13d9e0..df2ab2a93419 100644 --- a/tls/src/test/java/com/iluwatar/tls/DateFormatCallableTestIncorrectDateFormat.java +++ b/tls/src/test/java/com/iluwatar/tls/DateFormatCallableTestIncorrectDateFormat.java @@ -23,16 +23,15 @@ package com.iluwatar.tls; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; @@ -76,7 +75,7 @@ public class DateFormatCallableTestIncorrectDateFormat { /** * Expected content of the list containing the exceptions created by the run of DateFormatRunnalbe */ - List expectedExceptions = Arrays.asList("class java.text.ParseException: Unparseable date: \"15.12.2015\"", + List expectedExceptions = List.of("class java.text.ParseException: Unparseable date: \"15.12.2015\"", "class java.text.ParseException: Unparseable date: \"15.12.2015\"", "class java.text.ParseException: Unparseable date: \"15.12.2015\"", "class java.text.ParseException: Unparseable date: \"15.12.2015\"", diff --git a/tls/src/test/java/com/iluwatar/tls/DateFormatCallableTestMultiThread.java b/tls/src/test/java/com/iluwatar/tls/DateFormatCallableTestMultiThread.java index 11e8eef5bc2a..1001e1bdf59b 100644 --- a/tls/src/test/java/com/iluwatar/tls/DateFormatCallableTestMultiThread.java +++ b/tls/src/test/java/com/iluwatar/tls/DateFormatCallableTestMultiThread.java @@ -23,8 +23,10 @@ package com.iluwatar.tls; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + import java.util.ArrayList; -import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -32,9 +34,6 @@ import java.util.concurrent.Executors; import java.util.concurrent.Future; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; @@ -86,7 +85,7 @@ static class StringArrayList extends ArrayList { /** * Expected content of the list containing the date values created by each thread */ - List expectedDateValues = Arrays.asList("15.11.2015", "15.11.2015", "15.11.2015", "15.11.2015", "15.11.2015"); + List expectedDateValues = List.of("15.11.2015", "15.11.2015", "15.11.2015", "15.11.2015", "15.11.2015"); /** * Run Callable and prepare results for usage in the test methods From a65a60183575c35c16c16aeba2338675eb8bbe6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Tue, 29 Oct 2019 22:11:09 +0200 Subject: [PATCH 58/68] Update web site logic --- .travis.yml | 3 +-- update-ghpages.sh => update-website.sh | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) rename update-ghpages.sh => update-website.sh (87%) diff --git a/.travis.yml b/.travis.yml index f9bfeaa8568a..0a5ac7709f2a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,6 @@ sudo: required env: global: - - GH_REF: github.com/iluwatar/java-design-patterns.git - secure: "DCpazS3nkLnter3sguXEAS2fC/1ZWNfM+XLyif9MfNFxlZdpni2vCD/jA0Rdpga8puQWHNVLyAec+RPFH/2qSmJ1c1UTV5MaLv8tPqwUX0VFA+1I6XoSv6oX4ldHTBWHEWqQHkRFOLoil0h0edc0tTOWQwXF8U+DLAB+HkRb4gw=" services: @@ -24,7 +23,7 @@ script: - 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then mvn clean verify sonar:sonar -Dsonar.projectKey=iluwatar_java-design-patterns -Dsonar.host.url=https://sonarcloud.io; fi' after_success: -- bash update-ghpages.sh +- bash update-website.sh notifications: email: diff --git a/update-ghpages.sh b/update-website.sh similarity index 87% rename from update-ghpages.sh rename to update-website.sh index 25ea680cc906..5b9fe5515f7d 100644 --- a/update-ghpages.sh +++ b/update-website.sh @@ -24,8 +24,8 @@ # Clone gh-pages -git clone -b gh-pages "https://${GH_REF}" ghpagesclone -cd ghpagesclone +git clone https://github.com/iluwatar/java-design-patterns-web.git +cd java-design-patterns-web # Init and update submodule to latest git submodule update --init --recursive @@ -41,5 +41,5 @@ then # it should be committed git add . git commit -m ":sparkles: :up: Automagic Update via Travis-CI" - git push --quiet "https://${GH_TOKEN}:x-oauth-basic@${GH_REF}" gh-pages > /dev/null 2>&1 + git push --quiet "https://${GH_TOKEN}:x-oauth-basic@github.com/iluwatar/java-design-patterns-web.git" gh-pages > /dev/null 2>&1 fi From ccc1a6340b6b74e337d431d2aff3a067dd078070 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Tue, 29 Oct 2019 23:02:24 +0200 Subject: [PATCH 59/68] Update script --- update-website.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/update-website.sh b/update-website.sh index 5b9fe5515f7d..cdff97392b60 100644 --- a/update-website.sh +++ b/update-website.sh @@ -29,7 +29,6 @@ cd java-design-patterns-web # Init and update submodule to latest git submodule update --init --recursive -git submodule update --remote # Setup Git git config user.name "Travis-CI" From ff5284848188afaedb4463796df1e0c002603685 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Tue, 29 Oct 2019 23:28:05 +0200 Subject: [PATCH 60/68] Update script --- update-website.sh | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/update-website.sh b/update-website.sh index cdff97392b60..7dd96a144d3a 100644 --- a/update-website.sh +++ b/update-website.sh @@ -34,11 +34,6 @@ git submodule update --init --recursive git config user.name "Travis-CI" git config user.email "travis@no.reply" -# If there is a new version of the master branch -if git status | grep patterns > /dev/null 2>&1 -then - # it should be committed - git add . - git commit -m ":sparkles: :up: Automagic Update via Travis-CI" - git push --quiet "https://${GH_TOKEN}:x-oauth-basic@github.com/iluwatar/java-design-patterns-web.git" gh-pages > /dev/null 2>&1 -fi +git add . +git commit -m ":sparkles: :up: Automagic Update via Travis-CI" +git push --quiet "https://${GH_TOKEN}:x-oauth-basic@github.com/iluwatar/java-design-patterns-web.git" master > /dev/null 2>&1 From 91a085d3d18905f845c0328d5ebef36c630bf36b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Wed, 30 Oct 2019 08:15:43 +0200 Subject: [PATCH 61/68] Update script --- update-website.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/update-website.sh b/update-website.sh index 7dd96a144d3a..66192f15f82a 100644 --- a/update-website.sh +++ b/update-website.sh @@ -29,6 +29,13 @@ cd java-design-patterns-web # Init and update submodule to latest git submodule update --init --recursive +cd 30-seconds-of-java +git pull origin master +cd ../patterns +git pull origin master +cd ../programming-principles +git pull origin gh-pages +cd .. # Setup Git git config user.name "Travis-CI" From fca7e9c8c7e9b0ffd579624b7c137db46eeeb6ca Mon Sep 17 00:00:00 2001 From: "adamski.pro" Date: Wed, 30 Oct 2019 07:19:33 +0100 Subject: [PATCH 62/68] https://github.com/iluwatar/java-design-patterns/issues/1021 - decrease number of checkstyle errors in callback pattern (#1053) --- .../main/java/com/iluwatar/callback/App.java | 22 +++++++++++-------- .../java/com/iluwatar/callback/Callback.java | 4 ++-- .../com/iluwatar/callback/LambdasApp.java | 15 ++++++++----- .../com/iluwatar/callback/SimpleTask.java | 14 +++++++----- .../main/java/com/iluwatar/callback/Task.java | 6 ++--- .../com/iluwatar/callback/package-info.java | 1 + 6 files changed, 36 insertions(+), 26 deletions(-) create mode 100644 callback/src/main/java/com/iluwatar/callback/package-info.java diff --git a/callback/src/main/java/com/iluwatar/callback/App.java b/callback/src/main/java/com/iluwatar/callback/App.java index 3a9cd00cb185..842f01dcdf3d 100644 --- a/callback/src/main/java/com/iluwatar/callback/App.java +++ b/callback/src/main/java/com/iluwatar/callback/App.java @@ -24,23 +24,27 @@ package com.iluwatar.callback; import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import static org.slf4j.LoggerFactory.getLogger; /** - * - * Callback pattern is more native for functional languages where functions are treated as - * first-class citizens. Prior to Java 8 callbacks can be simulated using simple (alike command) - * interfaces. - * + * + * Callback pattern is more native for functional languages where functions are + * treated as first-class citizens. Prior to Java 8 callbacks can be simulated + * using simple (alike command) interfaces. + * */ -public class App { +public final class App { - private static final Logger LOGGER = LoggerFactory.getLogger(App.class); + private static final Logger LOGGER = getLogger(App.class); + + private App() { + } /** * Program entry point */ - public static void main(String[] args) { + public static void main(final String[] args) { Task task = new SimpleTask(); Callback callback = () -> LOGGER.info("I'm done now."); task.executeWith(callback); diff --git a/callback/src/main/java/com/iluwatar/callback/Callback.java b/callback/src/main/java/com/iluwatar/callback/Callback.java index 15f08366275d..0158dcda0fe6 100644 --- a/callback/src/main/java/com/iluwatar/callback/Callback.java +++ b/callback/src/main/java/com/iluwatar/callback/Callback.java @@ -24,9 +24,9 @@ package com.iluwatar.callback; /** - * + * * Callback interface - * + * */ public interface Callback { diff --git a/callback/src/main/java/com/iluwatar/callback/LambdasApp.java b/callback/src/main/java/com/iluwatar/callback/LambdasApp.java index 2b445d9ca440..18715e3b79ca 100644 --- a/callback/src/main/java/com/iluwatar/callback/LambdasApp.java +++ b/callback/src/main/java/com/iluwatar/callback/LambdasApp.java @@ -24,22 +24,25 @@ package com.iluwatar.callback; import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import static org.slf4j.LoggerFactory.getLogger; /** * - * This example generates the exact same output as {@link App} however the callback has been - * defined as a Lambdas expression. + * This example generates the exact same output as {@link App} however the + * callback has been defined as a Lambdas expression. * */ -public class LambdasApp { +public final class LambdasApp { + + private static final Logger LOGGER = getLogger(LambdasApp.class); - private static final Logger LOGGER = LoggerFactory.getLogger(LambdasApp.class); + private LambdasApp() { } /** * Program entry point */ - public static void main(String[] args) { + public static void main(final String[] args) { Task task = new SimpleTask(); Callback c = () -> LOGGER.info("I'm done now."); task.executeWith(c); diff --git a/callback/src/main/java/com/iluwatar/callback/SimpleTask.java b/callback/src/main/java/com/iluwatar/callback/SimpleTask.java index 155d1e96dad7..21162833a72c 100644 --- a/callback/src/main/java/com/iluwatar/callback/SimpleTask.java +++ b/callback/src/main/java/com/iluwatar/callback/SimpleTask.java @@ -24,19 +24,21 @@ package com.iluwatar.callback; import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import static org.slf4j.LoggerFactory.getLogger; /** - * + * * Implementation of task that need to be executed - * + * */ -public class SimpleTask extends Task { +public final class SimpleTask extends Task { - private static final Logger LOGGER = LoggerFactory.getLogger(SimpleTask.class); + private static final Logger LOGGER = getLogger(SimpleTask.class); @Override public void execute() { - LOGGER.info("Perform some important activity and after call the callback method."); + LOGGER.info("Perform some important activity and after call the" + + " callback method."); } } diff --git a/callback/src/main/java/com/iluwatar/callback/Task.java b/callback/src/main/java/com/iluwatar/callback/Task.java index 9f2abe85fa21..15cd99e9ae70 100644 --- a/callback/src/main/java/com/iluwatar/callback/Task.java +++ b/callback/src/main/java/com/iluwatar/callback/Task.java @@ -24,16 +24,16 @@ package com.iluwatar.callback; /** - * + * * Template-method class for callback hook execution - * + * */ public abstract class Task { /** * Execute with callback */ - public final void executeWith(Callback callback) { + final void executeWith(final Callback callback) { execute(); if (callback != null) { callback.call(); diff --git a/callback/src/main/java/com/iluwatar/callback/package-info.java b/callback/src/main/java/com/iluwatar/callback/package-info.java new file mode 100644 index 000000000000..a72bbb50d6cd --- /dev/null +++ b/callback/src/main/java/com/iluwatar/callback/package-info.java @@ -0,0 +1 @@ +package com.iluwatar.callback; From a9dfd7e8091cfe6ba8312f518827c71af1352bf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Wed, 30 Oct 2019 08:23:45 +0200 Subject: [PATCH 63/68] Update license header --- .../com/iluwatar/callback/package-info.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/callback/src/main/java/com/iluwatar/callback/package-info.java b/callback/src/main/java/com/iluwatar/callback/package-info.java index a72bbb50d6cd..0b86125fd678 100644 --- a/callback/src/main/java/com/iluwatar/callback/package-info.java +++ b/callback/src/main/java/com/iluwatar/callback/package-info.java @@ -1 +1,24 @@ +/* + * The MIT License + * Copyright © 2014-2019 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + package com.iluwatar.callback; From cdb80b8ddd09ec487278a6c9b89cc07b58de8559 Mon Sep 17 00:00:00 2001 From: Hemant Bothra Date: Wed, 30 Oct 2019 11:57:24 +0530 Subject: [PATCH 64/68] Issue 893 (#1014) * Using static object to reduce memory foot prints * Updating README along with name of static fields * Updating code as per review comments * Updating code as per review comments * Updating doc as per new code --- factory-method/README.md | 4 ++-- .../iluwatar/factory/method/ElfBlacksmith.java | 15 +++++++++++++-- .../iluwatar/factory/method/OrcBlacksmith.java | 13 ++++++++++++- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/factory-method/README.md b/factory-method/README.md index 087221fb9dfe..31e2ab98b744 100644 --- a/factory-method/README.md +++ b/factory-method/README.md @@ -42,13 +42,13 @@ public interface Blacksmith { public class ElfBlacksmith implements Blacksmith { public Weapon manufactureWeapon(WeaponType weaponType) { - return new ElfWeapon(weaponType); + return ELFARSENAL.get(weaponType); } } public class OrcBlacksmith implements Blacksmith { public Weapon manufactureWeapon(WeaponType weaponType) { - return new OrcWeapon(weaponType); + return ORCARSENAL.get(weaponType); } } ``` diff --git a/factory-method/src/main/java/com/iluwatar/factory/method/ElfBlacksmith.java b/factory-method/src/main/java/com/iluwatar/factory/method/ElfBlacksmith.java index adae5bd50b9a..eccff10d924c 100644 --- a/factory-method/src/main/java/com/iluwatar/factory/method/ElfBlacksmith.java +++ b/factory-method/src/main/java/com/iluwatar/factory/method/ElfBlacksmith.java @@ -23,6 +23,9 @@ package com.iluwatar.factory.method; +import java.util.HashMap; +import java.util.Map; + /** * * Concrete subclass for creating new objects. @@ -30,9 +33,17 @@ */ public class ElfBlacksmith implements Blacksmith { + private static Map ELFARSENAL; + static { + ELFARSENAL= new HashMap<>(WeaponType.values().length); + for (WeaponType type : WeaponType.values()) { + ELFARSENAL.put(type, new ElfWeapon(type)); + } + } + @Override public Weapon manufactureWeapon(WeaponType weaponType) { - return new ElfWeapon(weaponType); + return ELFARSENAL.get(weaponType); } - + } diff --git a/factory-method/src/main/java/com/iluwatar/factory/method/OrcBlacksmith.java b/factory-method/src/main/java/com/iluwatar/factory/method/OrcBlacksmith.java index a2a86fe4455f..6736630492c6 100644 --- a/factory-method/src/main/java/com/iluwatar/factory/method/OrcBlacksmith.java +++ b/factory-method/src/main/java/com/iluwatar/factory/method/OrcBlacksmith.java @@ -23,6 +23,9 @@ package com.iluwatar.factory.method; +import java.util.HashMap; +import java.util.Map; + /** * * Concrete subclass for creating new objects. @@ -30,8 +33,16 @@ */ public class OrcBlacksmith implements Blacksmith { + private static Map ORCARSENAL; + static { + ORCARSENAL= new HashMap<>(WeaponType.values().length); + for (WeaponType type : WeaponType.values()) { + ORCARSENAL.put(type, new OrcWeapon(type)); + } + } + @Override public Weapon manufactureWeapon(WeaponType weaponType) { - return new OrcWeapon(weaponType); + return ORCARSENAL.get(weaponType); } } From cc85c73fbc6a43dd564d2858a0a00671dd042493 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Wed, 30 Oct 2019 19:52:03 +0200 Subject: [PATCH 65/68] Move faq.md to java-design-patterns-web repository --- faq.md | 88 ---------------------------------------------------------- 1 file changed, 88 deletions(-) delete mode 100644 faq.md diff --git a/faq.md b/faq.md deleted file mode 100644 index 107ee1e684e2..000000000000 --- a/faq.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: page -link-title: FAQ -title: FAQ - Java Design Patterns -description: Java Design Pattern FAQ answers the most commonly asked design patterns questions. -permalink: /faq/ -icon: fa-question -page-index: 5 ---- - -### Q1: What is the difference between State and Strategy patterns? {#Q1} - -While the implementation is similar they solve different problems. The State -pattern deals with what state an object is in - it encapsulates state-dependent -behavior. -The Strategy pattern deals with how an object performs a certain task - it -encapsulates an algorithm. - -### Q2: What is the difference between Strategy and Template Method patterns? {#Q2} - -In Template Method the algorithm is chosen at compile time via inheritance. -With Strategy pattern the algorithm is chosen at runtime via composition. - -### Q3: What is the difference between Proxy and Decorator patterns? {#Q3} - -The difference is the intent of the patterns. While Proxy controls access to -the object Decorator is used to add responsibilities to the object. - -### Q4: What is the difference between Chain of Responsibility and Intercepting Filter patterns? {#Q4} - -While the implementations look similar there are differences. The Chain of -Responsibility forms a chain of request processors and the processors are then -executed one by one until the correct processor is found. In Intercepting -Filter the chain is constructed from filters and the whole chain is always -executed. - -### Q5: What is the difference between Visitor and Double Dispatch patterns? {#Q5} - -The Visitor pattern is a means of adding a new operation to existing classes. -Double dispatch is a means of dispatching function calls with respect to two -polymorphic types, rather than a single polymorphic type, which is what -languages like C++ and Java _do not_ support directly. - -### Q6: What are the differences between Flyweight and Object Pool patterns? {#Q6} - -They differ in the way they are used. - -Pooled objects can simultaneously be used by a single "client" only. For that, -a pooled object must be checked out from the pool, then it can be used by a -client, and then the client must return the object back to the pool. Multiple -instances of identical objects may exist, up to the maximal capacity of the -pool. - -In contrast, a Flyweight object is singleton, and it can be used simultaneously -by multiple clients. - -As for concurrent access, pooled objects can be mutable and they usually don't -need to be thread safe, as typically, only one thread is going to use a -specific instance at the same time. Flyweight must either be immutable (the -best option), or implement thread safety. - -As for performance and scalability, pools can become bottlenecks, if all the -pooled objects are in use and more clients need them, threads will become -blocked waiting for available object from the pool. This is not the case with -Flyweight. - -### Q7: What are the differences between FluentInterface and Builder patterns? {#Q7} - -Fluent interfaces are sometimes confused with the Builder pattern, because they share method chaining and a fluent usage. However, fluent interfaces are not primarily used to create shared (mutable) objects, but to configure complex objects without having to respecify the target object on every property change. - -### Q8: What is the difference between java.io.Serialization and Memento pattern? {#Q8} - -Memento is typically used to implement rollback/save-point support. Example we might want to mark the state of an object at a point in time, do some work and then decide to rollback to the previous state. - -On the other hand serialization may be used as a tool to save the state of an object into byte[] and preserving the contents in memory or disk. When someone invokes the memento to revert object's previous state then we can deserialize the information stored and recreate previous state. - -So Memento is a pattern and serialization is a tool that can be used to implement this pattern. Other ways to implement the pattern can be to clone the contents of the object and keep track of those clones. - - -### Q9: What's the difference between “API Gateway” and “Aggregator Microservices”? Isn't it the same? {#Q9} - -The API Gateway : Aggregate calls to microservices in a single location. The user makes a single call to the API Gateway, and the API Gateway then calls each relevant microservice. -Use the API Gateway pattern when you're also using the Microservices pattern and need a single point of aggregation for your microservice calls. - -Aggregator Microservices : The user makes a single call to the Aggregator, and the aggregator then calls each relevant microservice and collects the data, apply business logic to it, and further publish is as a REST Endpoint.Use the Aggregator Microservices pattern when you need a unified API for various microservices, regardless the client device. - - - From 1eb1961f1b38c8360ac7a99204224087dadad46e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Wed, 30 Oct 2019 21:12:10 +0200 Subject: [PATCH 66/68] Remove presentations --- abstract-factory/README.md | 4 - abstract-factory/etc/diagram1.png | Bin 58018 -> 0 bytes abstract-factory/etc/diagram2.png | Bin 26347 -> 0 bytes abstract-factory/etc/presentation.html | 190 ------------------- command/README.md | 4 - command/etc/diagram.png | Bin 57571 -> 0 bytes command/etc/presentation.html | 243 ------------------------- factory-method/README.md | 4 - factory-method/etc/diagram1.png | Bin 59865 -> 0 bytes factory-method/etc/presentation.html | 185 ------------------- hexagonal/README.md | 3 - hexagonal/etc/layers.png | Bin 15887 -> 0 bytes hexagonal/etc/ports_and_adapters.png | Bin 34860 -> 0 bytes hexagonal/etc/ports_and_adapters.xml | 25 --- hexagonal/etc/presentation.html | 127 ------------- proxy/README.md | 3 - proxy/etc/presentation.html | 92 ---------- proxy/etc/proxy-concept.png | Bin 24957 -> 0 bytes proxy/etc/proxy-concept.xml | 25 --- 19 files changed, 905 deletions(-) delete mode 100644 abstract-factory/etc/diagram1.png delete mode 100644 abstract-factory/etc/diagram2.png delete mode 100644 abstract-factory/etc/presentation.html delete mode 100644 command/etc/diagram.png delete mode 100644 command/etc/presentation.html delete mode 100644 factory-method/etc/diagram1.png delete mode 100644 factory-method/etc/presentation.html delete mode 100644 hexagonal/etc/layers.png delete mode 100644 hexagonal/etc/ports_and_adapters.png delete mode 100644 hexagonal/etc/ports_and_adapters.xml delete mode 100644 hexagonal/etc/presentation.html delete mode 100644 proxy/etc/presentation.html delete mode 100644 proxy/etc/proxy-concept.png delete mode 100644 proxy/etc/proxy-concept.xml diff --git a/abstract-factory/README.md b/abstract-factory/README.md index 0084030b645e..aefedb07f7f4 100644 --- a/abstract-factory/README.md +++ b/abstract-factory/README.md @@ -188,10 +188,6 @@ Use the Abstract Factory pattern when ## Tutorial * [Abstract Factory Pattern Tutorial](https://www.journaldev.com/1418/abstract-factory-design-pattern-in-java) -## Presentations - -* [Abstract Factory Pattern](etc/presentation.html) - ## Real world examples diff --git a/abstract-factory/etc/diagram1.png b/abstract-factory/etc/diagram1.png deleted file mode 100644 index e9c3c84c212d84c26f73ea24a2668dc7a3b7bf21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58018 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 diff --git a/abstract-factory/etc/presentation.html b/abstract-factory/etc/presentation.html deleted file mode 100644 index 823245870569..000000000000 --- a/abstract-factory/etc/presentation.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - Design Patterns - Abstract Factory Presentation - - - - - - - - - \ No newline at end of file diff --git a/command/README.md b/command/README.md index cb9bd48a9608..41e8b78e1aaa 100644 --- a/command/README.md +++ b/command/README.md @@ -36,10 +36,6 @@ Use the Command pattern when you want to * implement callback functionality * implement the undo functionality -## Presentations - -* [Command Pattern](etc/presentation.html) - ## Real world examples * [java.lang.Runnable](http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html) diff --git a/command/etc/diagram.png b/command/etc/diagram.png deleted file mode 100644 index 1d3494292b82a5c7cbde7d5dc26c238ab5661bdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57571 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

    _*pGf#8 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 - - - - Design Patterns - Command Presentation - - - - - - - - - \ No newline at end of file diff --git a/factory-method/README.md b/factory-method/README.md index 31e2ab98b744..be5ead3e7329 100644 --- a/factory-method/README.md +++ b/factory-method/README.md @@ -69,10 +69,6 @@ Use the Factory Method pattern when * a class wants its subclasses to specify the objects it creates * classes delegate responsibility to one of several helper subclasses, and you want to localize the knowledge of which helper subclass is the delegate -## Presentations - -* [Factory Method Pattern](etc/presentation.html) - ## Real world examples * [java.util.Calendar](http://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html#getInstance--) diff --git a/factory-method/etc/diagram1.png b/factory-method/etc/diagram1.png deleted file mode 100644 index fa325edf002a702f3c94e46f488c293df80d1ceb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59865 zcmZ^L1yGw^*DWnYin|kBic4`TP@qLiaW7Wf-QBG~vEowPCAdqlV!<7P2Y2VD?|Z-b z{<-ttnPiejPtG~}?7j9{`$@zXMHzGy5)?Q%IP}k-K7NIRdz}vl_bLe)5w>So^;Qb@ z@yh9|j09Ze7}-8-Pk~-qz3yU#9MykP6642Pj~RU!eZ~E~|Iq8;LIk`EHX9Sz4JU?=)Ov#r zPc4g)uyJmaRaI)XW7}I0By!AufaKE(*3$v6@TjOHw)j}7Tad76h&&g&YU-*!Pc3l27U^?ieR0>)+wL?R!dvQqiM)kZ=f3p+Zu#?o-)O2cd^H}rD5c`r&CDWw8QyD=9bY-XTjHr^ghKmg;OQ3&r%56_3FWa%t) zPHj#*|AmF?nDrS|^}X!7kk}bXeli(ACJ z3@Q|U3aoPSf<~y^X{T;AQW8ckMp0XRI6BR&x<;p?#_FzeAUW<|o;v*m3P?3lU~%h7 zXDprf&{ovNTBMHF-I{x&X3l%NC@x_zJgt7Jqf7PPpz zg#vXd$)4{)tdSxyLM81Zun1>m`G#F1h4arA&^nscTTM;5F?o zP1SVo@Mz1K8NK;|Pl|<4)_PJT>(pSqsM4uyKY@jbb~c0iZ=ng$?xS{12B8o1Hzk`3Z3oxi7F<()a^q1ji2)LS=?u$>^)qn>sVn@CD zE$jrh4++pb3J3A2sy-P zT2ZXFjyxFI*2*_m`lvbu_pc>@%z)v^a}UW+j*z zk_G~K^sgLh0OYL|DZlb+qN7A*O~jN=TlCW9T2x7Ow=@S%+zdG7OiEAiU|rMvYu71} ztO;kOaZ&vQL+(dHA@kJe$=Euyy|AvEv>iY;S^p3KyNj#$-FdPmPQzJ$VHiaf2F>T~ zQv%He!&!O7aQ-vnF`@t88AlB8&ss+Q@nfwwtGA_X2tk+P_Pa>=czVV~dNdkza|;pn z4lNlsZIIPaPj>UMg>{S*w)hUr<#kS5R;;Ozb%cPDLYzE2oLf6BLa98=0lehqMNSKl z(lTR4M*CH;ho=7(^pk`&FpSnduU5j1 z4IxB26kS+1@OVDs%0?3tFQGC+7j_P8SkvmIgaQ4FJPvpbr(n+*dD6gcqM@ewKtUtc zg*=|C%tSH@vIPPUk1-_uV+gvHi;u0Ni=+!tTFDpR;?SiHQB|4urSEk3(VcprhB_Pw zQnKx=8`XvPG|VHPQ5aWpmej13!{(_o3vHt!9S

    nEm})(v>`pZJ%UfS7zU9=-lRE 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 diff --git a/factory-method/etc/presentation.html b/factory-method/etc/presentation.html deleted file mode 100644 index df520605ad53..000000000000 --- a/factory-method/etc/presentation.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - Design Patterns - Factory Method Presentation - - - - - - - - - \ No newline at end of file diff --git a/hexagonal/README.md b/hexagonal/README.md index 7d27f4b622b8..1e6f897d0297 100644 --- a/hexagonal/README.md +++ b/hexagonal/README.md @@ -29,9 +29,6 @@ Use Hexagonal Architecture pattern when ## Tutorials * [Build Maintainable Systems With Hexagonal Architecture](http://java-design-patterns.com/blog/build-maintainable-systems-with-hexagonal-architecture/) -## Presentations -* [Hexagonal Architecture](https://github.com/iluwatar/java-design-patterns/tree/master/hexagonal/etc/presentation.html) - ## Real world examples * [Apache Isis](https://isis.apache.org/) builds generic UI and REST API directly from the underlying domain objects diff --git a/hexagonal/etc/layers.png b/hexagonal/etc/layers.png deleted file mode 100644 index cb5a9c90bbe953ff87197bfb1834c34fac450f3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15887 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 Kh}Vc32LC_vUU`lH diff --git a/hexagonal/etc/ports_and_adapters.png b/hexagonal/etc/ports_and_adapters.png deleted file mode 100644 index d285045dea68721c586bbfae5d303265f738eea0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34860 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 diff --git a/hexagonal/etc/ports_and_adapters.xml b/hexagonal/etc/ports_and_adapters.xml deleted file mode 100644 index 83edb95e02ef..000000000000 --- a/hexagonal/etc/ports_and_adapters.xml +++ /dev/null @@ -1,25 +0,0 @@ - -7Zpdk6I4FIZ/jbdbJAHEyx7nY/diqrqqd2tnLiOJSDUSK6ZHe3/9BkmUfFiDDqBM2TcNBwLxOe85nBOYoPl6/4XjzeorI7SYwIDsJ+jjBEKA4kj+qyzvtWUag9qQ8Zyok06Gl/w/qoyBsr7lhG6NEwVjhcg3pjFlZUlTYdgw52xnnrZkhXnXDc6oY3hJceFa/82JWNXWJApO9j9pnq30nUGgjixw+ppx9laq+00gWh7+6sNrrK+lzt+uMGG7hgl9mqA5Z0zUW+v9nBYVW42tHvf5zNHjvDktRZsBqB7wAxdvVM/4MC/xrlnIKW6qzRXd44yVE/RhQ3m+poLyk/X5ZPqwW+WCvmxwWo3aSYFI20qsC7kH5Ka6I+WC7s/OGhxZSI1RJi/N3+UpagBMFD4lL6D3dydnIa2lVcNRMFZGrASSHa99giQ3FCc/MzhKZmgaGcyOKBrMAPQwO2r7V5iFDrM549ThJgfJEKc/B7LMi2LOCsYP46oYg2kq7VvB2SttHCHxIo7ibhCGATARJshBqDNfk2AXoot+Lrpr4RFMk6UXXpwmdLHsCF5s6W/qwkMe+aEO4MW/GzwEPQmvJ3jT0cMDMxNeGA0GLxk7PDQ1H7VDKm82fnh2zoODwdPlz3jphdCUHoyGkx5oUeRdTS+iCQl99BK4QHFHxUoUWfQ89V5v9Fq0FXdOz9ZeMCC9Nk/ckjxVfa7cK1lJTWJ0n4tvje3vcjuotks5k2/Nne/6rJJ8zqsJHQ7Vd6PE6ZEtenJG7I2n1KhQBeYZFU0duJAbECMPRG3jtMAi/2HOwkdW3eGZ5XJ+Z7vECFjOqWevRjWbZOtCCJkXCu2Cvv7NzoUOjj7+7Ha+b1MwXOz7P6IefQwfPr7Qx33WNYNkR5s60nXuANkR9lnXDEIPWc8WNBvu2aJn+8v5JfDkF/V0Ac2nS3e5J/Hkntkj91yWe7S7O/U/OO/9/nzfWC5/+L6d70dfldsrOSEcbiXHs4R9ZeTUGdEXO41E2mX0TD3Rc1+Vue2gq6Mn6S963BX4Z8bF1hGBlLcwPW/GhFJGM4CUCRd5VsrdVDrz8FaoCpY8xcWTOrDOCSnOBWcH8YVmoYHzGDgNWYS+12pdxJe7SP/PVlKQZ1Q0ltVvtVEfXrRSojD3/w4NALvudd9hAN97x7ALQO6ywN90WwUDzqiS903h2CvFiZucZ32xcdvmv6RqMi6zFCtvjuZY4et851lN6g2N221+xAIv8Pb28RQHJhcwG04yOrU1uHxl6au0kLvBYz3dYOTi6S3doPF2irpKNAqe2I96mIIHWJ6Mr20XgF059dcuoD5axWEEoOsRQwDThwAuFECbfvE+Ox5dlxkCSB4CuFAAXbW8vpcRvldRHT4CfAK46WrhKAXQ5quzOxUAdAWAbrpkOEoBuE35E8Eb2Y//XuseVh+CPP1ZR+secvf0dXftkdMn9OjT/w== \ No newline at end of file diff --git a/hexagonal/etc/presentation.html b/hexagonal/etc/presentation.html deleted file mode 100644 index 35aca2bd3edc..000000000000 --- a/hexagonal/etc/presentation.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - Title - - - - - - - - - - diff --git a/proxy/README.md b/proxy/README.md index e0628344a931..71eba2280bf4 100644 --- a/proxy/README.md +++ b/proxy/README.md @@ -129,9 +129,6 @@ are several common situations in which the Proxy pattern is applicable ## Tutorials * [Controlling Access With Proxy Pattern](http://java-design-patterns.com/blog/controlling-access-with-proxy-pattern/) -## Presentations -* [Proxy](https://github.com/iluwatar/java-design-patterns/tree/master/proxy/etc/presentation.html) - ## Real world examples * [java.lang.reflect.Proxy](http://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Proxy.html) diff --git a/proxy/etc/presentation.html b/proxy/etc/presentation.html deleted file mode 100644 index 20061c2c7bee..000000000000 --- a/proxy/etc/presentation.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - Title - - - - - - - - - diff --git a/proxy/etc/proxy-concept.png b/proxy/etc/proxy-concept.png deleted file mode 100644 index dac5d954bc58e9c59ded9f3963618d75a95d1b73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24957 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 diff --git a/proxy/etc/proxy-concept.xml b/proxy/etc/proxy-concept.xml deleted file mode 100644 index 14ade9c090eb..000000000000 --- a/proxy/etc/proxy-concept.xml +++ /dev/null @@ -1,25 +0,0 @@ - -7Vhtb5swEP41kbYPnQJuaPexeVv3YVK1aur60YEL8WowM05K+utnYxswkC6p2rSbmkoNfnx3vpfnLsAATZLiC8fZ6huLgA78YVQM0HTg+x4KPPmlkK1GziwQcxIZoRq4Jg9gwKFB1ySC3BEUjFFBMhcMWZpCKBwMc87uXbElo+6pGY6hA1yHmHbRGxKJlUbPR8MavwQSr+zJ3tDsLHB4F3O2Ts15Ax8ty4/eTrC1ZeTzFY7YfQNCswGacMaEvkqKCVCVW5s2rTffsVv5zSEV+yica4UNpmuwHgdUqo4z5Z3YmowEv9fKpXGCeUzSAbqQu8OskP8lWAam8BPBMr132tgTUIgTTEls9ELpG/DapryKzXd5MmkAOJEGx7S7+qpsLHEIFeyqOBZl/KR9yoJ3EAtcrxe/FKtq7UVbVmJZG1txlTLLZRudtzvQJ6WYwlI0crzLdje8PpdfxgMlW9b4ww15wDz6qKU3TLJuT/d8xzF/A1wQ2Z4XmkXTkmdjw6mpdmjMpNSSlt20JJLlaLxkqTDDxfPNeo4TQtVYugS6AWVVlU4kVAkpGak6YZTx8mTbvWicC87uoLEzLD+KahxHRMbb2Juezrz5qIpEuQ/Fzhb1qsaXAxVYAoJvpYhR8M/NrDCz1A6h+3owVeNk5Q4lMxDNMIwr0/VAkBdmJvTPB+vumxoQVTd+B0yP1awR2fQGbFOuHPcf68g8w+lBPSLddnUquPTl9VvlhYmPfJf4fcz3TnuYHzwH8f23TPwrzortO+X/O8oHnkv5s9ERGY/eIuN336VNqCrE/k3wj99SzAL19zw0G70iy7pPHLNCQBrlnQpJ8EI9y8nVgrLwTsYuIZv8QC/nZVmmQzfjMg98+1Phn0Z2eWv3CiIaW3J1awxoDyDqPBu28iq9ZGsegnuLJCTtQTQeq7rpbybYJpMDxYJs3CP7MmzMXTGiWL+jlAi1aqQ9NUrNB8GWHd/7iyEdXsdQWe8qxP0o8PmoFPCaBKiL/tOoVAQodw5v1SeSxn8nzUGkQd37sR85PEYYlkHq8kXN6wjnK4gMLZp0MZTwOpSoZ0mXSE8sPnov/mHF77s12V35lKVQ9izmomd8NOZFKWLWbULs8RPSJcvz/YToEI/CiKD1hqF643AsSsgi4W1DLFMC+eEO1wzTFvfkm1zWb1y1eP1aG83+AA== \ No newline at end of file From 3b1a28149bba38e25de8f2df1a4ffa949865cf12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=C3=B3ra=20D=C3=A9r?= <6597652+leonorader@users.noreply.github.com> Date: Thu, 31 Oct 2019 18:54:13 +0100 Subject: [PATCH 67/68] decrease number of checkstyle errors in singleton, strategy and visitor patterns #1021 (#1054) * fix checkstlye errors - visitor pattern * fix checkstlye errors - strategy pattern * fix checkstlye errors - singleton pattern --- .../main/java/com/iluwatar/singleton/App.java | 52 +++++++++---------- .../iluwatar/singleton/EnumIvoryTower.java | 6 +-- .../InitializingOnDemandHolderIdiom.java | 22 ++++---- .../ThreadSafeDoubleCheckLocking.java | 28 +++++----- .../ThreadSafeLazyLoadedIvoryTower.java | 8 +-- .../java/com/iluwatar/singleton/AppTest.java | 4 +- .../singleton/EnumIvoryTowerTest.java | 4 +- .../InitializingOnDemandHolderIdiomTest.java | 7 +-- .../iluwatar/singleton/IvoryTowerTest.java | 4 +- .../com/iluwatar/singleton/SingletonTest.java | 30 +++++------ .../ThreadSafeDoubleCheckLockingTest.java | 13 ++--- .../ThreadSafeLazyLoadedIvoryTowerTest.java | 7 +-- .../main/java/com/iluwatar/strategy/App.java | 18 +++---- .../com/iluwatar/strategy/DragonSlayer.java | 2 - .../strategy/DragonSlayingStrategy.java | 2 - .../com/iluwatar/strategy/MeleeStrategy.java | 2 - .../iluwatar/strategy/ProjectileStrategy.java | 2 - .../com/iluwatar/strategy/SpellStrategy.java | 2 - .../java/com/iluwatar/strategy/AppTest.java | 4 +- .../iluwatar/strategy/DragonSlayerTest.java | 10 ++-- .../strategy/DragonSlayingStrategyTest.java | 45 ++++++++-------- .../main/java/com/iluwatar/visitor/App.java | 13 +++-- .../java/com/iluwatar/visitor/Commander.java | 4 +- .../iluwatar/visitor/CommanderVisitor.java | 4 +- .../java/com/iluwatar/visitor/Sergeant.java | 4 +- .../com/iluwatar/visitor/SergeantVisitor.java | 4 +- .../java/com/iluwatar/visitor/Soldier.java | 4 +- .../com/iluwatar/visitor/SoldierVisitor.java | 4 +- .../main/java/com/iluwatar/visitor/Unit.java | 4 +- .../com/iluwatar/visitor/UnitVisitor.java | 2 - .../java/com/iluwatar/visitor/AppTest.java | 4 +- .../com/iluwatar/visitor/CommanderTest.java | 4 +- .../visitor/CommanderVisitorTest.java | 4 +- .../com/iluwatar/visitor/SergeantTest.java | 4 +- .../iluwatar/visitor/SergeantVisitorTest.java | 4 +- .../com/iluwatar/visitor/SoldierTest.java | 4 +- .../iluwatar/visitor/SoldierVisitorTest.java | 4 +- .../java/com/iluwatar/visitor/UnitTest.java | 18 +++---- .../com/iluwatar/visitor/VisitorTest.java | 22 ++++---- 39 files changed, 182 insertions(+), 201 deletions(-) diff --git a/singleton/src/main/java/com/iluwatar/singleton/App.java b/singleton/src/main/java/com/iluwatar/singleton/App.java index b085bc8afaab..604b81184674 100644 --- a/singleton/src/main/java/com/iluwatar/singleton/App.java +++ b/singleton/src/main/java/com/iluwatar/singleton/App.java @@ -27,40 +27,40 @@ import org.slf4j.LoggerFactory; /** - * Singleton pattern ensures that the class can have only one existing instance per Java classloader - * instance and provides global access to it. - *

    - * One of the risks of this pattern is that bugs resulting from setting a singleton up in a + *

    Singleton pattern ensures that the class can have only one existing instance per Java + * classloader instance and provides global access to it.

    + * + *

    One of the risks of this pattern is that bugs resulting from setting a singleton up in a * distributed environment can be tricky to debug, since it will work fine if you debug with a * single classloader. Additionally, these problems can crop up a while after the implementation of * a singleton, since they may start out synchronous and only become async with time, so you it may - * not be clear why you are seeing certain changes in behaviour. - *

    - * There are many ways to implement the Singleton. The first one is the eagerly initialized instance - * in {@link IvoryTower}. Eager initialization implies that the implementation is thread safe. If - * you can afford giving up control of the instantiation moment, then this implementation will suit - * you fine. - *

    - * The other option to implement eagerly initialized Singleton is enum based Singleton. The example - * is found in {@link EnumIvoryTower}. At first glance the code looks short and simple. However, you - * should be aware of the downsides including committing to implementation strategy, extending the - * enum class, serializability and restrictions to coding. These are extensively discussed in Stack - * Overflow: + * not be clear why you are seeing certain changes in behaviour.

    + * + *

    There are many ways to implement the Singleton. The first one is the eagerly initialized + * instance in {@link IvoryTower}. Eager initialization implies that the implementation is thread + * safe. If you can afford giving up control of the instantiation moment, then this implementation + * will suit you fine.

    + * + *

    The other option to implement eagerly initialized Singleton is enum based Singleton. The + * example is found in {@link EnumIvoryTower}. At first glance the code looks short and simple. + * However, you should be aware of the downsides including committing to implementation strategy, + * extending the enum class, serializability and restrictions to coding. These are extensively + * discussed in Stack Overflow: * http://programmers.stackexchange.com/questions/179386/what-are-the-downsides-of-implementing - * -a-singleton-with-javas-enum - *

    - * {@link ThreadSafeLazyLoadedIvoryTower} is a Singleton implementation that is initialized on + * -a-singleton-with-javas-enum

    + * + *

    {@link ThreadSafeLazyLoadedIvoryTower} is a Singleton implementation that is initialized on * demand. The downside is that it is very slow to access since the whole access method is - * synchronized. - *

    - * Another Singleton implementation that is initialized on demand is found in + * synchronized.

    + * + *

    Another Singleton implementation that is initialized on demand is found in * {@link ThreadSafeDoubleCheckLocking}. It is somewhat faster than * {@link ThreadSafeLazyLoadedIvoryTower} since it doesn't synchronize the whole access method but - * only the method internals on specific conditions. - *

    - * Yet another way to implement thread safe lazily initialized Singleton can be found in + * only the method internals on specific conditions.

    + * + *

    Yet another way to implement thread safe lazily initialized Singleton can be found in * {@link InitializingOnDemandHolderIdiom}. However, this implementation requires at least Java 8 - * API level to work. + * API level to work.

    */ public class App { diff --git a/singleton/src/main/java/com/iluwatar/singleton/EnumIvoryTower.java b/singleton/src/main/java/com/iluwatar/singleton/EnumIvoryTower.java index 2028b7d76bd4..753201dba177 100644 --- a/singleton/src/main/java/com/iluwatar/singleton/EnumIvoryTower.java +++ b/singleton/src/main/java/com/iluwatar/singleton/EnumIvoryTower.java @@ -24,10 +24,10 @@ package com.iluwatar.singleton; /** - * Enum based singleton implementation. Effective Java 2nd Edition (Joshua Bloch) p. 18 + *

    Enum based singleton implementation. Effective Java 2nd Edition (Joshua Bloch) p. 18

    * - * This implementation is thread safe, however adding any other method and its thread safety - * is developers responsibility. + *

    This implementation is thread safe, however adding any other method and its thread safety + * is developers responsibility.

    */ public enum EnumIvoryTower { diff --git a/singleton/src/main/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiom.java b/singleton/src/main/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiom.java index dfd4951f7726..faf53a63efd2 100644 --- a/singleton/src/main/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiom.java +++ b/singleton/src/main/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiom.java @@ -24,16 +24,16 @@ package com.iluwatar.singleton; /** - * The Initialize-on-demand-holder idiom is a secure way of creating a lazy initialized singleton - * object in Java. - *

    - * The technique is as lazy as possible and works in all known versions of Java. It takes advantage - * of language guarantees about class initialization, and will therefore work correctly in all - * Java-compliant compilers and virtual machines. - *

    - * The inner class is referenced no earlier (and therefore loaded no earlier by the class loader) than - * the moment that getInstance() is called. Thus, this solution is thread-safe without requiring special - * language constructs (i.e. volatile or synchronized). + *

    The Initialize-on-demand-holder idiom is a secure way of creating a lazy initialized singleton + * object in Java.

    + * + *

    The technique is as lazy as possible and works in all known versions of Java. It takes + * advantage of language guarantees about class initialization, and will therefore work correctly + * in all Java-compliant compilers and virtual machines.

    + * + *

    The inner class is referenced no earlier (and therefore loaded no earlier by the class loader) + * than the moment that getInstance() is called. Thus, this solution is thread-safe without + * requiring special language constructs (i.e. volatile or synchronized).

    * */ public final class InitializingOnDemandHolderIdiom { @@ -44,6 +44,8 @@ public final class InitializingOnDemandHolderIdiom { private InitializingOnDemandHolderIdiom() {} /** + * Sigleton instance. + * * @return Singleton instance */ public static InitializingOnDemandHolderIdiom getInstance() { diff --git a/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLocking.java b/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLocking.java index a1ae935a317d..f5d47380f285 100644 --- a/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLocking.java +++ b/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLocking.java @@ -24,11 +24,11 @@ package com.iluwatar.singleton; /** - * Double check locking - *

    - * http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html - *

    - * Broken under Java 1.4. + *

    Double check locking.

    + * + *

    http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html

    + * + *

    Broken under Java 1.4.

    * * @author mortezaadi@gmail.com */ @@ -60,17 +60,21 @@ public static ThreadSafeDoubleCheckLocking getInstance() { // Joshua Bloch "Effective Java, Second Edition", p. 283-284 var result = instance; - // Check if singleton instance is initialized. If it is initialized then we can return the instance. + // Check if singleton instance is initialized. + // If it is initialized then we can return the instance. if (result == null) { - // It is not initialized but we cannot be sure because some other thread might have initialized it - // in the meanwhile. So to make sure we need to lock on an object to get mutual exclusion. + // It is not initialized but we cannot be sure because some other thread might have + // initialized it in the meanwhile. + // So to make sure we need to lock on an object to get mutual exclusion. synchronized (ThreadSafeDoubleCheckLocking.class) { - // Again assign the instance to local variable to check if it was initialized by some other thread - // while current thread was blocked to enter the locked zone. If it was initialized then we can - // return the previously created instance just like the previous null check. + // Again assign the instance to local variable to check if it was initialized by some + // other thread while current thread was blocked to enter the locked zone. + // If it was initialized then we can return the previously created instance + // just like the previous null check. result = instance; if (result == null) { - // The instance is still not initialized so we can safely (no other thread can enter this zone) + // The instance is still not initialized so we can safely + // (no other thread can enter this zone) // create an instance and make it our singleton instance. instance = result = new ThreadSafeDoubleCheckLocking(); } diff --git a/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTower.java b/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTower.java index 82580acf6896..dd6d05fea433 100644 --- a/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTower.java +++ b/singleton/src/main/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTower.java @@ -24,11 +24,11 @@ package com.iluwatar.singleton; /** - * Thread-safe Singleton class. The instance is lazily initialized and thus needs synchronization - * mechanism. + *

    Thread-safe Singleton class. The instance is lazily initialized and thus needs synchronization + * mechanism.

    * - * Note: if created by reflection then a singleton will not be created but multiple options in the - * same classloader + *

    Note: if created by reflection then a singleton will not be created but multiple options + * in the same classloader

    */ public final class ThreadSafeLazyLoadedIvoryTower { diff --git a/singleton/src/test/java/com/iluwatar/singleton/AppTest.java b/singleton/src/test/java/com/iluwatar/singleton/AppTest.java index 66974e47271a..75043eae0bdc 100644 --- a/singleton/src/test/java/com/iluwatar/singleton/AppTest.java +++ b/singleton/src/test/java/com/iluwatar/singleton/AppTest.java @@ -26,9 +26,7 @@ import org.junit.jupiter.api.Test; /** - * - * Application test - * + * Application test. */ public class AppTest { diff --git a/singleton/src/test/java/com/iluwatar/singleton/EnumIvoryTowerTest.java b/singleton/src/test/java/com/iluwatar/singleton/EnumIvoryTowerTest.java index 49dfae6b0d1b..6a19ca7526bc 100644 --- a/singleton/src/test/java/com/iluwatar/singleton/EnumIvoryTowerTest.java +++ b/singleton/src/test/java/com/iluwatar/singleton/EnumIvoryTowerTest.java @@ -24,14 +24,14 @@ package com.iluwatar.singleton; /** - * Date: 12/29/15 - 19:20 PM + * Date: 12/29/15 - 19:20 PM. * * @author Jeroen Meulemeester */ public class EnumIvoryTowerTest extends SingletonTest { /** - * Create a new singleton test instance using the given 'getInstance' method + * Create a new singleton test instance using the given 'getInstance' method. */ public EnumIvoryTowerTest() { super(() -> EnumIvoryTower.INSTANCE); diff --git a/singleton/src/test/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiomTest.java b/singleton/src/test/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiomTest.java index d7021dac7bdd..e855550129f2 100644 --- a/singleton/src/test/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiomTest.java +++ b/singleton/src/test/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiomTest.java @@ -24,14 +24,15 @@ package com.iluwatar.singleton; /** - * Date: 12/29/15 - 19:22 PM + * Date: 12/29/15 - 19:22 PM. * * @author Jeroen Meulemeester */ -public class InitializingOnDemandHolderIdiomTest extends SingletonTest { +public class InitializingOnDemandHolderIdiomTest + extends SingletonTest { /** - * Create a new singleton test instance using the given 'getInstance' method + * Create a new singleton test instance using the given 'getInstance' method. */ public InitializingOnDemandHolderIdiomTest() { super(InitializingOnDemandHolderIdiom::getInstance); diff --git a/singleton/src/test/java/com/iluwatar/singleton/IvoryTowerTest.java b/singleton/src/test/java/com/iluwatar/singleton/IvoryTowerTest.java index ac5a145cbedc..de4dc3a1814a 100644 --- a/singleton/src/test/java/com/iluwatar/singleton/IvoryTowerTest.java +++ b/singleton/src/test/java/com/iluwatar/singleton/IvoryTowerTest.java @@ -24,14 +24,14 @@ package com.iluwatar.singleton; /** - * Date: 12/29/15 - 19:23 PM + * Date: 12/29/15 - 19:23 PM. * * @author Jeroen Meulemeester */ public class IvoryTowerTest extends SingletonTest { /** - * Create a new singleton test instance using the given 'getInstance' method + * Create a new singleton test instance using the given 'getInstance' method. */ public IvoryTowerTest() { super(IvoryTower::getInstance); diff --git a/singleton/src/test/java/com/iluwatar/singleton/SingletonTest.java b/singleton/src/test/java/com/iluwatar/singleton/SingletonTest.java index e98796aefa5b..4dc1ecdff589 100644 --- a/singleton/src/test/java/com/iluwatar/singleton/SingletonTest.java +++ b/singleton/src/test/java/com/iluwatar/singleton/SingletonTest.java @@ -23,8 +23,10 @@ package com.iluwatar.singleton; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; +import static java.time.Duration.ofMillis; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTimeout; import java.util.ArrayList; import java.util.List; @@ -34,19 +36,17 @@ import java.util.concurrent.Future; import java.util.function.Supplier; -import static java.time.Duration.ofMillis; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertSame; -import static org.junit.jupiter.api.Assertions.assertTimeout; +import org.junit.jupiter.api.Test; /** - * This class provides several test case that test singleton construction. + *

    This class provides several test case that test singleton construction.

    + * + *

    The first proves that multiple calls to the singleton getInstance object are the same when + * called in the SAME thread. The second proves that multiple calls to the singleton getInstance + * object are the same when called in the DIFFERENT thread.

    * - * The first proves that multiple calls to the singleton getInstance object are the same when called - * in the SAME thread. The second proves that multiple calls to the singleton getInstance object are - * the same when called in the DIFFERENT thread. + *

    Date: 12/29/15 - 19:25 PM

    * - * Date: 12/29/15 - 19:25 PM * @param Supplier method generating singletons * @author Jeroen Meulemeester * @author Richard Jones @@ -54,12 +54,12 @@ public abstract class SingletonTest { /** - * The singleton's getInstance method + * The singleton's getInstance method. */ private final Supplier singletonInstanceMethod; /** - * Create a new singleton test instance using the given 'getInstance' method + * Create a new singleton test instance using the given 'getInstance' method. * * @param singletonInstanceMethod The singleton's getInstance method */ @@ -68,7 +68,7 @@ public SingletonTest(final Supplier singletonInstanceMethod) { } /** - * Test the singleton in a non-concurrent setting + * Test the singleton in a non-concurrent setting. */ @Test public void testMultipleCallsReturnTheSameObjectInSameThread() { @@ -83,7 +83,7 @@ public void testMultipleCallsReturnTheSameObjectInSameThread() { } /** - * Test singleton instance in a concurrent setting + * Test singleton instance in a concurrent setting. */ @Test public void testMultipleCallsReturnTheSameObjectInDifferentThreads() throws Exception { diff --git a/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLockingTest.java b/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLockingTest.java index fff516ad3a2e..8babb081e634 100644 --- a/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLockingTest.java +++ b/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeDoubleCheckLockingTest.java @@ -23,34 +23,35 @@ package com.iluwatar.singleton; -import org.junit.Test; - import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; +import org.junit.Test; + /** - * Date: 12/29/15 - 19:26 PM + * Date: 12/29/15 - 19:26 PM. * * @author Jeroen Meulemeester */ public class ThreadSafeDoubleCheckLockingTest extends SingletonTest { /** - * Create a new singleton test instance using the given 'getInstance' method + * Create a new singleton test instance using the given 'getInstance' method. */ public ThreadSafeDoubleCheckLockingTest() { super(ThreadSafeDoubleCheckLocking::getInstance); } /** - * Test creating new instance by refection + * Test creating new instance by refection. */ @Test(expected = InvocationTargetException.class) public void testCreatingNewInstanceByRefection() throws Exception { ThreadSafeDoubleCheckLocking instance1 = ThreadSafeDoubleCheckLocking.getInstance(); Constructor constructor = ThreadSafeDoubleCheckLocking.class.getDeclaredConstructor(); constructor.setAccessible(true); - ThreadSafeDoubleCheckLocking instance2 = (ThreadSafeDoubleCheckLocking) constructor.newInstance(null); + ThreadSafeDoubleCheckLocking instance2 = + (ThreadSafeDoubleCheckLocking) constructor.newInstance(null); } } \ No newline at end of file diff --git a/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTowerTest.java b/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTowerTest.java index 7ca1caf3d695..da04722fc5e0 100644 --- a/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTowerTest.java +++ b/singleton/src/test/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTowerTest.java @@ -24,14 +24,15 @@ package com.iluwatar.singleton; /** - * Date: 12/29/15 - 19:26 PM + * Date: 12/29/15 - 19:26 PM. * * @author Jeroen Meulemeester */ -public class ThreadSafeLazyLoadedIvoryTowerTest extends SingletonTest { +public class ThreadSafeLazyLoadedIvoryTowerTest + extends SingletonTest { /** - * Create a new singleton test instance using the given 'getInstance' method + * Create a new singleton test instance using the given 'getInstance' method. */ public ThreadSafeLazyLoadedIvoryTowerTest() { super(ThreadSafeLazyLoadedIvoryTower::getInstance); diff --git a/strategy/src/main/java/com/iluwatar/strategy/App.java b/strategy/src/main/java/com/iluwatar/strategy/App.java index c6bd3aa3b85e..c526c791787d 100644 --- a/strategy/src/main/java/com/iluwatar/strategy/App.java +++ b/strategy/src/main/java/com/iluwatar/strategy/App.java @@ -28,15 +28,15 @@ /** * - * The Strategy pattern (also known as the policy pattern) is a software design pattern that enables - * an algorithm's behavior to be selected at runtime. - *

    - * Before Java 8 the Strategies needed to be separate classes forcing the developer + *

    The Strategy pattern (also known as the policy pattern) is a software design pattern that + * enables an algorithm's behavior to be selected at runtime.

    + * + *

    Before Java 8 the Strategies needed to be separate classes forcing the developer * to write lots of boilerplate code. With modern Java it is easy to pass behavior - * with method references and lambdas making the code shorter and more readable. - *

    - * In this example ({@link DragonSlayingStrategy}) encapsulates an algorithm. The containing object - * ({@link DragonSlayer}) can alter its behavior by changing its strategy. + * with method references and lambdas making the code shorter and more readable.

    + * + *

    In this example ({@link DragonSlayingStrategy}) encapsulates an algorithm. The containing + * object ({@link DragonSlayer}) can alter its behavior by changing its strategy.

    * */ public class App { @@ -44,7 +44,7 @@ public class App { private static final Logger LOGGER = LoggerFactory.getLogger(App.class); /** - * Program entry point + * Program entry point. * * @param args command line args */ diff --git a/strategy/src/main/java/com/iluwatar/strategy/DragonSlayer.java b/strategy/src/main/java/com/iluwatar/strategy/DragonSlayer.java index 0455edaca98b..f6b91d967aed 100644 --- a/strategy/src/main/java/com/iluwatar/strategy/DragonSlayer.java +++ b/strategy/src/main/java/com/iluwatar/strategy/DragonSlayer.java @@ -24,9 +24,7 @@ package com.iluwatar.strategy; /** - * * DragonSlayer uses different strategies to slay the dragon. - * */ public class DragonSlayer { diff --git a/strategy/src/main/java/com/iluwatar/strategy/DragonSlayingStrategy.java b/strategy/src/main/java/com/iluwatar/strategy/DragonSlayingStrategy.java index eb89523ad402..537b521f4c4d 100644 --- a/strategy/src/main/java/com/iluwatar/strategy/DragonSlayingStrategy.java +++ b/strategy/src/main/java/com/iluwatar/strategy/DragonSlayingStrategy.java @@ -24,9 +24,7 @@ package com.iluwatar.strategy; /** - * * Strategy interface. - * */ @FunctionalInterface public interface DragonSlayingStrategy { diff --git a/strategy/src/main/java/com/iluwatar/strategy/MeleeStrategy.java b/strategy/src/main/java/com/iluwatar/strategy/MeleeStrategy.java index 8cb2f24c12be..12f467b07330 100644 --- a/strategy/src/main/java/com/iluwatar/strategy/MeleeStrategy.java +++ b/strategy/src/main/java/com/iluwatar/strategy/MeleeStrategy.java @@ -27,9 +27,7 @@ import org.slf4j.LoggerFactory; /** - * * Melee strategy. - * */ public class MeleeStrategy implements DragonSlayingStrategy { diff --git a/strategy/src/main/java/com/iluwatar/strategy/ProjectileStrategy.java b/strategy/src/main/java/com/iluwatar/strategy/ProjectileStrategy.java index 4b6031ddfa21..769b0d7d9815 100644 --- a/strategy/src/main/java/com/iluwatar/strategy/ProjectileStrategy.java +++ b/strategy/src/main/java/com/iluwatar/strategy/ProjectileStrategy.java @@ -27,9 +27,7 @@ import org.slf4j.LoggerFactory; /** - * * Projectile strategy. - * */ public class ProjectileStrategy implements DragonSlayingStrategy { diff --git a/strategy/src/main/java/com/iluwatar/strategy/SpellStrategy.java b/strategy/src/main/java/com/iluwatar/strategy/SpellStrategy.java index ffe85c7a21f8..dfa47f72b215 100644 --- a/strategy/src/main/java/com/iluwatar/strategy/SpellStrategy.java +++ b/strategy/src/main/java/com/iluwatar/strategy/SpellStrategy.java @@ -27,9 +27,7 @@ import org.slf4j.LoggerFactory; /** - * * Spell strategy. - * */ public class SpellStrategy implements DragonSlayingStrategy { diff --git a/strategy/src/test/java/com/iluwatar/strategy/AppTest.java b/strategy/src/test/java/com/iluwatar/strategy/AppTest.java index 598085ce4e03..713eecf43bdd 100644 --- a/strategy/src/test/java/com/iluwatar/strategy/AppTest.java +++ b/strategy/src/test/java/com/iluwatar/strategy/AppTest.java @@ -26,9 +26,7 @@ import org.junit.jupiter.api.Test; /** - * - * Application test - * + * Application test. */ public class AppTest { diff --git a/strategy/src/test/java/com/iluwatar/strategy/DragonSlayerTest.java b/strategy/src/test/java/com/iluwatar/strategy/DragonSlayerTest.java index 52dfb3ff19e9..c956126836b4 100644 --- a/strategy/src/test/java/com/iluwatar/strategy/DragonSlayerTest.java +++ b/strategy/src/test/java/com/iluwatar/strategy/DragonSlayerTest.java @@ -23,21 +23,21 @@ package com.iluwatar.strategy; -import org.junit.jupiter.api.Test; - import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; +import org.junit.jupiter.api.Test; + /** - * Date: 12/29/15 - 10:50 PM + * Date: 12/29/15 - 10:50 PM. * * @author Jeroen Meulemeester */ public class DragonSlayerTest { /** - * Verify if the dragon slayer uses the strategy during battle + * Verify if the dragon slayer uses the strategy during battle. */ @Test public void testGoToBattle() { @@ -50,7 +50,7 @@ public void testGoToBattle() { } /** - * Verify if the dragon slayer uses the new strategy during battle after a change of strategy + * Verify if the dragon slayer uses the new strategy during battle after a change of strategy. */ @Test public void testChangeStrategy() { diff --git a/strategy/src/test/java/com/iluwatar/strategy/DragonSlayingStrategyTest.java b/strategy/src/test/java/com/iluwatar/strategy/DragonSlayingStrategyTest.java index 67e4b92cc643..15106cdd9f8d 100644 --- a/strategy/src/test/java/com/iluwatar/strategy/DragonSlayingStrategyTest.java +++ b/strategy/src/test/java/com/iluwatar/strategy/DragonSlayingStrategyTest.java @@ -23,45 +23,48 @@ package com.iluwatar.strategy; +import static org.junit.jupiter.api.Assertions.assertEquals; + import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.AppenderBase; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.MethodSource; -import org.slf4j.LoggerFactory; import java.util.Collection; import java.util.LinkedList; import java.util.List; -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +import org.slf4j.LoggerFactory; /** - * Date: 12/29/15 - 10:58 PM + * Date: 12/29/15 - 10:58 PM. * * @author Jeroen Meulemeester */ public class DragonSlayingStrategyTest { /** + * Assembles test parameters. + * * @return The test parameters for each cycle */ static Collection dataProvider() { - return List.of( - new Object[]{ - new MeleeStrategy(), - "With your Excalibur you sever the dragon's head!" - }, - new Object[]{ - new ProjectileStrategy(), - "You shoot the dragon with the magical crossbow and it falls dead on the ground!" - }, - new Object[]{ - new SpellStrategy(), - "You cast the spell of disintegration and the dragon vaporizes in a pile of dust!" - } + return List.of( + new Object[]{ + new MeleeStrategy(), + "With your Excalibur you sever the dragon's head!" + }, + new Object[]{ + new ProjectileStrategy(), + "You shoot the dragon with the magical crossbow and it falls dead on the ground!" + }, + new Object[]{ + new SpellStrategy(), + "You cast the spell of disintegration and the dragon vaporizes in a pile of dust!" + } ); } @@ -79,7 +82,7 @@ public void tearDown() { /** - * Test if executing the strategy gives the correct response + * Test if executing the strategy gives the correct response. */ @ParameterizedTest @MethodSource("dataProvider") diff --git a/visitor/src/main/java/com/iluwatar/visitor/App.java b/visitor/src/main/java/com/iluwatar/visitor/App.java index 7b33f7e4d6c4..7f0abb0f0f3b 100644 --- a/visitor/src/main/java/com/iluwatar/visitor/App.java +++ b/visitor/src/main/java/com/iluwatar/visitor/App.java @@ -24,19 +24,18 @@ package com.iluwatar.visitor; /** - * - * Visitor pattern defines mechanism to apply operations on nodes in hierarchy. New operations can - * be added without altering the node interface. - *

    - * In this example there is a unit hierarchy beginning from {@link Commander}. This hierarchy is + *

    Visitor pattern defines mechanism to apply operations on nodes in hierarchy. New operations + * can be added without altering the node interface.

    + * + *

    In this example there is a unit hierarchy beginning from {@link Commander}. This hierarchy is * traversed by visitors. {@link SoldierVisitor} applies its operation on {@link Soldier}s, - * {@link SergeantVisitor} on {@link Sergeant}s and so on. + * {@link SergeantVisitor} on {@link Sergeant}s and so on.

    * */ public class App { /** - * Program entry point + * Program entry point. * * @param args command line args */ diff --git a/visitor/src/main/java/com/iluwatar/visitor/Commander.java b/visitor/src/main/java/com/iluwatar/visitor/Commander.java index 938c42f8d0a2..782d0116c650 100644 --- a/visitor/src/main/java/com/iluwatar/visitor/Commander.java +++ b/visitor/src/main/java/com/iluwatar/visitor/Commander.java @@ -24,9 +24,7 @@ package com.iluwatar.visitor; /** - * - * Commander - * + * Commander. */ public class Commander extends Unit { diff --git a/visitor/src/main/java/com/iluwatar/visitor/CommanderVisitor.java b/visitor/src/main/java/com/iluwatar/visitor/CommanderVisitor.java index 19ea5846ecc5..c34c8ed9e36b 100644 --- a/visitor/src/main/java/com/iluwatar/visitor/CommanderVisitor.java +++ b/visitor/src/main/java/com/iluwatar/visitor/CommanderVisitor.java @@ -27,9 +27,7 @@ import org.slf4j.LoggerFactory; /** - * - * CommanderVisitor - * + * CommanderVisitor. */ public class CommanderVisitor implements UnitVisitor { diff --git a/visitor/src/main/java/com/iluwatar/visitor/Sergeant.java b/visitor/src/main/java/com/iluwatar/visitor/Sergeant.java index 95de257729aa..bdc96892ac89 100644 --- a/visitor/src/main/java/com/iluwatar/visitor/Sergeant.java +++ b/visitor/src/main/java/com/iluwatar/visitor/Sergeant.java @@ -24,9 +24,7 @@ package com.iluwatar.visitor; /** - * - * Sergeant - * + * Sergeant. */ public class Sergeant extends Unit { diff --git a/visitor/src/main/java/com/iluwatar/visitor/SergeantVisitor.java b/visitor/src/main/java/com/iluwatar/visitor/SergeantVisitor.java index fdcdce5cad28..59fb405e58a9 100644 --- a/visitor/src/main/java/com/iluwatar/visitor/SergeantVisitor.java +++ b/visitor/src/main/java/com/iluwatar/visitor/SergeantVisitor.java @@ -27,9 +27,7 @@ import org.slf4j.LoggerFactory; /** - * - * SergeantVisitor - * + * SergeantVisitor. */ public class SergeantVisitor implements UnitVisitor { diff --git a/visitor/src/main/java/com/iluwatar/visitor/Soldier.java b/visitor/src/main/java/com/iluwatar/visitor/Soldier.java index 7ab4a26b96be..a2a812416040 100644 --- a/visitor/src/main/java/com/iluwatar/visitor/Soldier.java +++ b/visitor/src/main/java/com/iluwatar/visitor/Soldier.java @@ -24,9 +24,7 @@ package com.iluwatar.visitor; /** - * - * Soldier - * + * Soldier. */ public class Soldier extends Unit { diff --git a/visitor/src/main/java/com/iluwatar/visitor/SoldierVisitor.java b/visitor/src/main/java/com/iluwatar/visitor/SoldierVisitor.java index 6585246a0673..1f19a6458f5e 100644 --- a/visitor/src/main/java/com/iluwatar/visitor/SoldierVisitor.java +++ b/visitor/src/main/java/com/iluwatar/visitor/SoldierVisitor.java @@ -27,9 +27,7 @@ import org.slf4j.LoggerFactory; /** - * - * SoldierVisitor - * + * SoldierVisitor. */ public class SoldierVisitor implements UnitVisitor { diff --git a/visitor/src/main/java/com/iluwatar/visitor/Unit.java b/visitor/src/main/java/com/iluwatar/visitor/Unit.java index 49ddb8a899d4..318e84262f7a 100644 --- a/visitor/src/main/java/com/iluwatar/visitor/Unit.java +++ b/visitor/src/main/java/com/iluwatar/visitor/Unit.java @@ -24,9 +24,7 @@ package com.iluwatar.visitor; /** - * * Interface for the nodes in hierarchy. - * */ public abstract class Unit { @@ -37,7 +35,7 @@ public Unit(Unit... children) { } /** - * Accept visitor + * Accept visitor. */ public void accept(UnitVisitor visitor) { for (var child : children) { diff --git a/visitor/src/main/java/com/iluwatar/visitor/UnitVisitor.java b/visitor/src/main/java/com/iluwatar/visitor/UnitVisitor.java index 086075e5e24d..8300fd1fe381 100644 --- a/visitor/src/main/java/com/iluwatar/visitor/UnitVisitor.java +++ b/visitor/src/main/java/com/iluwatar/visitor/UnitVisitor.java @@ -24,9 +24,7 @@ package com.iluwatar.visitor; /** - * * Visitor interface. - * */ public interface UnitVisitor { diff --git a/visitor/src/test/java/com/iluwatar/visitor/AppTest.java b/visitor/src/test/java/com/iluwatar/visitor/AppTest.java index fb2fdd1233bc..45804a9c6f48 100644 --- a/visitor/src/test/java/com/iluwatar/visitor/AppTest.java +++ b/visitor/src/test/java/com/iluwatar/visitor/AppTest.java @@ -26,9 +26,7 @@ import org.junit.jupiter.api.Test; /** - * - * Application test - * + * Application test. */ public class AppTest { diff --git a/visitor/src/test/java/com/iluwatar/visitor/CommanderTest.java b/visitor/src/test/java/com/iluwatar/visitor/CommanderTest.java index f3cf823fce5d..256a0cdbdd39 100644 --- a/visitor/src/test/java/com/iluwatar/visitor/CommanderTest.java +++ b/visitor/src/test/java/com/iluwatar/visitor/CommanderTest.java @@ -27,14 +27,14 @@ import static org.mockito.Mockito.verify; /** - * Date: 12/30/15 - 19:45 PM + * Date: 12/30/15 - 19:45 PM. * * @author Jeroen Meulemeester */ public class CommanderTest extends UnitTest { /** - * Create a new test instance for the given {@link Commander} + * Create a new test instance for the given {@link Commander}. */ public CommanderTest() { super(Commander::new); diff --git a/visitor/src/test/java/com/iluwatar/visitor/CommanderVisitorTest.java b/visitor/src/test/java/com/iluwatar/visitor/CommanderVisitorTest.java index ed46ac90a592..935baa58d4fb 100644 --- a/visitor/src/test/java/com/iluwatar/visitor/CommanderVisitorTest.java +++ b/visitor/src/test/java/com/iluwatar/visitor/CommanderVisitorTest.java @@ -26,14 +26,14 @@ import java.util.Optional; /** - * Date: 12/30/15 - 18:43 PM + * Date: 12/30/15 - 18:43 PM. * * @author Jeroen Meulemeester */ public class CommanderVisitorTest extends VisitorTest { /** - * Create a new test instance for the given visitor + * Create a new test instance for the given visitor. */ public CommanderVisitorTest() { super( diff --git a/visitor/src/test/java/com/iluwatar/visitor/SergeantTest.java b/visitor/src/test/java/com/iluwatar/visitor/SergeantTest.java index b2e3d5baf68e..fd977f2bc439 100644 --- a/visitor/src/test/java/com/iluwatar/visitor/SergeantTest.java +++ b/visitor/src/test/java/com/iluwatar/visitor/SergeantTest.java @@ -27,14 +27,14 @@ import static org.mockito.Mockito.verify; /** - * Date: 12/30/15 - 19:45 PM + * Date: 12/30/15 - 19:45 PM. * * @author Jeroen Meulemeester */ public class SergeantTest extends UnitTest { /** - * Create a new test instance for the given {@link Sergeant} + * Create a new test instance for the given {@link Sergeant}. */ public SergeantTest() { super(Sergeant::new); diff --git a/visitor/src/test/java/com/iluwatar/visitor/SergeantVisitorTest.java b/visitor/src/test/java/com/iluwatar/visitor/SergeantVisitorTest.java index f7595b429003..05eae49f22f9 100644 --- a/visitor/src/test/java/com/iluwatar/visitor/SergeantVisitorTest.java +++ b/visitor/src/test/java/com/iluwatar/visitor/SergeantVisitorTest.java @@ -26,14 +26,14 @@ import java.util.Optional; /** - * Date: 12/30/15 - 18:36 PM + * Date: 12/30/15 - 18:36 PM. * * @author Jeroen Meulemeester */ public class SergeantVisitorTest extends VisitorTest { /** - * Create a new test instance for the given visitor + * Create a new test instance for the given visitor. */ public SergeantVisitorTest() { super( diff --git a/visitor/src/test/java/com/iluwatar/visitor/SoldierTest.java b/visitor/src/test/java/com/iluwatar/visitor/SoldierTest.java index 713b190e2d5e..3d2c7698f439 100644 --- a/visitor/src/test/java/com/iluwatar/visitor/SoldierTest.java +++ b/visitor/src/test/java/com/iluwatar/visitor/SoldierTest.java @@ -27,14 +27,14 @@ import static org.mockito.Mockito.verify; /** - * Date: 12/30/15 - 19:45 PM + * Date: 12/30/15 - 19:45 PM. * * @author Jeroen Meulemeester */ public class SoldierTest extends UnitTest { /** - * Create a new test instance for the given {@link Soldier} + * Create a new test instance for the given {@link Soldier}. */ public SoldierTest() { super(Soldier::new); diff --git a/visitor/src/test/java/com/iluwatar/visitor/SoldierVisitorTest.java b/visitor/src/test/java/com/iluwatar/visitor/SoldierVisitorTest.java index e5572f1ee8c9..653d814c5878 100644 --- a/visitor/src/test/java/com/iluwatar/visitor/SoldierVisitorTest.java +++ b/visitor/src/test/java/com/iluwatar/visitor/SoldierVisitorTest.java @@ -26,14 +26,14 @@ import java.util.Optional; /** - * Date: 12/30/15 - 18:59 PM + * Date: 12/30/15 - 18:59 PM. * * @author Jeroen Meulemeester */ public class SoldierVisitorTest extends VisitorTest { /** - * Create a new test instance for the given visitor + * Create a new test instance for the given visitor. */ public SoldierVisitorTest() { super( diff --git a/visitor/src/test/java/com/iluwatar/visitor/UnitTest.java b/visitor/src/test/java/com/iluwatar/visitor/UnitTest.java index 4441570d4dfb..7385ea5a7bd3 100644 --- a/visitor/src/test/java/com/iluwatar/visitor/UnitTest.java +++ b/visitor/src/test/java/com/iluwatar/visitor/UnitTest.java @@ -23,18 +23,18 @@ package com.iluwatar.visitor; -import org.junit.jupiter.api.Test; - -import java.util.Arrays; -import java.util.function.Function; - import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; +import java.util.Arrays; +import java.util.function.Function; + +import org.junit.jupiter.api.Test; + /** - * Date: 12/30/15 - 18:59 PM + * Date: 12/30/15 - 18:59 PM. * Test related to Units * @param Type of Unit * @author Jeroen Meulemeester @@ -42,12 +42,12 @@ public abstract class UnitTest { /** - * Factory to create new instances of the tested unit + * Factory to create new instances of the tested unit. */ private final Function factory; /** - * Create a new test instance for the given unit type {@link U} + * Create a new test instance for the given unit type {@link U}. * * @param factory Factory to create new instances of the tested unit */ @@ -74,7 +74,7 @@ public void testAccept() { } /** - * Verify if the correct visit method is called on the mock, depending on the tested instance + * Verify if the correct visit method is called on the mock, depending on the tested instance. * * @param unit The tested unit instance * @param mockedVisitor The mocked {@link UnitVisitor} who should have gotten a visit by the unit diff --git a/visitor/src/test/java/com/iluwatar/visitor/VisitorTest.java b/visitor/src/test/java/com/iluwatar/visitor/VisitorTest.java index c50c3822d284..3c458f6f4c85 100644 --- a/visitor/src/test/java/com/iluwatar/visitor/VisitorTest.java +++ b/visitor/src/test/java/com/iluwatar/visitor/VisitorTest.java @@ -23,6 +23,8 @@ package com.iluwatar.visitor; +import static org.junit.jupiter.api.Assertions.assertEquals; + import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.AppenderBase; @@ -35,10 +37,8 @@ import org.junit.jupiter.api.Test; import org.slf4j.LoggerFactory; -import static org.junit.jupiter.api.Assertions.assertEquals; - /** - * Date: 12/30/15 - 18:59 PM + * Date: 12/30/15 - 18:59 PM. * Test case for Visitor Pattern * @param Type of UnitVisitor * @author Jeroen Meulemeester @@ -58,34 +58,36 @@ public void tearDown() { } /** - * The tested visitor instance + * The tested visitor instance. */ private final V visitor; /** - * The optional expected response when being visited by a commander + * The optional expected response when being visited by a commander. */ private final Optional commanderResponse; /** - * The optional expected response when being visited by a sergeant + * The optional expected response when being visited by a sergeant. */ private final Optional sergeantResponse; /** - * The optional expected response when being visited by a soldier + * The optional expected response when being visited by a soldier. */ private final Optional soldierResponse; /** - * Create a new test instance for the given visitor + * Create a new test instance for the given visitor. * * @param commanderResponse The optional expected response when being visited by a commander * @param sergeantResponse The optional expected response when being visited by a sergeant * @param soldierResponse The optional expected response when being visited by a soldier */ - public VisitorTest(final V visitor, final Optional commanderResponse, - final Optional sergeantResponse, final Optional soldierResponse) { + public VisitorTest(final V visitor, + final Optional commanderResponse, + final Optional sergeantResponse, + final Optional soldierResponse) { this.visitor = visitor; this.commanderResponse = commanderResponse; From 55b0341c8dc28ab84412d535bee9ecbb461fa081 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Thu, 31 Oct 2019 20:01:39 +0200 Subject: [PATCH 68/68] Fix remaining Checkstyle errors for Singleton --- .../iluwatar/singleton/InitializingOnDemandHolderIdiom.java | 3 ++- singleton/src/main/java/com/iluwatar/singleton/IvoryTower.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/singleton/src/main/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiom.java b/singleton/src/main/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiom.java index faf53a63efd2..205a7bd80bfc 100644 --- a/singleton/src/main/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiom.java +++ b/singleton/src/main/java/com/iluwatar/singleton/InitializingOnDemandHolderIdiom.java @@ -41,7 +41,8 @@ public final class InitializingOnDemandHolderIdiom { /** * Private constructor. */ - private InitializingOnDemandHolderIdiom() {} + private InitializingOnDemandHolderIdiom() { + } /** * Sigleton instance. diff --git a/singleton/src/main/java/com/iluwatar/singleton/IvoryTower.java b/singleton/src/main/java/com/iluwatar/singleton/IvoryTower.java index c8d551404c8b..0bc3af28b2f4 100644 --- a/singleton/src/main/java/com/iluwatar/singleton/IvoryTower.java +++ b/singleton/src/main/java/com/iluwatar/singleton/IvoryTower.java @@ -31,7 +31,8 @@ public final class IvoryTower { /** * Private constructor so nobody can instantiate the class. */ - private IvoryTower() {} + private IvoryTower() { + } /** * Static to class instance of the class.