From 4f77aa59cd6acbf3c82f771d73d4c96165f542e3 Mon Sep 17 00:00:00 2001 From: amit2103 Date: Sun, 28 Jul 2019 10:50:15 +0530 Subject: [PATCH 01/39] [BAEL-15393] - Initial commit to change to boot 2 --- spring-mvc-java/pom.xml | 37 +++++++++++-------- .../com/baeldung/SpringMVCApplication.java | 11 ++++++ .../baeldung/spring/web/config/WebConfig.java | 13 ++----- .../src/main/resources/application.properties | 21 +++++++++++ 4 files changed, 57 insertions(+), 25 deletions(-) create mode 100644 spring-mvc-java/src/main/java/com/baeldung/SpringMVCApplication.java create mode 100644 spring-mvc-java/src/main/resources/application.properties diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml index cb16e91bc4..da9bd04d3d 100644 --- a/spring-mvc-java/pom.xml +++ b/spring-mvc-java/pom.xml @@ -8,17 +8,24 @@ war - parent-spring-5 + parent-boot-2 com.baeldung 0.0.1-SNAPSHOT - ../parent-spring-5 + ../parent-boot-2 - org.springframework - spring-webmvc - ${spring.version} + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-tomcat + + + org.springframework.boot + spring-boot-starter-jdbc javax.servlet @@ -106,9 +113,8 @@ 2.4.0 - org.springframework - spring-test - ${spring.version} + org.springframework.boot + spring-boot-starter-test test @@ -134,16 +140,15 @@ 2.8.5 - org.springframework - spring-websocket - ${spring.version} + org.springframework.boot + spring-boot-starter-websocket - - org.springframework - spring-messaging - ${spring.version} - + + + + + org.glassfish javax.el diff --git a/spring-mvc-java/src/main/java/com/baeldung/SpringMVCApplication.java b/spring-mvc-java/src/main/java/com/baeldung/SpringMVCApplication.java new file mode 100644 index 0000000000..ee263aaab2 --- /dev/null +++ b/spring-mvc-java/src/main/java/com/baeldung/SpringMVCApplication.java @@ -0,0 +1,11 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringMVCApplication { + public static void main(String[] args) { + SpringApplication.run(SpringMVCApplication.class, args); + } +} \ No newline at end of file diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java index 44fef92917..7aa9d6c5b5 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java +++ b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java @@ -3,9 +3,6 @@ package com.baeldung.spring.web.config; import java.util.ArrayList; import java.util.List; -import javax.servlet.ServletContext; - -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.MessageSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; @@ -26,8 +23,9 @@ import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.JstlView; import org.springframework.web.util.UrlPathHelper; import org.thymeleaf.spring4.SpringTemplateEngine; +import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver; import org.thymeleaf.spring4.view.ThymeleafViewResolver; -import org.thymeleaf.templateresolver.ServletContextTemplateResolver; +import org.thymeleaf.templateresolver.ITemplateResolver; import com.baeldung.excel.ExcelPOIHelper; @@ -35,9 +33,6 @@ import com.baeldung.excel.ExcelPOIHelper; @Configuration @ComponentScan(basePackages = { "com.baeldung.web.controller" }) public class WebConfig implements WebMvcConfigurer { - - @Autowired - private ServletContext ctx; @Override public void addViewControllers(final ViewControllerRegistry registry) { @@ -64,8 +59,8 @@ public class WebConfig implements WebMvcConfigurer { @Bean @Description("Thymeleaf template resolver serving HTML 5") - public ServletContextTemplateResolver templateResolver() { - final ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(ctx); + public ITemplateResolver templateResolver() { + final SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver(); templateResolver.setPrefix("/WEB-INF/templates/"); templateResolver.setSuffix(".html"); templateResolver.setTemplateMode("HTML5"); diff --git a/spring-mvc-java/src/main/resources/application.properties b/spring-mvc-java/src/main/resources/application.properties new file mode 100644 index 0000000000..4f618c96a9 --- /dev/null +++ b/spring-mvc-java/src/main/resources/application.properties @@ -0,0 +1,21 @@ +spring.servlet.multipart.max-file-size=10MB +spring.servlet.multipart.max-request-size=10MB +spring.http.multipart.enabled=true +spring.servlet.multipart.location=${java.io.tmpdir} + +logging.level.org.springframework=DEBUG +logging.level.com.baeldung=DEBUG + +#output to a temp_folder/file +logging.file=${java.io.tmpdir}/application.log + +# Logging pattern for the console +logging.pattern.console= %d{yyyy-MM-dd HH:mm:ss} - %msg%n + +# Logging pattern for file +logging.pattern.file= %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg% +spring.http.encoding.charset=UTF-8 +# Enable http encoding support. +spring.http.encoding.enabled=true +# Force the encoding to the configured charset on HTTP requests and responses. +spring.http.encoding.force=true \ No newline at end of file From 0b7ceebb66b6b00f83619923881d1c5ef687aca4 Mon Sep 17 00:00:00 2001 From: "anilkivilcim.eray" Date: Sun, 18 Aug 2019 20:02:31 +0300 Subject: [PATCH 02/39] BAEL-3097 init for mapstruct custom mapping method --- .../main/java/com/baeldung/dto/UrlDTO.java | 11 ++++++ .../java/com/baeldung/entity/UrlObject.java | 11 ++++++ .../com/baeldung/mapper/SuffixRemover.java | 13 +++++++ .../java/com/baeldung/mapper/UrlMapper.java | 34 +++++++++++++++++++ .../com/baeldung/mapper/UrlMapperTest.java | 22 ++++++++++++ 5 files changed, 91 insertions(+) create mode 100644 mapstruct/src/main/java/com/baeldung/dto/UrlDTO.java create mode 100644 mapstruct/src/main/java/com/baeldung/entity/UrlObject.java create mode 100644 mapstruct/src/main/java/com/baeldung/mapper/SuffixRemover.java create mode 100644 mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java create mode 100644 mapstruct/src/test/java/com/baeldung/mapper/UrlMapperTest.java diff --git a/mapstruct/src/main/java/com/baeldung/dto/UrlDTO.java b/mapstruct/src/main/java/com/baeldung/dto/UrlDTO.java new file mode 100644 index 0000000000..405473bbd1 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/dto/UrlDTO.java @@ -0,0 +1,11 @@ +package com.baeldung.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class UrlDTO { + private String url; + private String subUrl; +} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/entity/UrlObject.java b/mapstruct/src/main/java/com/baeldung/entity/UrlObject.java new file mode 100644 index 0000000000..ceded9e18e --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/entity/UrlObject.java @@ -0,0 +1,11 @@ +package com.baeldung.entity; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class UrlObject { + private String url; + private String subUrl; +} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/mapper/SuffixRemover.java b/mapstruct/src/main/java/com/baeldung/mapper/SuffixRemover.java new file mode 100644 index 0000000000..3db963b0e3 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapper/SuffixRemover.java @@ -0,0 +1,13 @@ +package com.baeldung.mapper; + +import org.mapstruct.Qualifier; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Qualifier +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.CLASS) +public @interface SuffixRemover {} diff --git a/mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java b/mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java new file mode 100644 index 0000000000..b92c134bde --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java @@ -0,0 +1,34 @@ +package com.baeldung.mapper; + +import com.baeldung.dto.UrlDTO; +import com.baeldung.entity.UrlObject; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; +import org.mapstruct.factory.Mappers; + +import java.net.URI; +import java.net.URISyntaxException; + +@Mapper +public interface UrlMapper { + + UrlMapper INSTANCE = Mappers.getMapper(UrlMapper.class); + + + @Mapping(source = "subUrl", target = "subUrl", qualifiedByName = "protocolRemover") + @Mapping(source = "url", target = "url", qualifiedBy = SuffixRemover.class) + public UrlObject urlObjectDomainMapper(UrlDTO urlDTO); + + @Named("protocolRemover") + public static String protocolRemoverWithCustomMethod(String domain) throws URISyntaxException { + URI uri = new URI(domain); + return uri.getHost(); + } + + @SuffixRemover + public static String protocolRemoverMethod(String domain) throws URISyntaxException { + URI uri = new URI(domain); + return uri.getHost(); + } +} \ No newline at end of file diff --git a/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperTest.java b/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperTest.java new file mode 100644 index 0000000000..1bb0ebcf0c --- /dev/null +++ b/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperTest.java @@ -0,0 +1,22 @@ +package com.baeldung.mapper; + +import com.baeldung.dto.UrlDTO; +import com.baeldung.entity.UrlObject; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class UrlMapperTest { + + @Test + public void givenDomains_whenCallDomainMapper_thenReturnDomainsWithoutProtocols() { + UrlDTO dto = new UrlDTO(); + dto.setUrl("http://www.baeldung.com"); + dto.setSubUrl("https://www.baeldung.com"); + + UrlObject urlObject = UrlMapper.INSTANCE.urlObjectDomainMapper(dto); + + assertEquals(urlObject.getUrl(), "www.baeldung.com"); + assertEquals(urlObject.getSubUrl(), "www.baeldung.com"); + } +} \ No newline at end of file From 25e11c23a1d44b99906f65d01344bee47ceeca5a Mon Sep 17 00:00:00 2001 From: "anilkivilcim.eray" Date: Wed, 21 Aug 2019 19:55:07 +0300 Subject: [PATCH 03/39] BAEL-3097 renaming test class to suffix "UnitTest" --- .../mapper/{UrlMapperTest.java => UrlMapperUnitTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename mapstruct/src/test/java/com/baeldung/mapper/{UrlMapperTest.java => UrlMapperUnitTest.java} (94%) diff --git a/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperTest.java b/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperUnitTest.java similarity index 94% rename from mapstruct/src/test/java/com/baeldung/mapper/UrlMapperTest.java rename to mapstruct/src/test/java/com/baeldung/mapper/UrlMapperUnitTest.java index 1bb0ebcf0c..455bfe408f 100644 --- a/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperTest.java +++ b/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperUnitTest.java @@ -6,7 +6,7 @@ import org.junit.Test; import static org.junit.Assert.assertEquals; -public class UrlMapperTest { +public class UrlMapperUnitTest { @Test public void givenDomains_whenCallDomainMapper_thenReturnDomainsWithoutProtocols() { From 91d071c43e5e8ddc232c3a61c27743549b0fd2f6 Mon Sep 17 00:00:00 2001 From: "anilkivilcim.eray" Date: Sat, 24 Aug 2019 00:30:29 +0300 Subject: [PATCH 04/39] BAEL-3097 pr fix --- .../main/java/com/baeldung/dto/UrlDTO.java | 3 +-- .../java/com/baeldung/entity/UrlObject.java | 3 +-- ...uffixRemover.java => ProtocolRemover.java} | 2 +- .../java/com/baeldung/mapper/UrlMapper.java | 25 +++++++++++-------- .../baeldung/mapper/UrlMapperUnitTest.java | 20 ++++++++++----- 5 files changed, 32 insertions(+), 21 deletions(-) rename mapstruct/src/main/java/com/baeldung/mapper/{SuffixRemover.java => ProtocolRemover.java} (88%) diff --git a/mapstruct/src/main/java/com/baeldung/dto/UrlDTO.java b/mapstruct/src/main/java/com/baeldung/dto/UrlDTO.java index 405473bbd1..e0d7fd58e9 100644 --- a/mapstruct/src/main/java/com/baeldung/dto/UrlDTO.java +++ b/mapstruct/src/main/java/com/baeldung/dto/UrlDTO.java @@ -6,6 +6,5 @@ import lombok.Setter; @Getter @Setter public class UrlDTO { - private String url; - private String subUrl; + private String address; } \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/entity/UrlObject.java b/mapstruct/src/main/java/com/baeldung/entity/UrlObject.java index ceded9e18e..9d1f4668c2 100644 --- a/mapstruct/src/main/java/com/baeldung/entity/UrlObject.java +++ b/mapstruct/src/main/java/com/baeldung/entity/UrlObject.java @@ -6,6 +6,5 @@ import lombok.Setter; @Getter @Setter public class UrlObject { - private String url; - private String subUrl; + private String address; } \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/mapper/SuffixRemover.java b/mapstruct/src/main/java/com/baeldung/mapper/ProtocolRemover.java similarity index 88% rename from mapstruct/src/main/java/com/baeldung/mapper/SuffixRemover.java rename to mapstruct/src/main/java/com/baeldung/mapper/ProtocolRemover.java index 3db963b0e3..4c22ffd9ee 100644 --- a/mapstruct/src/main/java/com/baeldung/mapper/SuffixRemover.java +++ b/mapstruct/src/main/java/com/baeldung/mapper/ProtocolRemover.java @@ -10,4 +10,4 @@ import java.lang.annotation.Target; @Qualifier @Target(ElementType.METHOD) @Retention(RetentionPolicy.CLASS) -public @interface SuffixRemover {} +public @interface ProtocolRemover {} diff --git a/mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java b/mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java index b92c134bde..22083fabb2 100644 --- a/mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java +++ b/mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java @@ -9,6 +9,7 @@ import org.mapstruct.factory.Mappers; import java.net.URI; import java.net.URISyntaxException; +import java.net.URL; @Mapper public interface UrlMapper { @@ -16,19 +17,23 @@ public interface UrlMapper { UrlMapper INSTANCE = Mappers.getMapper(UrlMapper.class); - @Mapping(source = "subUrl", target = "subUrl", qualifiedByName = "protocolRemover") - @Mapping(source = "url", target = "url", qualifiedBy = SuffixRemover.class) - public UrlObject urlObjectDomainMapper(UrlDTO urlDTO); + @Mapping(source = "address", target = "address", qualifiedByName = "protocolRemover") + public UrlObject urlObjectNamedMapper(UrlDTO urlDTO); + + @Mapping(source = "address", target = "address", qualifiedBy = ProtocolRemover.class) + public UrlObject urlObjectAnnotatedMapper(UrlDTO urlDTO); @Named("protocolRemover") - public static String protocolRemoverWithCustomMethod(String domain) throws URISyntaxException { - URI uri = new URI(domain); - return uri.getHost(); + public static String protocolRemoverWithCustomMethod(String address) throws URISyntaxException { + URI uri = new URI(address); + + return uri.getHost() + uri.getPath(); } - @SuffixRemover - public static String protocolRemoverMethod(String domain) throws URISyntaxException { - URI uri = new URI(domain); - return uri.getHost(); + @ProtocolRemover + public static String protocolRemoverMethod(String address) throws URISyntaxException { + URI uri = new URI(address); + + return uri.getHost() + uri.getPath(); } } \ No newline at end of file diff --git a/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperUnitTest.java index 455bfe408f..567d0aefbc 100644 --- a/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperUnitTest.java +++ b/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperUnitTest.java @@ -9,14 +9,22 @@ import static org.junit.Assert.assertEquals; public class UrlMapperUnitTest { @Test - public void givenDomains_whenCallDomainMapper_thenReturnDomainsWithoutProtocols() { + public void givenDomain_whenCallNamedMapper_thenReturnDomainWithoutProtocol() { UrlDTO dto = new UrlDTO(); - dto.setUrl("http://www.baeldung.com"); - dto.setSubUrl("https://www.baeldung.com"); + dto.setAddress("http://www.baeldung.com/mapstruct"); - UrlObject urlObject = UrlMapper.INSTANCE.urlObjectDomainMapper(dto); + UrlObject urlObject = UrlMapper.INSTANCE.urlObjectNamedMapper(dto); - assertEquals(urlObject.getUrl(), "www.baeldung.com"); - assertEquals(urlObject.getSubUrl(), "www.baeldung.com"); + assertEquals(urlObject.getAddress(), "www.baeldung.com/mapstruct"); + } + + @Test + public void givenAddress_whenCallAnnotatedMapper_thenReturnDomainWithoutProtocol() { + UrlDTO dto = new UrlDTO(); + dto.setAddress("http://www.baeldung.com/customMappers"); + + UrlObject urlObject = UrlMapper.INSTANCE.urlObjectAnnotatedMapper(dto); + + assertEquals(urlObject.getAddress(), "www.baeldung.com/customMappers"); } } \ No newline at end of file From d93e68d4df3ec75dc23fb1648cd8fdf5c9409cef Mon Sep 17 00:00:00 2001 From: "anilkivilcim.eray" Date: Sun, 1 Sep 2019 20:46:52 +0300 Subject: [PATCH 05/39] BAEL-3097 new example added --- ...TO.java => UserBodyImperialValuesDTO.java} | 5 +- .../{UrlObject.java => UserBodyValues.java} | 5 +- ...emover.java => PoundToKilogramMapper.java} | 2 +- .../java/com/baeldung/mapper/UrlMapper.java | 39 --------------- .../baeldung/mapper/UserBodyValuesMapper.java | 28 +++++++++++ .../baeldung/mapper/UrlMapperUnitTest.java | 30 ------------ .../mapper/UserBodyValuesMapperUnitTest.java | 47 +++++++++++++++++++ 7 files changed, 82 insertions(+), 74 deletions(-) rename mapstruct/src/main/java/com/baeldung/dto/{UrlDTO.java => UserBodyImperialValuesDTO.java} (50%) rename mapstruct/src/main/java/com/baeldung/entity/{UrlObject.java => UserBodyValues.java} (50%) rename mapstruct/src/main/java/com/baeldung/mapper/{ProtocolRemover.java => PoundToKilogramMapper.java} (87%) delete mode 100644 mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java create mode 100644 mapstruct/src/main/java/com/baeldung/mapper/UserBodyValuesMapper.java delete mode 100644 mapstruct/src/test/java/com/baeldung/mapper/UrlMapperUnitTest.java create mode 100644 mapstruct/src/test/java/com/baeldung/mapper/UserBodyValuesMapperUnitTest.java diff --git a/mapstruct/src/main/java/com/baeldung/dto/UrlDTO.java b/mapstruct/src/main/java/com/baeldung/dto/UserBodyImperialValuesDTO.java similarity index 50% rename from mapstruct/src/main/java/com/baeldung/dto/UrlDTO.java rename to mapstruct/src/main/java/com/baeldung/dto/UserBodyImperialValuesDTO.java index e0d7fd58e9..9817b76bc8 100644 --- a/mapstruct/src/main/java/com/baeldung/dto/UrlDTO.java +++ b/mapstruct/src/main/java/com/baeldung/dto/UserBodyImperialValuesDTO.java @@ -5,6 +5,7 @@ import lombok.Setter; @Getter @Setter -public class UrlDTO { - private String address; +public class UserBodyImperialValuesDTO { + private int inch; + private int pound; } \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/entity/UrlObject.java b/mapstruct/src/main/java/com/baeldung/entity/UserBodyValues.java similarity index 50% rename from mapstruct/src/main/java/com/baeldung/entity/UrlObject.java rename to mapstruct/src/main/java/com/baeldung/entity/UserBodyValues.java index 9d1f4668c2..b23463cb93 100644 --- a/mapstruct/src/main/java/com/baeldung/entity/UrlObject.java +++ b/mapstruct/src/main/java/com/baeldung/entity/UserBodyValues.java @@ -5,6 +5,7 @@ import lombok.Setter; @Getter @Setter -public class UrlObject { - private String address; +public class UserBodyValues { + private double kilogram; + private double centimeter; } \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/mapper/ProtocolRemover.java b/mapstruct/src/main/java/com/baeldung/mapper/PoundToKilogramMapper.java similarity index 87% rename from mapstruct/src/main/java/com/baeldung/mapper/ProtocolRemover.java rename to mapstruct/src/main/java/com/baeldung/mapper/PoundToKilogramMapper.java index 4c22ffd9ee..e75022a5e8 100644 --- a/mapstruct/src/main/java/com/baeldung/mapper/ProtocolRemover.java +++ b/mapstruct/src/main/java/com/baeldung/mapper/PoundToKilogramMapper.java @@ -10,4 +10,4 @@ import java.lang.annotation.Target; @Qualifier @Target(ElementType.METHOD) @Retention(RetentionPolicy.CLASS) -public @interface ProtocolRemover {} +public @interface PoundToKilogramMapper {} diff --git a/mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java b/mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java deleted file mode 100644 index 22083fabb2..0000000000 --- a/mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.baeldung.mapper; - -import com.baeldung.dto.UrlDTO; -import com.baeldung.entity.UrlObject; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.Named; -import org.mapstruct.factory.Mappers; - -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; - -@Mapper -public interface UrlMapper { - - UrlMapper INSTANCE = Mappers.getMapper(UrlMapper.class); - - - @Mapping(source = "address", target = "address", qualifiedByName = "protocolRemover") - public UrlObject urlObjectNamedMapper(UrlDTO urlDTO); - - @Mapping(source = "address", target = "address", qualifiedBy = ProtocolRemover.class) - public UrlObject urlObjectAnnotatedMapper(UrlDTO urlDTO); - - @Named("protocolRemover") - public static String protocolRemoverWithCustomMethod(String address) throws URISyntaxException { - URI uri = new URI(address); - - return uri.getHost() + uri.getPath(); - } - - @ProtocolRemover - public static String protocolRemoverMethod(String address) throws URISyntaxException { - URI uri = new URI(address); - - return uri.getHost() + uri.getPath(); - } -} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/mapper/UserBodyValuesMapper.java b/mapstruct/src/main/java/com/baeldung/mapper/UserBodyValuesMapper.java new file mode 100644 index 0000000000..4c992f91e1 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapper/UserBodyValuesMapper.java @@ -0,0 +1,28 @@ +package com.baeldung.mapper; + +import com.baeldung.dto.UserBodyImperialValuesDTO; +import com.baeldung.entity.UserBodyValues; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface UserBodyValuesMapper { + + UserBodyValuesMapper INSTANCE = Mappers.getMapper(UserBodyValuesMapper.class); + + @Mapping(source = "pound", target = "kilogram", qualifiedBy = PoundToKilogramMapper.class) + @Mapping(source = "inch", target = "centimeter", qualifiedByName = "inchToCentimeter") + public UserBodyValues userBodyValuesMapper(UserBodyImperialValuesDTO dto); + + @Named("inchToCentimeter") + public static double inchToCentimeter(int inch) { + return inch * 2.54; + } + + @PoundToKilogramMapper + public static double poundToKilogram(int pound) { + return pound * 0.4535; + } +} \ No newline at end of file diff --git a/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperUnitTest.java deleted file mode 100644 index 567d0aefbc..0000000000 --- a/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperUnitTest.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.mapper; - -import com.baeldung.dto.UrlDTO; -import com.baeldung.entity.UrlObject; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class UrlMapperUnitTest { - - @Test - public void givenDomain_whenCallNamedMapper_thenReturnDomainWithoutProtocol() { - UrlDTO dto = new UrlDTO(); - dto.setAddress("http://www.baeldung.com/mapstruct"); - - UrlObject urlObject = UrlMapper.INSTANCE.urlObjectNamedMapper(dto); - - assertEquals(urlObject.getAddress(), "www.baeldung.com/mapstruct"); - } - - @Test - public void givenAddress_whenCallAnnotatedMapper_thenReturnDomainWithoutProtocol() { - UrlDTO dto = new UrlDTO(); - dto.setAddress("http://www.baeldung.com/customMappers"); - - UrlObject urlObject = UrlMapper.INSTANCE.urlObjectAnnotatedMapper(dto); - - assertEquals(urlObject.getAddress(), "www.baeldung.com/customMappers"); - } -} \ No newline at end of file diff --git a/mapstruct/src/test/java/com/baeldung/mapper/UserBodyValuesMapperUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapper/UserBodyValuesMapperUnitTest.java new file mode 100644 index 0000000000..a875d6faf7 --- /dev/null +++ b/mapstruct/src/test/java/com/baeldung/mapper/UserBodyValuesMapperUnitTest.java @@ -0,0 +1,47 @@ +package com.baeldung.mapper; + +import com.baeldung.dto.UserBodyImperialValuesDTO; +import com.baeldung.entity.UserBodyValues; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + + +public class UserBodyValuesMapperUnitTest { + + @Test + public void givenUserBodyImperialValuesDTOToUserBodyValuesObject_whenMaps_thenCorrect() { + UserBodyImperialValuesDTO dto = new UserBodyImperialValuesDTO(); + dto.setInch(10); + dto.setPound(100); + + UserBodyValues obj = UserBodyValuesMapper.INSTANCE.userBodyValuesMapper(dto); + + assertNotNull(obj); + assertEquals(25.4, obj.getCentimeter(), 0); + assertEquals(45.35, obj.getKilogram(), 0); + } + + @Test + public void givenUserBodyImperialValuesDTOWithInchToUserBodyValuesObject_whenMaps_thenCorrect() { + UserBodyImperialValuesDTO dto = new UserBodyImperialValuesDTO(); + dto.setInch(10); + + UserBodyValues obj = UserBodyValuesMapper.INSTANCE.userBodyValuesMapper(dto); + + assertNotNull(obj); + assertEquals(25.4, obj.getCentimeter(), 0); + } + + @Test + public void givenUserBodyImperialValuesDTOWithPoundToUserBodyValuesObject_whenMaps_thenCorrect() { + UserBodyImperialValuesDTO dto = new UserBodyImperialValuesDTO(); + dto.setPound(100); + + UserBodyValues obj = UserBodyValuesMapper.INSTANCE.userBodyValuesMapper(dto); + + assertNotNull(obj); + assertEquals(45.35, obj.getKilogram(), 0); + } +} \ No newline at end of file From f78edd35697b82691b71a20cf012c3d554a71fd5 Mon Sep 17 00:00:00 2001 From: Lukasz Rys <> Date: Sun, 1 Sep 2019 20:15:29 +0200 Subject: [PATCH 06/39] [ BAEL-1869 ]: Couchbase spring reactive article --- spring-5-data-reactive/README.md | 1 + spring-5-data-reactive/pom.xml | 15 ++++ .../ReactiveCouchbaseApplication.java | 12 +++ .../configuration/CouchbaseProperties.java | 43 ++++++++++ .../N1QLReactiveCouchbaseConfiguration.java | 15 ++++ .../ReactiveCouchbaseConfiguration.java | 47 +++++++++++ .../ViewReactiveCouchbaseConfiguration.java | 13 +++ .../com/baeldung/couchbase/domain/Person.java | 43 ++++++++++ .../repository/n1ql/N1QLPersonRepository.java | 16 ++++ .../n1ql/N1QLSortingPersonRepository.java | 13 +++ .../repository/view/ViewPersonRepository.java | 20 +++++ .../CouchbaseMockConfiguration.java | 54 +++++++++++++ .../n1ql/N1QLPersonRepositoryLiveTest.java | 55 +++++++++++++ .../N1QLSortingPersonRepositoryLiveTest.java | 60 ++++++++++++++ .../ViewPersonRepositoryIntegrationTest.java | 79 +++++++++++++++++++ 15 files changed, 486 insertions(+) create mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/couchbase/ReactiveCouchbaseApplication.java create mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/CouchbaseProperties.java create mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/N1QLReactiveCouchbaseConfiguration.java create mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java create mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ViewReactiveCouchbaseConfiguration.java create mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/Person.java create mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepository.java create mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepository.java create mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepository.java create mode 100644 spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/CouchbaseMockConfiguration.java create mode 100644 spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepositoryLiveTest.java create mode 100644 spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepositoryLiveTest.java create mode 100644 spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepositoryIntegrationTest.java diff --git a/spring-5-data-reactive/README.md b/spring-5-data-reactive/README.md index 4c2347dc77..4e342532b2 100644 --- a/spring-5-data-reactive/README.md +++ b/spring-5-data-reactive/README.md @@ -8,3 +8,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Spring Data Reactive Repositories with MongoDB](http://www.baeldung.com/spring-data-mongodb-reactive) - [Spring Data MongoDB Tailable Cursors](https://www.baeldung.com/spring-data-mongodb-tailable-cursors) - [A Quick Look at R2DBC with Spring Data](https://www.baeldung.com/spring-data-r2dbc) +- [Embedded Redis Server with Spring Boot Test]() diff --git a/spring-5-data-reactive/pom.xml b/spring-5-data-reactive/pom.xml index 5372803842..296da87529 100644 --- a/spring-5-data-reactive/pom.xml +++ b/spring-5-data-reactive/pom.xml @@ -14,6 +14,14 @@ + + io.projectreactor + reactor-core + + + org.springframework.boot + spring-boot-starter-data-couchbase-reactive + org.springframework.boot spring-boot-starter-data-mongodb-reactive @@ -105,6 +113,12 @@ httpclient ${httpclient.version} + + com.couchbase.mock + CouchbaseMock + ${couchbaseMock.version} + test + @@ -224,6 +238,7 @@ 0.8.0.M8 4.5.2 1.4.199 + 1.5.23 diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/ReactiveCouchbaseApplication.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/ReactiveCouchbaseApplication.java new file mode 100644 index 0000000000..917bcfdaa8 --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/ReactiveCouchbaseApplication.java @@ -0,0 +1,12 @@ +package com.baeldung.couchbase; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ReactiveCouchbaseApplication { + + public static void main(String[] args) { + SpringApplication.run(ReactiveCouchbaseApplication.class, args); + } +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/CouchbaseProperties.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/CouchbaseProperties.java new file mode 100644 index 0000000000..85c6997c6a --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/CouchbaseProperties.java @@ -0,0 +1,43 @@ +package com.baeldung.couchbase.configuration; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +import java.util.Collections; +import java.util.List; + +@Configuration +public class CouchbaseProperties { + + private final List bootstrapHosts; + private final String bucketName; + private final String bucketPassword; + private final int port; + + public CouchbaseProperties( + @Value("${spring.couchbase.bootstrap-hosts}") final List bootstrapHosts, + @Value("${spring.couchbase.bucket.name}") final String bucketName, + @Value("${spring.couchbase.bucket.password}") final String bucketPassword, + @Value("${spring.couchbase.port}") final int port) { + this.bootstrapHosts = Collections.unmodifiableList(bootstrapHosts); + this.bucketName = bucketName; + this.bucketPassword = bucketPassword; + this.port = port; + } + + public List getBootstrapHosts() { + return bootstrapHosts; + } + + public String getBucketName() { + return bucketName; + } + + public String getBucketPassword() { + return bucketPassword; + } + + public int getPort() { + return port; + } +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/N1QLReactiveCouchbaseConfiguration.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/N1QLReactiveCouchbaseConfiguration.java new file mode 100644 index 0000000000..059bd36cae --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/N1QLReactiveCouchbaseConfiguration.java @@ -0,0 +1,15 @@ +package com.baeldung.couchbase.configuration; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.data.couchbase.repository.config.EnableReactiveCouchbaseRepositories; + +@Configuration +@EnableReactiveCouchbaseRepositories("com.baeldung.couchbase.domain.repository.n1ql") +@Primary +public class N1QLReactiveCouchbaseConfiguration extends ReactiveCouchbaseConfiguration { + + public N1QLReactiveCouchbaseConfiguration(CouchbaseProperties couchbaseProperties) { + super(couchbaseProperties); + } +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java new file mode 100644 index 0000000000..80c040df9f --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java @@ -0,0 +1,47 @@ +package com.baeldung.couchbase.configuration; + +import com.couchbase.client.java.env.CouchbaseEnvironment; +import com.couchbase.client.java.env.DefaultCouchbaseEnvironment; +import org.springframework.context.annotation.Bean; +import org.springframework.data.couchbase.config.AbstractReactiveCouchbaseConfiguration; +import org.springframework.data.couchbase.config.BeanNames; +import org.springframework.data.couchbase.repository.support.IndexManager; + +import java.util.List; + +public abstract class ReactiveCouchbaseConfiguration extends AbstractReactiveCouchbaseConfiguration { + + private CouchbaseProperties couchbaseProperties; + + public ReactiveCouchbaseConfiguration(final CouchbaseProperties couchbaseProperties) { + this.couchbaseProperties = couchbaseProperties; + } + + @Bean(name = BeanNames.COUCHBASE_INDEX_MANAGER) + public IndexManager indexManager() { + return new IndexManager(true, true, false); + } + + @Override + protected List getBootstrapHosts() { + return couchbaseProperties.getBootstrapHosts(); + } + + @Override + protected String getBucketName() { + return couchbaseProperties.getBucketName(); + } + + @Override + protected String getBucketPassword() { + return couchbaseProperties.getBucketPassword(); + } + + @Override + public CouchbaseEnvironment couchbaseEnvironment() { + return DefaultCouchbaseEnvironment + .builder() + .bootstrapHttpDirectPort(couchbaseProperties.getPort()) + .build(); + } +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ViewReactiveCouchbaseConfiguration.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ViewReactiveCouchbaseConfiguration.java new file mode 100644 index 0000000000..9b4d9b0319 --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ViewReactiveCouchbaseConfiguration.java @@ -0,0 +1,13 @@ +package com.baeldung.couchbase.configuration; + +import org.springframework.context.annotation.Configuration; +import org.springframework.data.couchbase.repository.config.EnableReactiveCouchbaseRepositories; + +@Configuration +@EnableReactiveCouchbaseRepositories("com.baeldung.couchbase.domain.repository.view") +public class ViewReactiveCouchbaseConfiguration extends ReactiveCouchbaseConfiguration { + + public ViewReactiveCouchbaseConfiguration(CouchbaseProperties couchbaseProperties) { + super(couchbaseProperties); + } +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/Person.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/Person.java new file mode 100644 index 0000000000..285de34df8 --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/Person.java @@ -0,0 +1,43 @@ +package com.baeldung.couchbase.domain; + +import org.springframework.data.annotation.Id; +import org.springframework.data.couchbase.core.mapping.Document; + +import java.util.Objects; +import java.util.UUID; + +@Document +public class Person { + + @Id private UUID id; + private String firstName; + + public Person(final UUID id, final String firstName) { + this.id = id; + this.firstName = firstName; + } + + private Person() { + } + + public UUID getId() { + return id; + } + + public String getFirstName() { + return firstName; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Person person = (Person) o; + return Objects.equals(id, person.id) && Objects.equals(firstName, person.firstName); + } + + @Override + public int hashCode() { + return Objects.hash(id, firstName); + } +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepository.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepository.java new file mode 100644 index 0000000000..6f73a77ceb --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepository.java @@ -0,0 +1,16 @@ +package com.baeldung.couchbase.domain.repository.n1ql; + +import com.baeldung.couchbase.domain.Person; +import org.springframework.data.couchbase.core.query.N1qlPrimaryIndexed; +import org.springframework.data.repository.reactive.ReactiveCrudRepository; +import org.springframework.stereotype.Repository; +import reactor.core.publisher.Flux; + +import java.util.UUID; + +@Repository +@N1qlPrimaryIndexed +public interface N1QLPersonRepository extends ReactiveCrudRepository { + + Flux findAllByFirstName(final String firstName); +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepository.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepository.java new file mode 100644 index 0000000000..57dd149425 --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepository.java @@ -0,0 +1,13 @@ +package com.baeldung.couchbase.domain.repository.n1ql; + +import com.baeldung.couchbase.domain.Person; +import org.springframework.data.couchbase.core.query.N1qlPrimaryIndexed; +import org.springframework.data.repository.reactive.ReactiveSortingRepository; +import org.springframework.stereotype.Repository; + +import java.util.UUID; + +@Repository +@N1qlPrimaryIndexed +public interface N1QLSortingPersonRepository extends ReactiveSortingRepository { +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepository.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepository.java new file mode 100644 index 0000000000..28a7ec1b78 --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepository.java @@ -0,0 +1,20 @@ +package com.baeldung.couchbase.domain.repository.view; + +import com.baeldung.couchbase.domain.Person; +import org.springframework.data.couchbase.core.query.View; +import org.springframework.data.couchbase.core.query.ViewIndexed; +import org.springframework.data.repository.reactive.ReactiveCrudRepository; +import org.springframework.stereotype.Repository; +import reactor.core.publisher.Flux; + +import java.util.UUID; + +@Repository +@ViewIndexed(designDoc = ViewPersonRepository.DESIGN_DOCUMENT) +public interface ViewPersonRepository extends ReactiveCrudRepository { + + String DESIGN_DOCUMENT = "persons"; + + @View(designDocument = ViewPersonRepository.DESIGN_DOCUMENT) + Flux findByFirstName(String firstName); +} diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/CouchbaseMockConfiguration.java b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/CouchbaseMockConfiguration.java new file mode 100644 index 0000000000..9d4108eccd --- /dev/null +++ b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/CouchbaseMockConfiguration.java @@ -0,0 +1,54 @@ +package com.baeldung.couchbase.domain.repository; + +import com.baeldung.couchbase.configuration.CouchbaseProperties; +import com.couchbase.mock.Bucket; +import com.couchbase.mock.BucketConfiguration; +import com.couchbase.mock.CouchbaseMock; +import org.springframework.boot.test.context.TestConfiguration; + +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import java.io.IOException; +import java.io.UncheckedIOException; +import java.util.List; + +@TestConfiguration +public class CouchbaseMockConfiguration { + + private CouchbaseMock couchbaseMock; + + public CouchbaseMockConfiguration(final CouchbaseProperties couchbaseProperties) { + final BucketConfiguration bucketConfiguration = new BucketConfiguration(); + bucketConfiguration.numNodes = 1; + bucketConfiguration.numReplicas = 1; + bucketConfiguration.numVBuckets = 1024; + bucketConfiguration.name = couchbaseProperties.getBucketName(); + bucketConfiguration.type = Bucket.BucketType.COUCHBASE; + bucketConfiguration.password = couchbaseProperties.getBucketPassword(); + + try { + couchbaseMock = new CouchbaseMock(couchbaseProperties.getPort(), List.of(bucketConfiguration)); + } catch (final IOException ex) { + throw new UncheckedIOException(ex); + } + } + + @PostConstruct + public void postConstruct() { + try { + couchbaseMock.start(); + } catch (final IOException ex) { + throw new UncheckedIOException(ex); + } + try { + couchbaseMock.waitForStartup(); + } catch (final InterruptedException ex) { + throw new RuntimeException(ex); + } + } + + @PreDestroy + public void preDestroy() { + couchbaseMock.stop(); + } +} diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepositoryLiveTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepositoryLiveTest.java new file mode 100644 index 0000000000..0c1b6bde6c --- /dev/null +++ b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepositoryLiveTest.java @@ -0,0 +1,55 @@ +package com.baeldung.couchbase.domain.repository.n1ql; + +import com.baeldung.couchbase.domain.Person; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; +import reactor.core.publisher.Flux; +import reactor.test.StepVerifier; + +import java.util.UUID; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class N1QLPersonRepositoryLiveTest { + + @Autowired private N1QLPersonRepository personRepository; + + @Test + public void shouldFindAll_byLastName() { + //Given + final String firstName = "John"; + final Person matchingPerson = new Person(UUID.randomUUID(), firstName); + final Person nonMatchingPerson = new Person(UUID.randomUUID(), "NotJohn"); + wrap(() -> { + personRepository + .save(matchingPerson) + .subscribe(); + personRepository + .save(nonMatchingPerson) + .subscribe(); + //When + final Flux allByFirstName = personRepository.findAllByFirstName(firstName); + //Then + StepVerifier + .create(allByFirstName) + .expectNext(matchingPerson) + .verifyComplete(); + + }, matchingPerson, nonMatchingPerson); + } + + private void wrap(final Runnable runnable, final Person... people) { + try { + runnable.run(); + } finally { + for (final Person person : people) { + personRepository + .delete(person) + .subscribe(); + } + } + } +} \ No newline at end of file diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepositoryLiveTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepositoryLiveTest.java new file mode 100644 index 0000000000..4ba2206e0a --- /dev/null +++ b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepositoryLiveTest.java @@ -0,0 +1,60 @@ +package com.baeldung.couchbase.domain.repository.n1ql; + +import com.baeldung.couchbase.domain.Person; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.domain.Sort; +import org.springframework.test.context.junit4.SpringRunner; +import reactor.core.publisher.Flux; +import reactor.test.StepVerifier; + +import java.util.UUID; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class N1QLSortingPersonRepositoryLiveTest { + + @Autowired private N1QLSortingPersonRepository personRepository; + + @Test + public void shouldFindAll_sortedByFirstName() { + //Given + final Person firstPerson = new Person(UUID.randomUUID(), "John"); + final Person secondPerson = new Person(UUID.randomUUID(), "Mikki"); + wrap(() -> { + personRepository + .save(firstPerson) + .subscribe(); + personRepository + .save(secondPerson) + .subscribe(); + //When + final Flux allByFirstName = personRepository.findAll(Sort.by(Sort.Direction.DESC, "firstName")); + //Then + StepVerifier + .create(allByFirstName) + .expectNextMatches(person -> person + .getFirstName() + .equals(secondPerson.getFirstName())) + .expectNextMatches(person -> person + .getFirstName() + .equals(firstPerson.getFirstName())) + .verifyComplete(); + }, firstPerson, secondPerson); + } + + //workaround for deleteAll() + private void wrap(final Runnable runnable, final Person... people) { + try { + runnable.run(); + } finally { + for (final Person person : people) { + personRepository + .delete(person) + .subscribe(); + } + } + } +} \ No newline at end of file diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepositoryIntegrationTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepositoryIntegrationTest.java new file mode 100644 index 0000000000..712e7b0d37 --- /dev/null +++ b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepositoryIntegrationTest.java @@ -0,0 +1,79 @@ +package com.baeldung.couchbase.domain.repository.view; + +import com.baeldung.couchbase.configuration.CouchbaseProperties; +import com.baeldung.couchbase.configuration.ViewReactiveCouchbaseConfiguration; +import com.baeldung.couchbase.domain.Person; +import com.baeldung.couchbase.domain.repository.CouchbaseMockConfiguration; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; + +import java.util.UUID; + +@RunWith(SpringRunner.class) +@SpringBootTest(properties = { "spring.couchbase.port=10010" }, classes = { ViewReactiveCouchbaseConfiguration.class, CouchbaseProperties.class, CouchbaseMockConfiguration.class }) +public class ViewPersonRepositoryIntegrationTest { + + @Autowired private ViewPersonRepository personRepository; + + @Test + public void shouldSavePerson_findById_thenDeleteIt() { + //Given + final UUID id = UUID.randomUUID(); + final Person person = new Person(id, "John"); + wrap(() -> { + personRepository + .save(person) + .subscribe(); + //When + final Mono byId = personRepository.findById(id); + //Then + StepVerifier + .create(byId) + .expectNextMatches(result -> result + .getId() + .equals(id)) + .expectComplete() + .verify(); + }, person); + } + + @Test + public void shouldFindAll_thenDeleteIt() { + //Given + final Person person = new Person(UUID.randomUUID(), "John"); + final Person secondPerson = new Person(UUID.randomUUID(), "Mikki"); + wrap(() -> { + personRepository + .save(person) + .subscribe(); + personRepository + .save(secondPerson) + .subscribe(); + //When + final Flux all = personRepository.findAll(); + //Then + StepVerifier + .create(all) + .expectNextCount(2) + .verifyComplete(); + }, person, secondPerson); + } + + private void wrap(final Runnable runnable, final Person... people) { + try { + runnable.run(); + } finally { + for (final Person person : people) { + personRepository + .delete(person) + .subscribe(); + } + } + } +} \ No newline at end of file From 5a3143b0e43f461f0f79e4dafccde9bd47c421ca Mon Sep 17 00:00:00 2001 From: Lukasz Rys <> Date: Sun, 1 Sep 2019 21:46:14 +0200 Subject: [PATCH 07/39] BAEL-1869: Fix List.of --- .../configuration/ReactiveCouchbaseConfiguration.java | 5 ----- .../domain/repository/CouchbaseMockConfiguration.java | 4 ++-- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java index 80c040df9f..3bd66a895a 100644 --- a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java @@ -17,11 +17,6 @@ public abstract class ReactiveCouchbaseConfiguration extends AbstractReactiveCou this.couchbaseProperties = couchbaseProperties; } - @Bean(name = BeanNames.COUCHBASE_INDEX_MANAGER) - public IndexManager indexManager() { - return new IndexManager(true, true, false); - } - @Override protected List getBootstrapHosts() { return couchbaseProperties.getBootstrapHosts(); diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/CouchbaseMockConfiguration.java b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/CouchbaseMockConfiguration.java index 9d4108eccd..2a09fce4b0 100644 --- a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/CouchbaseMockConfiguration.java +++ b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/CouchbaseMockConfiguration.java @@ -10,7 +10,7 @@ import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import java.io.IOException; import java.io.UncheckedIOException; -import java.util.List; +import java.util.Collections; @TestConfiguration public class CouchbaseMockConfiguration { @@ -27,7 +27,7 @@ public class CouchbaseMockConfiguration { bucketConfiguration.password = couchbaseProperties.getBucketPassword(); try { - couchbaseMock = new CouchbaseMock(couchbaseProperties.getPort(), List.of(bucketConfiguration)); + couchbaseMock = new CouchbaseMock(couchbaseProperties.getPort(), Collections.singletonList(bucketConfiguration)); } catch (final IOException ex) { throw new UncheckedIOException(ex); } From 68413d30dc706e4eb9918cd9c6c6c312d91d1eb9 Mon Sep 17 00:00:00 2001 From: Kert Pjatkin Date: Thu, 29 Aug 2019 12:53:03 +0300 Subject: [PATCH 08/39] =?UTF-8?q?[BAEL-2851]=20Debugging=20the=20Spring=20?= =?UTF-8?q?MVC=20404=20=E2=80=9CNo=20mapping=20found=20for=20HTTP=20reques?= =?UTF-8?q?t=20with=20URI...=E2=80=9D=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring/controller/GreetingController.java | 16 ++++++++++++++++ .../src/main/webapp/WEB-INF/view/greeting.jsp | 9 +++++++++ 2 files changed, 25 insertions(+) create mode 100644 spring-mvc-xml/src/main/java/com/baeldung/spring/controller/GreetingController.java create mode 100644 spring-mvc-xml/src/main/webapp/WEB-INF/view/greeting.jsp diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/GreetingController.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/GreetingController.java new file mode 100644 index 0000000000..dfa50fcb26 --- /dev/null +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/GreetingController.java @@ -0,0 +1,16 @@ +package com.baeldung.spring.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +@Controller +public class GreetingController { + + @RequestMapping(value = "/greeting", method = RequestMethod.GET) + public String get(ModelMap model) { + model.addAttribute("message", "Hello, World!"); + return "greeting"; + } +} \ No newline at end of file diff --git a/spring-mvc-xml/src/main/webapp/WEB-INF/view/greeting.jsp b/spring-mvc-xml/src/main/webapp/WEB-INF/view/greeting.jsp new file mode 100644 index 0000000000..ac17c75ab7 --- /dev/null +++ b/spring-mvc-xml/src/main/webapp/WEB-INF/view/greeting.jsp @@ -0,0 +1,9 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Greeting + + +

${message}

+ + \ No newline at end of file From d68530b53950f5825b60ebc1822adbd4875ec4dc Mon Sep 17 00:00:00 2001 From: Maciej Andrearczyk Date: Tue, 27 Aug 2019 22:21:37 +0200 Subject: [PATCH 09/39] BAEL-3192 | A guide to System.gc() --- .../baeldung/systemgc/DemoApplication.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 core-java-modules/core-java-jvm/src/main/java/com/baeldung/systemgc/DemoApplication.java diff --git a/core-java-modules/core-java-jvm/src/main/java/com/baeldung/systemgc/DemoApplication.java b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/systemgc/DemoApplication.java new file mode 100644 index 0000000000..8bca55c5f0 --- /dev/null +++ b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/systemgc/DemoApplication.java @@ -0,0 +1,33 @@ +package com.baeldung.systemgc; + +import java.util.HashMap; +import java.util.Map; +import java.util.Scanner; + +import static java.util.UUID.randomUUID; + +public class DemoApplication { + + private static final Map cache = new HashMap(); + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + while (scanner.hasNext()) { + final String next = scanner.next(); + if ("fill".equals(next)) { + for (int i = 0; i < 1000000; i++) { + cache.put(randomUUID().toString(), randomUUID().toString()); + } + } else if ("invalidate".equals(next)) { + cache.clear(); + } else if ("gc".equals(next)) { + System.gc(); + } else if ("exit".equals(next)) { + System.exit(0); + } else { + System.out.println("unknown"); + } + } + } +} \ No newline at end of file From b04e2c32b23a378ef145893ebf99ba20306492e2 Mon Sep 17 00:00:00 2001 From: Lukasz Rys <> Date: Tue, 3 Sep 2019 20:50:27 +0200 Subject: [PATCH 10/39] [ BAEL-1869 ]: Delete the article from README.MD. Reformat. --- spring-5-data-reactive/README.md | 1 - .../couchbase/configuration/CouchbaseProperties.java | 5 +---- .../configuration/ReactiveCouchbaseConfiguration.java | 3 --- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/spring-5-data-reactive/README.md b/spring-5-data-reactive/README.md index 4e342532b2..4c2347dc77 100644 --- a/spring-5-data-reactive/README.md +++ b/spring-5-data-reactive/README.md @@ -8,4 +8,3 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Spring Data Reactive Repositories with MongoDB](http://www.baeldung.com/spring-data-mongodb-reactive) - [Spring Data MongoDB Tailable Cursors](https://www.baeldung.com/spring-data-mongodb-tailable-cursors) - [A Quick Look at R2DBC with Spring Data](https://www.baeldung.com/spring-data-r2dbc) -- [Embedded Redis Server with Spring Boot Test]() diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/CouchbaseProperties.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/CouchbaseProperties.java index 85c6997c6a..480c96e986 100644 --- a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/CouchbaseProperties.java +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/CouchbaseProperties.java @@ -14,10 +14,7 @@ public class CouchbaseProperties { private final String bucketPassword; private final int port; - public CouchbaseProperties( - @Value("${spring.couchbase.bootstrap-hosts}") final List bootstrapHosts, - @Value("${spring.couchbase.bucket.name}") final String bucketName, - @Value("${spring.couchbase.bucket.password}") final String bucketPassword, + public CouchbaseProperties(@Value("${spring.couchbase.bootstrap-hosts}") final List bootstrapHosts, @Value("${spring.couchbase.bucket.name}") final String bucketName, @Value("${spring.couchbase.bucket.password}") final String bucketPassword, @Value("${spring.couchbase.port}") final int port) { this.bootstrapHosts = Collections.unmodifiableList(bootstrapHosts); this.bucketName = bucketName; diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java index 3bd66a895a..2f3b5486d8 100644 --- a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java @@ -2,10 +2,7 @@ package com.baeldung.couchbase.configuration; import com.couchbase.client.java.env.CouchbaseEnvironment; import com.couchbase.client.java.env.DefaultCouchbaseEnvironment; -import org.springframework.context.annotation.Bean; import org.springframework.data.couchbase.config.AbstractReactiveCouchbaseConfiguration; -import org.springframework.data.couchbase.config.BeanNames; -import org.springframework.data.couchbase.repository.support.IndexManager; import java.util.List; From 78ca924a13817c591603ff00dddca7b370e587e8 Mon Sep 17 00:00:00 2001 From: amit2103 Date: Fri, 6 Sep 2019 01:31:18 +0530 Subject: [PATCH 11/39] [BAEL-15393] - Update Spring File Upload article --- spring-mvc-java/pom.xml | 31 +++---------------- .../java/com/baeldung/aop/LoggingAspect.java | 6 ++-- .../com/baeldung/aop/PerformanceAspect.java | 2 +- .../com/baeldung/aop/PublishingAspect.java | 4 +-- .../baeldung/spring/web/config/WebConfig.java | 12 +------ .../src/main/resources/application.properties | 26 +++------------- 6 files changed, 17 insertions(+), 64 deletions(-) diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml index da9bd04d3d..87d2f612af 100644 --- a/spring-mvc-java/pom.xml +++ b/spring-mvc-java/pom.xml @@ -19,14 +19,6 @@ org.springframework.boot spring-boot-starter-web
- - org.springframework.boot - spring-boot-starter-tomcat - - - org.springframework.boot - spring-boot-starter-jdbc - javax.servlet javax.servlet-api @@ -40,7 +32,11 @@ javax.servlet jstl - ${jstl.version} + + + org.apache.tomcat.embed + tomcat-embed-jasper + provided @@ -62,17 +58,6 @@ - - commons-fileupload - commons-fileupload - ${commons-fileupload.version} - - - commons-io - commons-io - - - net.sourceforge.htmlunit htmlunit @@ -143,12 +128,6 @@ org.springframework.boot spring-boot-starter-websocket - - - - - - org.glassfish javax.el diff --git a/spring-mvc-java/src/main/java/com/baeldung/aop/LoggingAspect.java b/spring-mvc-java/src/main/java/com/baeldung/aop/LoggingAspect.java index 7ae37404be..169d664471 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/aop/LoggingAspect.java +++ b/spring-mvc-java/src/main/java/com/baeldung/aop/LoggingAspect.java @@ -23,15 +23,15 @@ public class LoggingAspect { } }; - @Pointcut("@target(org.springframework.stereotype.Repository)") + @Pointcut("within(com.baeldung..*) && execution(* com.baeldung.dao.FooDao.*(..))") public void repositoryMethods() { } - @Pointcut("@annotation(com.baeldung.aop.annotations.Loggable)") + @Pointcut("within(com.baeldung..*) && @annotation(com.baeldung.aop.annotations.Loggable)") public void loggableMethods() { } - @Pointcut("@args(com.baeldung.aop.annotations.Entity)") + @Pointcut("within(com.baeldung..*) && @args(com.baeldung.aop.annotations.Entity)") public void methodsAcceptingEntities() { } diff --git a/spring-mvc-java/src/main/java/com/baeldung/aop/PerformanceAspect.java b/spring-mvc-java/src/main/java/com/baeldung/aop/PerformanceAspect.java index 1f2076adff..8f374cc1e5 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/aop/PerformanceAspect.java +++ b/spring-mvc-java/src/main/java/com/baeldung/aop/PerformanceAspect.java @@ -15,7 +15,7 @@ public class PerformanceAspect { private static Logger logger = Logger.getLogger(PerformanceAspect.class.getName()); - @Pointcut("within(@org.springframework.stereotype.Repository *)") + @Pointcut("within(com.baeldung..*) && execution(* com.baeldung.dao.FooDao.*(..))") public void repositoryClassMethods() { } diff --git a/spring-mvc-java/src/main/java/com/baeldung/aop/PublishingAspect.java b/spring-mvc-java/src/main/java/com/baeldung/aop/PublishingAspect.java index 7791c63e7b..a45402dc18 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/aop/PublishingAspect.java +++ b/spring-mvc-java/src/main/java/com/baeldung/aop/PublishingAspect.java @@ -20,11 +20,11 @@ public class PublishingAspect { this.eventPublisher = eventPublisher; } - @Pointcut("@target(org.springframework.stereotype.Repository)") + @Pointcut("within(com.baeldung..*) && execution(* com.baeldung.dao.FooDao.*(..))") public void repositoryMethods() { } - @Pointcut("execution(* *..create*(Long,..))") + @Pointcut("within(com.baeldung..*) && execution(* com.baeldung.dao.FooDao.create*(Long,..))") public void firstLongParamMethods() { } diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java index 7aa9d6c5b5..96e300464b 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java +++ b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java @@ -12,7 +12,6 @@ import org.springframework.context.support.ResourceBundleMessageSource; import org.springframework.http.MediaType; import org.springframework.http.converter.ByteArrayHttpMessageConverter; import org.springframework.http.converter.HttpMessageConverter; -import org.springframework.web.multipart.commons.CommonsMultipartResolver; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; @@ -63,7 +62,7 @@ public class WebConfig implements WebMvcConfigurer { final SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver(); templateResolver.setPrefix("/WEB-INF/templates/"); templateResolver.setSuffix(".html"); - templateResolver.setTemplateMode("HTML5"); + templateResolver.setTemplateMode("HTML"); return templateResolver; } @@ -87,15 +86,6 @@ public class WebConfig implements WebMvcConfigurer { public void addResourceHandlers(final ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); } - - @Bean(name = "multipartResolver") - public CommonsMultipartResolver multipartResolver() { - - final CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); - multipartResolver.setMaxUploadSize(100000); - - return multipartResolver; - } @Override public void extendMessageConverters(final List> converters) { diff --git a/spring-mvc-java/src/main/resources/application.properties b/spring-mvc-java/src/main/resources/application.properties index 4f618c96a9..00c491c271 100644 --- a/spring-mvc-java/src/main/resources/application.properties +++ b/spring-mvc-java/src/main/resources/application.properties @@ -1,21 +1,5 @@ -spring.servlet.multipart.max-file-size=10MB -spring.servlet.multipart.max-request-size=10MB -spring.http.multipart.enabled=true -spring.servlet.multipart.location=${java.io.tmpdir} - -logging.level.org.springframework=DEBUG -logging.level.com.baeldung=DEBUG - -#output to a temp_folder/file -logging.file=${java.io.tmpdir}/application.log - -# Logging pattern for the console -logging.pattern.console= %d{yyyy-MM-dd HH:mm:ss} - %msg%n - -# Logging pattern for file -logging.pattern.file= %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg% -spring.http.encoding.charset=UTF-8 -# Enable http encoding support. -spring.http.encoding.enabled=true -# Force the encoding to the configured charset on HTTP requests and responses. -spring.http.encoding.force=true \ No newline at end of file +server.servlet.context-path=/spring-mvc-java +spring.servlet.multipart.max-file-size=1MB +spring.servlet.multipart.max-request-size=1MB +spring.servlet.multipart.enabled=true +spring.servlet.multipart.location=${java.io.tmpdir} \ No newline at end of file From bd1ed1a3eef7aa87d28bf1234a38ff25822a5d74 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Fri, 6 Sep 2019 21:16:05 +0200 Subject: [PATCH 12/39] Code for BAEL-3189 (custom Apache Shiro permission implementation) --- apache-shiro/pom.xml | 13 +--- .../controllers/ShiroSpringController.java | 7 +- .../shiro/permissions/custom/Main.java | 68 +++++++++++++++++++ .../permissions/custom/PathPermission.java | 22 ++++++ .../custom/PathPermissionResolver.java | 13 ++++ .../shiro/permissions/custom/shiro.ini | 10 +++ 6 files changed, 115 insertions(+), 18 deletions(-) create mode 100644 apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/Main.java create mode 100644 apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermission.java create mode 100644 apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermissionResolver.java create mode 100644 apache-shiro/src/main/resources/com/baeldung/shiro/permissions/custom/shiro.ini diff --git a/apache-shiro/pom.xml b/apache-shiro/pom.xml index 644d70b30a..7f0d07589c 100644 --- a/apache-shiro/pom.xml +++ b/apache-shiro/pom.xml @@ -38,17 +38,6 @@ jcl-over-slf4j runtime - - org.slf4j - slf4j-log4j12 - runtime - - - log4j - log4j - ${log4j-version} - runtime -
@@ -56,4 +45,4 @@ 1.2.17 - \ No newline at end of file + diff --git a/apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java b/apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java index e6e72b2579..2713786d71 100644 --- a/apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java +++ b/apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java @@ -18,22 +18,17 @@ import javax.servlet.http.HttpServletRequest; @Controller public class ShiroSpringController { - - @GetMapping("/") public String index() { return "index"; } - @RequestMapping( value = "/login", method = {RequestMethod.GET, RequestMethod.POST}) public String login(HttpServletRequest req, UserCredentials cred, RedirectAttributes attr) { if(req.getMethod().equals(RequestMethod.GET.toString())) { return "login"; - } - else { - + } else { Subject subject = SecurityUtils.getSubject(); if(!subject.isAuthenticated()) { diff --git a/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/Main.java b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/Main.java new file mode 100644 index 0000000000..a373122d6c --- /dev/null +++ b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/Main.java @@ -0,0 +1,68 @@ +package com.baeldung.shiro.permissions.custom; + +import com.baeldung.MyCustomRealm; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.*; +import org.apache.shiro.config.Ini; +import org.apache.shiro.mgt.DefaultSecurityManager; +import org.apache.shiro.mgt.SecurityManager; +import org.apache.shiro.realm.Realm; +import org.apache.shiro.realm.text.IniRealm; +import org.apache.shiro.session.Session; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Main { + + private static final transient Logger log = LoggerFactory.getLogger(Main.class); + + public static void main(String[] args) { + + IniRealm realm = new IniRealm(); + Ini ini = Ini.fromResourcePath(Main.class.getResource("/com/baeldung/shiro/permissions/custom/shiro.ini").getPath()); + realm.setIni(ini); + realm.setPermissionResolver(new PathPermissionResolver()); + realm.init(); + SecurityManager securityManager = new DefaultSecurityManager(realm); + + SecurityUtils.setSecurityManager(securityManager); + Subject currentUser = SecurityUtils.getSubject(); + + if (!currentUser.isAuthenticated()) { + UsernamePasswordToken token = new UsernamePasswordToken("paul.reader", "password4"); + token.setRememberMe(true); + try { + currentUser.login(token); + } catch (UnknownAccountException uae) { + log.error("Username Not Found!", uae); + } catch (IncorrectCredentialsException ice) { + log.error("Invalid Credentials!", ice); + } catch (LockedAccountException lae) { + log.error("Your Account is Locked!", lae); + } catch (AuthenticationException ae) { + log.error("Unexpected Error!", ae); + } + } + + log.info("User [" + currentUser.getPrincipal() + "] logged in successfully."); + + if (currentUser.hasRole("admin")) { + log.info("Welcome Admin"); + } else if(currentUser.hasRole("editor")) { + log.info("Welcome, Editor!"); + } else if(currentUser.hasRole("author")) { + log.info("Welcome, Author"); + } else { + log.info("Welcome, Guest"); + } + + if(currentUser.isPermitted("/articles/drafts/new-article")) { + log.info("You can access articles"); + } else { + log.info("You cannot access articles!"); + } + currentUser.logout(); + } + +} diff --git a/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermission.java b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermission.java new file mode 100644 index 0000000000..f7dfbda06a --- /dev/null +++ b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermission.java @@ -0,0 +1,22 @@ +package com.baeldung.shiro.permissions.custom; + +import org.apache.shiro.authz.Permission; + +import java.nio.file.Path; + +public class PathPermission implements Permission { + + private final Path path; + + public PathPermission(Path path) { + this.path = path; + } + + @Override + public boolean implies(Permission p) { + if(p instanceof PathPermission) { + return ((PathPermission) p).path.startsWith(path); + } + return false; + } +} diff --git a/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermissionResolver.java b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermissionResolver.java new file mode 100644 index 0000000000..4b60d2fbd4 --- /dev/null +++ b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermissionResolver.java @@ -0,0 +1,13 @@ +package com.baeldung.shiro.permissions.custom; + +import org.apache.shiro.authz.Permission; +import org.apache.shiro.authz.permission.PermissionResolver; + +import java.nio.file.Paths; + +public class PathPermissionResolver implements PermissionResolver { + @Override + public Permission resolvePermission(String permissionString) { + return new PathPermission(Paths.get(permissionString)); + } +} diff --git a/apache-shiro/src/main/resources/com/baeldung/shiro/permissions/custom/shiro.ini b/apache-shiro/src/main/resources/com/baeldung/shiro/permissions/custom/shiro.ini new file mode 100644 index 0000000000..732ff8b60d --- /dev/null +++ b/apache-shiro/src/main/resources/com/baeldung/shiro/permissions/custom/shiro.ini @@ -0,0 +1,10 @@ +[users] +jane.admin = password, admin +john.editor = password2, editor +zoe.author = password3, author +paul.reader = password4 + +[roles] +admin = / +editor = /articles +author = /articles/drafts From 9f88a0ff9d706e633a12ffd106c038b050d7c3da Mon Sep 17 00:00:00 2001 From: "anilkivilcim.eray" Date: Sat, 7 Sep 2019 12:42:40 +0300 Subject: [PATCH 13/39] BAEL-3097 mapstruct version change from beta2 to final --- mapstruct/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapstruct/pom.xml b/mapstruct/pom.xml index 0493775f85..2613dcf083 100644 --- a/mapstruct/pom.xml +++ b/mapstruct/pom.xml @@ -65,7 +65,7 @@ - 1.3.0.Beta2 + 1.3.0.Final 4.3.4.RELEASE 1.8 1.8 From 41ca87136da1d70de0b814def471412d2d925d66 Mon Sep 17 00:00:00 2001 From: amit2103 Date: Sun, 8 Sep 2019 01:14:46 +0530 Subject: [PATCH 14/39] [BAEL-15393] - Fixed tomcat deployment --- spring-mvc-java/pom.xml | 5 +++ .../com/baeldung/SpringMVCApplication.java | 3 +- .../com/baeldung/config/AppInitializer.java | 33 ------------------- 3 files changed, 7 insertions(+), 34 deletions(-) delete mode 100644 spring-mvc-java/src/main/java/com/baeldung/config/AppInitializer.java diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml index 87d2f612af..ea0acdcb00 100644 --- a/spring-mvc-java/pom.xml +++ b/spring-mvc-java/pom.xml @@ -19,6 +19,10 @@ org.springframework.boot spring-boot-starter-web + + org.springframework.boot + spring-boot-starter-tomcat + javax.servlet javax.servlet-api @@ -280,6 +284,7 @@ 3.16-beta1 3.0.1-b09 + com.baeldung.SpringMVCApplication diff --git a/spring-mvc-java/src/main/java/com/baeldung/SpringMVCApplication.java b/spring-mvc-java/src/main/java/com/baeldung/SpringMVCApplication.java index ee263aaab2..a456dc125e 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/SpringMVCApplication.java +++ b/spring-mvc-java/src/main/java/com/baeldung/SpringMVCApplication.java @@ -2,9 +2,10 @@ package com.baeldung; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication -public class SpringMVCApplication { +public class SpringMVCApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(SpringMVCApplication.class, args); } diff --git a/spring-mvc-java/src/main/java/com/baeldung/config/AppInitializer.java b/spring-mvc-java/src/main/java/com/baeldung/config/AppInitializer.java deleted file mode 100644 index eec12f466f..0000000000 --- a/spring-mvc-java/src/main/java/com/baeldung/config/AppInitializer.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.baeldung.config; - -import org.springframework.web.WebApplicationInitializer; -import org.springframework.web.context.ContextLoaderListener; -import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; -import org.springframework.web.servlet.DispatcherServlet; - -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRegistration; - -public class AppInitializer implements WebApplicationInitializer { - - @Override - public void onStartup(ServletContext container) throws ServletException { - AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); - - context.scan("com.baeldung"); - - container.addListener(new ContextLoaderListener(context)); - - ServletRegistration.Dynamic dispatcher = container.addServlet("mvc", new DispatcherServlet(context)); - dispatcher.setLoadOnStartup(1); - dispatcher.addMapping("/"); - - // final MultipartConfigElement multipartConfigElement = new - // MultipartConfigElement(TMP_FOLDER, MAX_UPLOAD_SIZE, - // MAX_UPLOAD_SIZE * 2, MAX_UPLOAD_SIZE / 2); - // - // appServlet.setMultipartConfig(multipartConfigElement); - } - -} From d1eebc8bef10b841e73b7e8ed1577c4aafd48a28 Mon Sep 17 00:00:00 2001 From: amit2103 Date: Sun, 8 Sep 2019 01:54:03 +0530 Subject: [PATCH 15/39] [BAEL-15393] - Fixed tests --- .../com/baeldung/SpringContextIntegrationTest.java | 11 ++++------- .../src/test/java/com/baeldung/SpringContextTest.java | 11 ++++------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/spring-mvc-java/src/test/java/com/baeldung/SpringContextIntegrationTest.java b/spring-mvc-java/src/test/java/com/baeldung/SpringContextIntegrationTest.java index 4c06917325..ae91d4dc1e 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/SpringContextIntegrationTest.java +++ b/spring-mvc-java/src/test/java/com/baeldung/SpringContextIntegrationTest.java @@ -3,15 +3,12 @@ package com.baeldung; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; -import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.config.AppInitializer; +import com.baeldung.config.TestConfig; -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { AppInitializer.class }, loader = AnnotationConfigContextLoader.class) -@WebAppConfiguration +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = {TestConfig.class}) public class SpringContextIntegrationTest { @Test diff --git a/spring-mvc-java/src/test/java/com/baeldung/SpringContextTest.java b/spring-mvc-java/src/test/java/com/baeldung/SpringContextTest.java index 9777addb61..8943ecb548 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/SpringContextTest.java +++ b/spring-mvc-java/src/test/java/com/baeldung/SpringContextTest.java @@ -3,15 +3,12 @@ package com.baeldung; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; -import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.config.AppInitializer; +import com.baeldung.config.TestConfig; -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { AppInitializer.class }, loader = AnnotationConfigContextLoader.class) -@WebAppConfiguration +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = {TestConfig.class}) public class SpringContextTest { @Test From b6183e931519750033d28297113aecf2f564216c Mon Sep 17 00:00:00 2001 From: Ger Roza Date: Mon, 9 Sep 2019 08:16:40 -0300 Subject: [PATCH 16/39] [BAEL-9498] Fix failing context tests - part 2 (#7738) * fixed Spring Context Test in spring-data-rest-querydsl module * fixed spring-ejb/spring-ejb-client Context tests, removed ContextIntegrationTest and added a note to the ContextLiveTest. Plus, redefined spring-ejb-remote url in pom, it was not working properly' * Fixed Context test in spring-remoting/remoting-jms/remoting-jms-server, added notes for Live Test * Fixed Context test in spring-remoting/remoting-rmi\remoting-rmi-server, added notes for Live Test * Fixed Context test in spring-rest-query-language, added note for ContextTest and deleter ContextIntegrationTest * renamed SpringContextIntegrationTest to SpringContextTest, as per comment in BAEL-14304 --- spring-data-rest-querydsl/pom.xml | 8 ++++++- .../main/java/com/baeldung/Application.java | 3 +++ .../baeldung/SpringContextTest.java} | 8 +++++-- .../org/baeldung/SpringContextLiveTest.java | 17 -------------- .../src/test/resources/application.yml | 11 +++++++++ .../baeldung/SpringContextLiveTest.java | 7 +++++- .../SpringContextIntegrationTest.java | 17 -------------- spring-ejb/spring-ejb-remote/pom.xml | 9 ++++---- .../com/baeldung/SpringContextLiveTest.java | 23 +++++++++++++++++++ .../org/baeldung/SpringContextManualTest.java | 17 -------------- .../baeldung/SpringContextLiveTest.java | 8 ++++++- .../SpringContextIntegrationTest.java | 17 -------------- .../java/com/baeldung/SpringContextTest.java | 4 ++++ 13 files changed, 72 insertions(+), 77 deletions(-) rename spring-data-rest-querydsl/src/test/java/{org/baeldung/SpringContextIntegrationTest.java => com/baeldung/SpringContextTest.java} (60%) delete mode 100644 spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextLiveTest.java create mode 100644 spring-data-rest-querydsl/src/test/resources/application.yml rename spring-ejb/spring-ejb-client/src/test/java/{org => com}/baeldung/SpringContextLiveTest.java (71%) delete mode 100644 spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java create mode 100644 spring-remoting/remoting-jms/remoting-jms-server/src/test/java/com/baeldung/SpringContextLiveTest.java delete mode 100644 spring-remoting/remoting-jms/remoting-jms-server/src/test/java/org/baeldung/SpringContextManualTest.java rename spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/{org => com}/baeldung/SpringContextLiveTest.java (56%) delete mode 100644 spring-rest-query-language/src/test/java/com/baeldung/SpringContextIntegrationTest.java diff --git a/spring-data-rest-querydsl/pom.xml b/spring-data-rest-querydsl/pom.xml index 55ff78f0cb..2c75990c65 100644 --- a/spring-data-rest-querydsl/pom.xml +++ b/spring-data-rest-querydsl/pom.xml @@ -1,5 +1,6 @@ - 4.0.0 com.baeldung @@ -44,6 +45,11 @@ spring-boot-starter-test test + + com.h2database + h2 + test + diff --git a/spring-data-rest-querydsl/src/main/java/com/baeldung/Application.java b/spring-data-rest-querydsl/src/main/java/com/baeldung/Application.java index 28d084a4dc..4b2f567090 100644 --- a/spring-data-rest-querydsl/src/main/java/com/baeldung/Application.java +++ b/spring-data-rest-querydsl/src/main/java/com/baeldung/Application.java @@ -13,6 +13,9 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import javax.annotation.PostConstruct; +/** + * Note: In the IDE, remember to generate query type classes before running the Integration Test (e.g. in Eclipse right-click on the project > Run As > Maven generate sources) + */ @SpringBootApplication @EntityScan("com.baeldung.entity") @EnableJpaRepositories("com.baeldung.controller.repository") diff --git a/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-data-rest-querydsl/src/test/java/com/baeldung/SpringContextTest.java similarity index 60% rename from spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextIntegrationTest.java rename to spring-data-rest-querydsl/src/test/java/com/baeldung/SpringContextTest.java index 7f906bdbcd..48c4630fa5 100644 --- a/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ b/spring-data-rest-querydsl/src/test/java/com/baeldung/SpringContextTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.junit.Test; import org.junit.runner.RunWith; @@ -7,9 +7,13 @@ import org.springframework.test.context.junit4.SpringRunner; import com.baeldung.Application; +/** + * Note: In the IDE, remember to generate query type classes before running the Integration Test (e.g. in Eclipse right-click on the project > Run As > Maven generate sources) + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) -public class SpringContextIntegrationTest { +public class SpringContextTest { @Test public void whenSpringContextIsBootstrapped_thenNoExceptions() { diff --git a/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextLiveTest.java deleted file mode 100644 index 5cb0a8167e..0000000000 --- a/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextLiveTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import com.baeldung.Application; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = Application.class) -public class SpringContextLiveTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-data-rest-querydsl/src/test/resources/application.yml b/spring-data-rest-querydsl/src/test/resources/application.yml new file mode 100644 index 0000000000..33b7231838 --- /dev/null +++ b/spring-data-rest-querydsl/src/test/resources/application.yml @@ -0,0 +1,11 @@ +spring: + datasource: + url: jdbc:h2:mem:springcloud + username: sa + password: + jpa: + hibernate: + ddl-auto: create-drop + properties: + hibernate: + dialect: org.hibernate.dialect.H2Dialect \ No newline at end of file diff --git a/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-ejb/spring-ejb-client/src/test/java/com/baeldung/SpringContextLiveTest.java similarity index 71% rename from spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextLiveTest.java rename to spring-ejb/spring-ejb-client/src/test/java/com/baeldung/SpringContextLiveTest.java index bbd3b6c2ba..4d6724f10f 100644 --- a/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-ejb/spring-ejb-client/src/test/java/com/baeldung/SpringContextLiveTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.junit.Test; import org.junit.runner.RunWith; @@ -7,6 +7,11 @@ import org.springframework.test.context.junit4.SpringRunner; import com.baeldung.springejbclient.SpringEjbClientApplication; +/** + * This Live Test requires: + * * run the `spring-ejb-remote` module with the following command: `mvn clean package cargo:run -Pwildfly-standalone` + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = SpringEjbClientApplication.class) public class SpringContextLiveTest { diff --git a/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java deleted file mode 100644 index 4d2d83646d..0000000000 --- a/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import com.baeldung.springejbclient.SpringEjbClientApplication; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = SpringEjbClientApplication.class) -public class SpringContextIntegrationTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-ejb/spring-ejb-remote/pom.xml b/spring-ejb/spring-ejb-remote/pom.xml index 4f4ddb0b54..4a365180f2 100644 --- a/spring-ejb/spring-ejb-remote/pom.xml +++ b/spring-ejb/spring-ejb-remote/pom.xml @@ -1,11 +1,12 @@ - 4.0.0 spring-ejb-remote - spring-ejb-remote + spring-ejb-remote ejb - + com.baeldung.spring.ejb spring-ejb @@ -46,7 +47,7 @@ wildfly10x - http://download.jboss.org/wildfly/12.0.0.Final/wildfly-12.0.0.Final.zip + https://download.jboss.org/wildfly/12.0.0.Final/wildfly-12.0.0.Final.zip diff --git a/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/com/baeldung/SpringContextLiveTest.java b/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/com/baeldung/SpringContextLiveTest.java new file mode 100644 index 0000000000..4904873be2 --- /dev/null +++ b/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/com/baeldung/SpringContextLiveTest.java @@ -0,0 +1,23 @@ +package com.baeldung; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import com.baeldung.server.JmsServer; + +/** + * This Live Test requires: + * * the `com.baeldung:remoting-http-api:jar:1.0-SNAPSHOT` artifact accessible. For that we can run `mvn clean install` in the 'spring-remoting/remoting-http/remoting-http-api' module. + * * an ActiveMQ instance running (e.g. `docker run -p 61616:61616 -p 8161:8161 --name bael-activemq rmohr/activemq`) + * + */ +@SpringBootTest(classes = JmsServer.class) +@RunWith(SpringRunner.class) +public class SpringContextLiveTest { + + @Test + public void whenSpringContextIsBootstrapped_thenNoExceptions() { + } +} diff --git a/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/org/baeldung/SpringContextManualTest.java b/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/org/baeldung/SpringContextManualTest.java deleted file mode 100644 index b806f21c27..0000000000 --- a/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/org/baeldung/SpringContextManualTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import com.baeldung.server.JmsServer; - -@SpringBootTest(classes = JmsServer.class) -@RunWith(SpringRunner.class) -public class SpringContextManualTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/com/baeldung/SpringContextLiveTest.java similarity index 56% rename from spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/org/baeldung/SpringContextLiveTest.java rename to spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/com/baeldung/SpringContextLiveTest.java index 3bace4cd1e..73f7592dcc 100644 --- a/spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/com/baeldung/SpringContextLiveTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.junit.Test; import org.junit.runner.RunWith; @@ -7,6 +7,12 @@ import org.springframework.test.context.junit4.SpringRunner; import com.baeldung.client.RmiClient; +/** + * This Live Test requires: + * * the `com.baeldung:remoting-http-api:jar:1.0-SNAPSHOT` artifact accessible. For that we can run `mvn clean install` in the 'spring-remoting/remoting-http/remoting-http-api' module. + * * the 'spring-remoting\remoting-rmi\remoting-rmi-server' service running + * + */ @SpringBootTest(classes = RmiClient.class) @RunWith(SpringRunner.class) public class SpringContextLiveTest { diff --git a/spring-rest-query-language/src/test/java/com/baeldung/SpringContextIntegrationTest.java b/spring-rest-query-language/src/test/java/com/baeldung/SpringContextIntegrationTest.java deleted file mode 100644 index 18fabce5ca..0000000000 --- a/spring-rest-query-language/src/test/java/com/baeldung/SpringContextIntegrationTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import com.baeldung.spring.Application; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = Application.class) -public class SpringContextIntegrationTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-rest-query-language/src/test/java/com/baeldung/SpringContextTest.java b/spring-rest-query-language/src/test/java/com/baeldung/SpringContextTest.java index 57886a232a..de83fb663a 100644 --- a/spring-rest-query-language/src/test/java/com/baeldung/SpringContextTest.java +++ b/spring-rest-query-language/src/test/java/com/baeldung/SpringContextTest.java @@ -7,6 +7,10 @@ import org.springframework.test.context.junit4.SpringRunner; import com.baeldung.spring.Application; +/** + * Note: In the IDE, remember to generate query type classes before running the Integration Test (e.g. in Eclipse right-click on the project > Run As > Maven generate sources) + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) public class SpringContextTest { From 7d412feca534a00077fa2c98d647ddb6088523fc Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Mon, 9 Sep 2019 18:08:25 +0530 Subject: [PATCH 17/39] BAEL-17397 Slice 15 | The top 100 articles should have their own package in the module (#7742) --- .../com/baeldung/{custom => changeport}/CustomApplication.java | 2 +- .../baeldung/{custom => changeport}/ServerPortCustomizer.java | 2 +- .../test/java/com/baeldung/SpringContextIntegrationTest.java | 2 +- spring-rest/src/test/java/com/baeldung/SpringContextTest.java | 2 +- .../com/baeldung/{ => session}/SpringSessionApplication.java | 2 +- .../baeldung/{security => session/filter}/SessionFilter.java | 2 +- .../{spring => session/security/config}/SecSecurityConfig.java | 2 +- .../com/baeldung/{ => session}/web/SessionRestController.java | 2 +- .../com/baeldung/{spring => session/web/config}/MvcConfig.java | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) rename spring-rest/src/main/java/com/baeldung/{custom => changeport}/CustomApplication.java (92%) rename spring-rest/src/main/java/com/baeldung/{custom => changeport}/ServerPortCustomizer.java (92%) rename spring-security-mvc/src/main/java/com/baeldung/{ => session}/SpringSessionApplication.java (91%) rename spring-security-mvc/src/main/java/com/baeldung/{security => session/filter}/SessionFilter.java (97%) rename spring-security-mvc/src/main/java/com/baeldung/{spring => session/security/config}/SecSecurityConfig.java (98%) rename spring-security-mvc/src/main/java/com/baeldung/{ => session}/web/SessionRestController.java (93%) rename spring-security-mvc/src/main/java/com/baeldung/{spring => session/web/config}/MvcConfig.java (96%) diff --git a/spring-rest/src/main/java/com/baeldung/custom/CustomApplication.java b/spring-rest/src/main/java/com/baeldung/changeport/CustomApplication.java similarity index 92% rename from spring-rest/src/main/java/com/baeldung/custom/CustomApplication.java rename to spring-rest/src/main/java/com/baeldung/changeport/CustomApplication.java index 75f4d714e2..3fce0f1289 100644 --- a/spring-rest/src/main/java/com/baeldung/custom/CustomApplication.java +++ b/spring-rest/src/main/java/com/baeldung/changeport/CustomApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.custom; +package com.baeldung.changeport; import java.util.Collections; diff --git a/spring-rest/src/main/java/com/baeldung/custom/ServerPortCustomizer.java b/spring-rest/src/main/java/com/baeldung/changeport/ServerPortCustomizer.java similarity index 92% rename from spring-rest/src/main/java/com/baeldung/custom/ServerPortCustomizer.java rename to spring-rest/src/main/java/com/baeldung/changeport/ServerPortCustomizer.java index 978e7c8a82..f3610aeac6 100644 --- a/spring-rest/src/main/java/com/baeldung/custom/ServerPortCustomizer.java +++ b/spring-rest/src/main/java/com/baeldung/changeport/ServerPortCustomizer.java @@ -1,4 +1,4 @@ -package com.baeldung.custom; +package com.baeldung.changeport; import org.springframework.boot.web.server.ConfigurableWebServerFactory; import org.springframework.boot.web.server.WebServerFactoryCustomizer; diff --git a/spring-rest/src/test/java/com/baeldung/SpringContextIntegrationTest.java b/spring-rest/src/test/java/com/baeldung/SpringContextIntegrationTest.java index f04106c1e1..3c2cde4268 100644 --- a/spring-rest/src/test/java/com/baeldung/SpringContextIntegrationTest.java +++ b/spring-rest/src/test/java/com/baeldung/SpringContextIntegrationTest.java @@ -5,7 +5,7 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.custom.CustomApplication; +import com.baeldung.changeport.CustomApplication; import com.baeldung.produceimage.ImageApplication; import com.baeldung.propertyeditor.PropertyEditorApplication; import com.baeldung.responseheaders.ResponseHeadersApplication; diff --git a/spring-rest/src/test/java/com/baeldung/SpringContextTest.java b/spring-rest/src/test/java/com/baeldung/SpringContextTest.java index 4b2024e207..0f39fc3983 100644 --- a/spring-rest/src/test/java/com/baeldung/SpringContextTest.java +++ b/spring-rest/src/test/java/com/baeldung/SpringContextTest.java @@ -5,7 +5,7 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.custom.CustomApplication; +import com.baeldung.changeport.CustomApplication; import com.baeldung.produceimage.ImageApplication; import com.baeldung.propertyeditor.PropertyEditorApplication; import com.baeldung.responseheaders.ResponseHeadersApplication; diff --git a/spring-security-mvc/src/main/java/com/baeldung/SpringSessionApplication.java b/spring-security-mvc/src/main/java/com/baeldung/session/SpringSessionApplication.java similarity index 91% rename from spring-security-mvc/src/main/java/com/baeldung/SpringSessionApplication.java rename to spring-security-mvc/src/main/java/com/baeldung/session/SpringSessionApplication.java index c2a4b35df0..ec1ba8dcd9 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/SpringSessionApplication.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/SpringSessionApplication.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.session; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-security-mvc/src/main/java/com/baeldung/security/SessionFilter.java b/spring-security-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java similarity index 97% rename from spring-security-mvc/src/main/java/com/baeldung/security/SessionFilter.java rename to spring-security-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java index f4f876af9c..c30bfa5506 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/security/SessionFilter.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.security; +package com.baeldung.session.filter; import java.io.IOException; import java.util.Arrays; diff --git a/spring-security-mvc/src/main/java/com/baeldung/spring/SecSecurityConfig.java b/spring-security-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java similarity index 98% rename from spring-security-mvc/src/main/java/com/baeldung/spring/SecSecurityConfig.java rename to spring-security-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java index a922ba6f7f..35b53a0e7f 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/spring/SecSecurityConfig.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java @@ -1,4 +1,4 @@ -package com.baeldung.spring; +package com.baeldung.session.security.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-security-mvc/src/main/java/com/baeldung/web/SessionRestController.java b/spring-security-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java similarity index 93% rename from spring-security-mvc/src/main/java/com/baeldung/web/SessionRestController.java rename to spring-security-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java index 1353ee25d0..82199a9e4e 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/web/SessionRestController.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java @@ -1,4 +1,4 @@ -package com.baeldung.web; +package com.baeldung.session.web; import javax.servlet.http.HttpSession; diff --git a/spring-security-mvc/src/main/java/com/baeldung/spring/MvcConfig.java b/spring-security-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java similarity index 96% rename from spring-security-mvc/src/main/java/com/baeldung/spring/MvcConfig.java rename to spring-security-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java index 38a4f3f81b..4db6d07872 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/spring/MvcConfig.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java @@ -1,4 +1,4 @@ -package com.baeldung.spring; +package com.baeldung.session.web.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; From ba001ed4a2076714a9f3389c99a562e923211625 Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 9 Sep 2019 13:57:25 +0100 Subject: [PATCH 18/39] Examples for 'Finding the difference between two strings in Java' (#7625) * initial commit * Reformatting and addressing review comments * Examples for 'Finding the difference between two strings in Java' * Removing evaluation article code * Adding benchmarks * Removing performance tests from unit test class * upgrading diff-match-patch version * making benchmark methods return a value * Moving code to java-strings-3 * Moving stuff around * New unit test format --- java-strings-3/pom.xml | 6 ++ .../StringDiffBenchmarkUnitTest.java | 73 +++++++++++++++++++ .../stringdiff/StringDiffUnitTest.java | 39 ++++++++++ 3 files changed, 118 insertions(+) create mode 100644 java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java create mode 100644 java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java diff --git a/java-strings-3/pom.xml b/java-strings-3/pom.xml index 1e5f757943..4589780c15 100644 --- a/java-strings-3/pom.xml +++ b/java-strings-3/pom.xml @@ -68,6 +68,12 @@ ${assertj.version} test + + org.bitbucket.cowwoc + diff-match-patch + 1.2 + test + diff --git a/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java b/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java new file mode 100644 index 0000000000..20e87a1f4e --- /dev/null +++ b/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java @@ -0,0 +1,73 @@ +package com.baeldung.stringdiff; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import org.apache.commons.lang3.RandomStringUtils; +import org.apache.commons.lang3.StringUtils; +import org.bitbucket.cowwoc.diffmatchpatch.DiffMatchPatch; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +@BenchmarkMode(Mode.AverageTime) +@OutputTimeUnit(TimeUnit.MILLISECONDS) +@State(Scope.Benchmark) +public class StringDiffBenchmarkUnitTest { + + private DiffMatchPatch diffMatchPatch = new DiffMatchPatch(); + + private List inputs = randomizeInputs(10000); + + public static void main(String[] args) throws RunnerException { + Options opts = new OptionsBuilder().include(".*") + .warmupIterations(1) + .measurementIterations(50) + .jvmArgs("-Xms2g", "-Xmx2g") + .shouldDoGC(true) + .forks(1) + .build(); + + new Runner(opts).run(); + } + + @Benchmark + public int diffMatchPatch() { + for (int i = 0; i < inputs.size() - 1; i++) { + diffMatchPatch.diffMain(inputs.get(i), inputs.get(i + 1), false); + } + return inputs.size(); + } + + @Benchmark + public int stringUtils() { + for (int i = 0; i < inputs.size() - 1; i++) { + StringUtils.difference(inputs.get(i), inputs.get(i + 1)); + } + return inputs.size(); + } + + /** + * Creates a list of a given size, containing 30 character long strings, + * each starting with a static prefix of 10 characters and followed by + * a random 20 character suffix + * + * @return a {@link List} of randomised strings + */ + private List randomizeInputs(int size) { + String staticPart = "ABCDEF1234"; + List inputs = new ArrayList<>(); + for (int i = 0; i < size; i++) { + inputs.add(staticPart + RandomStringUtils.randomAlphabetic(20)); + } + return inputs; + } +} diff --git a/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java b/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java new file mode 100644 index 0000000000..94b7deb64d --- /dev/null +++ b/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java @@ -0,0 +1,39 @@ +package com.baeldung.stringdiff; + +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; + +import org.apache.commons.lang3.StringUtils; +import org.bitbucket.cowwoc.diffmatchpatch.DiffMatchPatch; +import org.bitbucket.cowwoc.diffmatchpatch.DiffMatchPatch.Operation; +import org.junit.Test; + +public class StringDiffUnitTest { + + private DiffMatchPatch diffMatchPatch = new DiffMatchPatch(); + + // Test samples + private final String text1 = "ABCDELMN"; + private final String text2 = "ABCFGLMN"; + + @Test + public void givenTwoStrings_whenDiffMatchPatch_thenReturnCorrectDiff() { + assertThat(diffMatchPatch.diffMain(text1, text2, false), containsInAnyOrder( + new DiffMatchPatch.Diff(Operation.EQUAL, "ABC"), + new DiffMatchPatch.Diff(Operation.DELETE, "DE"), + new DiffMatchPatch.Diff(Operation.INSERT, "FG"), + new DiffMatchPatch.Diff(Operation.EQUAL, "LMN"))); + assertThat(diffMatchPatch.diffMain(text2, text1, false), containsInAnyOrder( + new DiffMatchPatch.Diff(Operation.EQUAL, "ABC"), + new DiffMatchPatch.Diff(Operation.INSERT, "DE"), + new DiffMatchPatch.Diff(Operation.DELETE, "FG"), + new DiffMatchPatch.Diff(Operation.EQUAL, "LMN"))); + } + + @Test + public void givenTwoStrings_whenStringUtilsDifference_thenReturnCorrectDiff() { + assertThat(StringUtils.difference(text1, text2), is("FGLMN")); + assertThat(StringUtils.difference(text2, text1), is("DELMN")); + } +} From 284448b8c98ec270f6d94f395e77c4c7929a3f0f Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Mon, 9 Sep 2019 18:50:01 +0530 Subject: [PATCH 19/39] BAEL-17438 Slice 17 | The top 100 articles should have their own package in the module (#7748) --- .../baeldung/{file => readfile}/FileOperationsManualTest.java | 2 +- .../java/com/baeldung/lombok/{getter => intro}/GetterLazy.java | 2 +- .../resttemplate/{ => postjson}/PersonAPILiveTest.java | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) rename core-java-modules/core-java-io/src/test/java/com/baeldung/{file => readfile}/FileOperationsManualTest.java (99%) rename lombok/src/main/java/com/baeldung/lombok/{getter => intro}/GetterLazy.java (96%) rename spring-resttemplate/src/test/java/org/baeldung/resttemplate/{ => postjson}/PersonAPILiveTest.java (96%) diff --git a/core-java-modules/core-java-io/src/test/java/com/baeldung/file/FileOperationsManualTest.java b/core-java-modules/core-java-io/src/test/java/com/baeldung/readfile/FileOperationsManualTest.java similarity index 99% rename from core-java-modules/core-java-io/src/test/java/com/baeldung/file/FileOperationsManualTest.java rename to core-java-modules/core-java-io/src/test/java/com/baeldung/readfile/FileOperationsManualTest.java index e781489808..b837c6b4dd 100644 --- a/core-java-modules/core-java-io/src/test/java/com/baeldung/file/FileOperationsManualTest.java +++ b/core-java-modules/core-java-io/src/test/java/com/baeldung/readfile/FileOperationsManualTest.java @@ -1,4 +1,4 @@ -package com.baeldung.file; +package com.baeldung.readfile; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; diff --git a/lombok/src/main/java/com/baeldung/lombok/getter/GetterLazy.java b/lombok/src/main/java/com/baeldung/lombok/intro/GetterLazy.java similarity index 96% rename from lombok/src/main/java/com/baeldung/lombok/getter/GetterLazy.java rename to lombok/src/main/java/com/baeldung/lombok/intro/GetterLazy.java index 604c45be3b..8397aeb759 100644 --- a/lombok/src/main/java/com/baeldung/lombok/getter/GetterLazy.java +++ b/lombok/src/main/java/com/baeldung/lombok/intro/GetterLazy.java @@ -1,4 +1,4 @@ -package com.baeldung.lombok.getter; +package com.baeldung.lombok.intro; import java.util.HashMap; import java.util.List; diff --git a/spring-resttemplate/src/test/java/org/baeldung/resttemplate/PersonAPILiveTest.java b/spring-resttemplate/src/test/java/org/baeldung/resttemplate/postjson/PersonAPILiveTest.java similarity index 96% rename from spring-resttemplate/src/test/java/org/baeldung/resttemplate/PersonAPILiveTest.java rename to spring-resttemplate/src/test/java/org/baeldung/resttemplate/postjson/PersonAPILiveTest.java index de18f6db09..1347cb0c7a 100644 --- a/spring-resttemplate/src/test/java/org/baeldung/resttemplate/PersonAPILiveTest.java +++ b/spring-resttemplate/src/test/java/org/baeldung/resttemplate/postjson/PersonAPILiveTest.java @@ -1,10 +1,11 @@ -package org.baeldung.resttemplate; +package org.baeldung.resttemplate.postjson; import static org.junit.Assert.assertNotNull; import java.io.IOException; import java.net.URI; +import org.baeldung.resttemplate.RestTemplateConfigurationApplication; import org.baeldung.resttemplate.web.dto.Person; import org.json.JSONException; import org.json.JSONObject; From 2f5dcfaa650894bce6bc6e11882c8acac8d696dd Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Mon, 9 Sep 2019 19:01:22 +0530 Subject: [PATCH 20/39] BAEL-17393 Slice 14 | The top 100 articles should have their own package in the module (#7729) -Moved code snippets to proper packages --- .../jackson/{ => exception}/test/JacksonExceptionsUnitTest.java | 2 +- .../ApplicationWithHikariConnectionPool.java | 2 +- .../{connectionpool => hikari}/HikariIntegrationTest.java | 2 +- .../ApplicationWithHikariConnectionPool.java | 2 +- .../{connectionpool => hikari}/HikariIntegrationTest.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) rename jackson/src/test/java/com/baeldung/jackson/{ => exception}/test/JacksonExceptionsUnitTest.java (99%) rename spring-4/src/test/java/com/baeldung/{connectionpool => hikari}/ApplicationWithHikariConnectionPool.java (89%) rename spring-4/src/test/java/com/baeldung/{connectionpool => hikari}/HikariIntegrationTest.java (95%) rename spring-5/src/test/java/com/baeldung/{connectionpool => hikari}/ApplicationWithHikariConnectionPool.java (89%) rename spring-5/src/test/java/com/baeldung/{connectionpool => hikari}/HikariIntegrationTest.java (94%) diff --git a/jackson/src/test/java/com/baeldung/jackson/test/JacksonExceptionsUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/exception/test/JacksonExceptionsUnitTest.java similarity index 99% rename from jackson/src/test/java/com/baeldung/jackson/test/JacksonExceptionsUnitTest.java rename to jackson/src/test/java/com/baeldung/jackson/exception/test/JacksonExceptionsUnitTest.java index cd2c2925d6..dd0fe8dc56 100644 --- a/jackson/src/test/java/com/baeldung/jackson/test/JacksonExceptionsUnitTest.java +++ b/jackson/src/test/java/com/baeldung/jackson/exception/test/JacksonExceptionsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.test; +package com.baeldung.jackson.exception.test; import static org.hamcrest.Matchers.containsString; import static org.junit.Assert.assertEquals; diff --git a/spring-4/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java b/spring-4/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java similarity index 89% rename from spring-4/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java rename to spring-4/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java index 0bd8637681..7f8736ae87 100644 --- a/spring-4/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java +++ b/spring-4/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java @@ -1,4 +1,4 @@ -package com.baeldung.connectionpool; +package com.baeldung.hikari; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-4/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java b/spring-4/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java similarity index 95% rename from spring-4/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java rename to spring-4/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java index 0cc876d5b1..e3ed608521 100644 --- a/spring-4/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java +++ b/spring-4/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java @@ -1,4 +1,4 @@ -package com.baeldung.connectionpool; +package com.baeldung.hikari; import static org.junit.Assert.*; diff --git a/spring-5/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java b/spring-5/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java similarity index 89% rename from spring-5/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java rename to spring-5/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java index 0bd8637681..7f8736ae87 100644 --- a/spring-5/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java +++ b/spring-5/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java @@ -1,4 +1,4 @@ -package com.baeldung.connectionpool; +package com.baeldung.hikari; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-5/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java b/spring-5/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java similarity index 94% rename from spring-5/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java rename to spring-5/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java index d91cca85ee..0c4b91bd8a 100644 --- a/spring-5/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java +++ b/spring-5/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java @@ -1,4 +1,4 @@ -package com.baeldung.connectionpool; +package com.baeldung.hikari; import static org.junit.Assert.*; From d5abe46c2515b0b645c5548aca2db2b025f681ac Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Mon, 9 Sep 2019 19:02:09 +0530 Subject: [PATCH 21/39] BAEL-17449 Slice 19 | The top 100 articles should have their own package in the module (#7755) --- .../baeldung/{spring/config => scopes}/ScopesConfig.java | 4 +--- .../application/Application.java | 7 ++++--- .../application/controllers/UserController.java | 7 ++++--- .../application/entities/User.java | 2 +- .../application/repositories/UserRepository.java | 5 +++-- .../application/UserControllerIntegrationTest.java | 7 ++++--- 6 files changed, 17 insertions(+), 15 deletions(-) rename spring-all/src/main/java/org/baeldung/{spring/config => scopes}/ScopesConfig.java (94%) rename spring-boot/src/main/java/com/baeldung/{validation => beanvalidation}/application/Application.java (78%) rename spring-boot/src/main/java/com/baeldung/{validation => beanvalidation}/application/controllers/UserController.java (87%) rename spring-boot/src/main/java/com/baeldung/{validation => beanvalidation}/application/entities/User.java (90%) rename spring-boot/src/main/java/com/baeldung/{validation => beanvalidation}/application/repositories/UserRepository.java (59%) rename spring-boot/src/test/java/com/baeldung/{validation => beanvalidation}/application/UserControllerIntegrationTest.java (91%) diff --git a/spring-all/src/main/java/org/baeldung/spring/config/ScopesConfig.java b/spring-all/src/main/java/org/baeldung/scopes/ScopesConfig.java similarity index 94% rename from spring-all/src/main/java/org/baeldung/spring/config/ScopesConfig.java rename to spring-all/src/main/java/org/baeldung/scopes/ScopesConfig.java index b5fe494ee2..11d3806b6e 100644 --- a/spring-all/src/main/java/org/baeldung/spring/config/ScopesConfig.java +++ b/spring-all/src/main/java/org/baeldung/scopes/ScopesConfig.java @@ -1,7 +1,5 @@ -package org.baeldung.spring.config; +package org.baeldung.scopes; -import org.baeldung.scopes.HelloMessageGenerator; -import org.baeldung.scopes.Person; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; diff --git a/spring-boot/src/main/java/com/baeldung/validation/application/Application.java b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/Application.java similarity index 78% rename from spring-boot/src/main/java/com/baeldung/validation/application/Application.java rename to spring-boot/src/main/java/com/baeldung/beanvalidation/application/Application.java index af8f768193..b37eec9da0 100644 --- a/spring-boot/src/main/java/com/baeldung/validation/application/Application.java +++ b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/Application.java @@ -1,7 +1,8 @@ -package com.baeldung.validation.application; +package com.baeldung.beanvalidation.application; + +import com.baeldung.beanvalidation.application.entities.User; +import com.baeldung.beanvalidation.application.repositories.UserRepository; -import com.baeldung.validation.application.entities.User; -import com.baeldung.validation.application.repositories.UserRepository; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-boot/src/main/java/com/baeldung/validation/application/controllers/UserController.java b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/controllers/UserController.java similarity index 87% rename from spring-boot/src/main/java/com/baeldung/validation/application/controllers/UserController.java rename to spring-boot/src/main/java/com/baeldung/beanvalidation/application/controllers/UserController.java index a4aeefb70b..0c47e27e25 100644 --- a/spring-boot/src/main/java/com/baeldung/validation/application/controllers/UserController.java +++ b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/controllers/UserController.java @@ -1,7 +1,8 @@ -package com.baeldung.validation.application.controllers; +package com.baeldung.beanvalidation.application.controllers; + +import com.baeldung.beanvalidation.application.entities.User; +import com.baeldung.beanvalidation.application.repositories.UserRepository; -import com.baeldung.validation.application.entities.User; -import com.baeldung.validation.application.repositories.UserRepository; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/spring-boot/src/main/java/com/baeldung/validation/application/entities/User.java b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/entities/User.java similarity index 90% rename from spring-boot/src/main/java/com/baeldung/validation/application/entities/User.java rename to spring-boot/src/main/java/com/baeldung/beanvalidation/application/entities/User.java index 529368f132..8233d08f4e 100644 --- a/spring-boot/src/main/java/com/baeldung/validation/application/entities/User.java +++ b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/entities/User.java @@ -1,4 +1,4 @@ -package com.baeldung.validation.application.entities; +package com.baeldung.beanvalidation.application.entities; import javax.persistence.Entity; import javax.persistence.GeneratedValue; diff --git a/spring-boot/src/main/java/com/baeldung/validation/application/repositories/UserRepository.java b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/repositories/UserRepository.java similarity index 59% rename from spring-boot/src/main/java/com/baeldung/validation/application/repositories/UserRepository.java rename to spring-boot/src/main/java/com/baeldung/beanvalidation/application/repositories/UserRepository.java index b579addcaa..8bf7a9f8b2 100644 --- a/spring-boot/src/main/java/com/baeldung/validation/application/repositories/UserRepository.java +++ b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/repositories/UserRepository.java @@ -1,8 +1,9 @@ -package com.baeldung.validation.application.repositories; +package com.baeldung.beanvalidation.application.repositories; -import com.baeldung.validation.application.entities.User; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; +import com.baeldung.beanvalidation.application.entities.User; + @Repository public interface UserRepository extends CrudRepository {} diff --git a/spring-boot/src/test/java/com/baeldung/validation/application/UserControllerIntegrationTest.java b/spring-boot/src/test/java/com/baeldung/beanvalidation/application/UserControllerIntegrationTest.java similarity index 91% rename from spring-boot/src/test/java/com/baeldung/validation/application/UserControllerIntegrationTest.java rename to spring-boot/src/test/java/com/baeldung/beanvalidation/application/UserControllerIntegrationTest.java index 77a230ee6c..07d9b0807e 100644 --- a/spring-boot/src/test/java/com/baeldung/validation/application/UserControllerIntegrationTest.java +++ b/spring-boot/src/test/java/com/baeldung/beanvalidation/application/UserControllerIntegrationTest.java @@ -1,7 +1,8 @@ -package com.baeldung.validation.application; +package com.baeldung.beanvalidation.application; + +import com.baeldung.beanvalidation.application.controllers.UserController; +import com.baeldung.beanvalidation.application.repositories.UserRepository; -import com.baeldung.validation.application.controllers.UserController; -import com.baeldung.validation.application.repositories.UserRepository; import java.nio.charset.Charset; import static org.assertj.core.api.Assertions.assertThat; import org.hamcrest.core.Is; From 5ba18b2ec7853b52ad7210dc8a26f58dc660ead4 Mon Sep 17 00:00:00 2001 From: KevinGilmore Date: Mon, 9 Sep 2019 21:45:01 -0500 Subject: [PATCH 22/39] BAEL-3149 and BAEL-3043 add links back to articles (#7765) * BAEL-2246: add link back to article * BAEL-2174: rename core-java-net module to core-java-networking * BAEL-2174: add link back to article * BAEL-2363 BAEL-2337 BAEL-1996 BAEL-2277 add links back to articles * BAEL-2367: add link back to article * BAEL-2335: add link back to article * BAEL-2413: add link back to article * Update README.MD * BAEL-2577: add link back to article * BAEL-2490: add link back to article * BAEL-2471: add link back to article * BAEL-2583: add link back to article * BAEL-2738: add link back to article * BAEL-2711: Add spring-boot-angular module to root pom * BAEL-2544 BAEL-2711 BAEL-2575 BAEL-2657 Add links back to articles * BAEL-2736: Add link back to article * BAEL-2789: Add link back to article * BAEL-2489: add link back to article * BAEL-2840: add link back to article * BAEL-2655: add link back to article * BAEL-2884: add link back to article * BAEL-2985: Fix Spring Boot Apps in spring-data-rest module * BAEL-2898 BAEL-3057 BAEL-3020 add links back to articles * BAEL-3126 BAEL-2463 README * BAEL-2989: add README * BAEL-3149 BAEL-3043 update README --- core-java-modules/core-java-lang-oop-2/README.md | 1 + persistence-modules/java-cassandra/README.md | 1 + 2 files changed, 2 insertions(+) diff --git a/core-java-modules/core-java-lang-oop-2/README.md b/core-java-modules/core-java-lang-oop-2/README.md index 72c3c6742b..5c615c25df 100644 --- a/core-java-modules/core-java-lang-oop-2/README.md +++ b/core-java-modules/core-java-lang-oop-2/README.md @@ -7,3 +7,4 @@ - [Cannot Reference “X” Before Supertype Constructor Has Been Called](https://www.baeldung.com/java-cannot-reference-x-before-supertype-constructor-error) - [Anonymous Classes in Java](https://www.baeldung.com/java-anonymous-classes) - [Raw Types in Java](https://www.baeldung.com/raw-types-java) +- [Java ‘private’ Access Modifier](https://www.baeldung.com/java-private-keyword) diff --git a/persistence-modules/java-cassandra/README.md b/persistence-modules/java-cassandra/README.md index 3ab6f5f099..f3710c9d69 100644 --- a/persistence-modules/java-cassandra/README.md +++ b/persistence-modules/java-cassandra/README.md @@ -1,2 +1,3 @@ ### Relevant Articles: - [A Guide to Cassandra with Java](http://www.baeldung.com/cassandra-with-java) +- [Intro to DataStax Java Driver for Apache Cassandra](https://www.baeldung.com/cassandra-datastax-java-driver) From 4cfb4b8d252c3fe0ac5675652fd4d3d1174e185f Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Tue, 10 Sep 2019 17:12:41 +0530 Subject: [PATCH 23/39] BAEL-17439 Slice 18 | The top 100 articles should have their own package in the module (#7754) --- .../com/baeldung/{definition => springbean}/Config.java | 7 ++++--- .../{definition => springbean}/domain/Address.java | 2 +- .../{definition => springbean}/domain/Company.java | 2 +- .../SpringBeanIntegrationTest.java | 7 ++++--- 4 files changed, 10 insertions(+), 8 deletions(-) rename spring-core/src/main/java/com/baeldung/{definition => springbean}/Config.java (74%) rename spring-core/src/main/java/com/baeldung/{definition => springbean}/domain/Address.java (84%) rename spring-core/src/main/java/com/baeldung/{definition => springbean}/domain/Company.java (84%) rename spring-core/src/test/java/com/baeldung/{definition => springbean}/SpringBeanIntegrationTest.java (88%) diff --git a/spring-core/src/main/java/com/baeldung/definition/Config.java b/spring-core/src/main/java/com/baeldung/springbean/Config.java similarity index 74% rename from spring-core/src/main/java/com/baeldung/definition/Config.java rename to spring-core/src/main/java/com/baeldung/springbean/Config.java index 126e6259ca..27275dbb0f 100644 --- a/spring-core/src/main/java/com/baeldung/definition/Config.java +++ b/spring-core/src/main/java/com/baeldung/springbean/Config.java @@ -1,11 +1,12 @@ -package com.baeldung.definition; +package com.baeldung.springbean; -import com.baeldung.definition.domain.Address; -import com.baeldung.definition.domain.Company; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import com.baeldung.springbean.domain.Address; +import com.baeldung.springbean.domain.Company; + @Configuration @ComponentScan(basePackageClasses = Company.class) public class Config { diff --git a/spring-core/src/main/java/com/baeldung/definition/domain/Address.java b/spring-core/src/main/java/com/baeldung/springbean/domain/Address.java similarity index 84% rename from spring-core/src/main/java/com/baeldung/definition/domain/Address.java rename to spring-core/src/main/java/com/baeldung/springbean/domain/Address.java index 91be18398e..5704be4bf8 100644 --- a/spring-core/src/main/java/com/baeldung/definition/domain/Address.java +++ b/spring-core/src/main/java/com/baeldung/springbean/domain/Address.java @@ -1,4 +1,4 @@ -package com.baeldung.definition.domain; +package com.baeldung.springbean.domain; import lombok.Data; diff --git a/spring-core/src/main/java/com/baeldung/definition/domain/Company.java b/spring-core/src/main/java/com/baeldung/springbean/domain/Company.java similarity index 84% rename from spring-core/src/main/java/com/baeldung/definition/domain/Company.java rename to spring-core/src/main/java/com/baeldung/springbean/domain/Company.java index eabde8afdf..68c177dab7 100644 --- a/spring-core/src/main/java/com/baeldung/definition/domain/Company.java +++ b/spring-core/src/main/java/com/baeldung/springbean/domain/Company.java @@ -1,4 +1,4 @@ -package com.baeldung.definition.domain; +package com.baeldung.springbean.domain; import lombok.Data; import org.springframework.stereotype.Component; diff --git a/spring-core/src/test/java/com/baeldung/definition/SpringBeanIntegrationTest.java b/spring-core/src/test/java/com/baeldung/springbean/SpringBeanIntegrationTest.java similarity index 88% rename from spring-core/src/test/java/com/baeldung/definition/SpringBeanIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/springbean/SpringBeanIntegrationTest.java index 0057611308..e148ab2dd9 100644 --- a/spring-core/src/test/java/com/baeldung/definition/SpringBeanIntegrationTest.java +++ b/spring-core/src/test/java/com/baeldung/springbean/SpringBeanIntegrationTest.java @@ -1,11 +1,12 @@ -package com.baeldung.definition; +package com.baeldung.springbean; + +import static org.junit.Assert.assertEquals; -import com.baeldung.definition.domain.Company; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import static org.junit.Assert.assertEquals; +import com.baeldung.springbean.domain.Company; public class SpringBeanIntegrationTest { @Test From fe94b6237563a786e674cb1542a87d9ffd9ed29e Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Tue, 10 Sep 2019 17:13:16 +0530 Subject: [PATCH 24/39] BAEL-17450 Slice 20 | The top 100 articles should have their own package in the module (#7757) --- .../java/org/baeldung/{web => errorhandling}/ApiError.java | 2 +- .../{web => errorhandling}/CustomRestExceptionHandler.java | 2 +- .../java/org/baeldung/{web => errorhandling}/FooLiveTest.java | 4 +++- .../baeldung/mockito/{ => spy}/MockitoSpyIntegrationTest.java | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) rename spring-security-rest/src/main/java/org/baeldung/{web => errorhandling}/ApiError.java (97%) rename spring-security-rest/src/main/java/org/baeldung/{web => errorhandling}/CustomRestExceptionHandler.java (99%) rename spring-security-rest/src/test/java/org/baeldung/{web => errorhandling}/FooLiveTest.java (96%) rename testing-modules/mockito/src/test/java/org/baeldung/mockito/{ => spy}/MockitoSpyIntegrationTest.java (98%) diff --git a/spring-security-rest/src/main/java/org/baeldung/web/ApiError.java b/spring-security-rest/src/main/java/org/baeldung/errorhandling/ApiError.java similarity index 97% rename from spring-security-rest/src/main/java/org/baeldung/web/ApiError.java rename to spring-security-rest/src/main/java/org/baeldung/errorhandling/ApiError.java index e1c58da64a..8a1ddd8882 100644 --- a/spring-security-rest/src/main/java/org/baeldung/web/ApiError.java +++ b/spring-security-rest/src/main/java/org/baeldung/errorhandling/ApiError.java @@ -1,4 +1,4 @@ -package org.baeldung.web; +package org.baeldung.errorhandling; import java.util.Arrays; import java.util.List; diff --git a/spring-security-rest/src/main/java/org/baeldung/web/CustomRestExceptionHandler.java b/spring-security-rest/src/main/java/org/baeldung/errorhandling/CustomRestExceptionHandler.java similarity index 99% rename from spring-security-rest/src/main/java/org/baeldung/web/CustomRestExceptionHandler.java rename to spring-security-rest/src/main/java/org/baeldung/errorhandling/CustomRestExceptionHandler.java index 71b1a4775e..cd4d58e60c 100644 --- a/spring-security-rest/src/main/java/org/baeldung/web/CustomRestExceptionHandler.java +++ b/spring-security-rest/src/main/java/org/baeldung/errorhandling/CustomRestExceptionHandler.java @@ -1,4 +1,4 @@ -package org.baeldung.web; +package org.baeldung.errorhandling; import java.util.ArrayList; import java.util.List; diff --git a/spring-security-rest/src/test/java/org/baeldung/web/FooLiveTest.java b/spring-security-rest/src/test/java/org/baeldung/errorhandling/FooLiveTest.java similarity index 96% rename from spring-security-rest/src/test/java/org/baeldung/web/FooLiveTest.java rename to spring-security-rest/src/test/java/org/baeldung/errorhandling/FooLiveTest.java index 86beeb46a9..8d1db5736f 100644 --- a/spring-security-rest/src/test/java/org/baeldung/web/FooLiveTest.java +++ b/spring-security-rest/src/test/java/org/baeldung/errorhandling/FooLiveTest.java @@ -1,8 +1,10 @@ -package org.baeldung.web; +package org.baeldung.errorhandling; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import org.baeldung.errorhandling.ApiError; +import org.baeldung.web.TestConfig; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.http.HttpStatus; diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoSpyIntegrationTest.java b/testing-modules/mockito/src/test/java/org/baeldung/mockito/spy/MockitoSpyIntegrationTest.java similarity index 98% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoSpyIntegrationTest.java rename to testing-modules/mockito/src/test/java/org/baeldung/mockito/spy/MockitoSpyIntegrationTest.java index 118d50ea40..d0b838a789 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoSpyIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/org/baeldung/mockito/spy/MockitoSpyIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung.mockito; +package org.baeldung.mockito.spy; import static org.junit.Assert.assertEquals; From dc1cd98cd01e3739a5399f758d0fe4da108f2f01 Mon Sep 17 00:00:00 2001 From: Vivek Date: Tue, 10 Sep 2019 20:06:37 +0530 Subject: [PATCH 25/39] BAEL-3194: Radix Sort in Java (changed the method name to comply with site standards) (#7761) --- .../main/java/com/baeldung/algorithms/radixsort/RadixSort.java | 2 +- .../com/baeldung/algorithms/radixsort/RadixSortUnitTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/algorithms-sorting/src/main/java/com/baeldung/algorithms/radixsort/RadixSort.java b/algorithms-sorting/src/main/java/com/baeldung/algorithms/radixsort/RadixSort.java index 26c5c9a486..723a2f5a80 100644 --- a/algorithms-sorting/src/main/java/com/baeldung/algorithms/radixsort/RadixSort.java +++ b/algorithms-sorting/src/main/java/com/baeldung/algorithms/radixsort/RadixSort.java @@ -29,7 +29,7 @@ public class RadixSort { frequency[digit]++; } - for (int i = 1; i < 10; i++) { + for (int i = 1; i < range; i++) { frequency[i] += frequency[i - 1]; } diff --git a/algorithms-sorting/src/test/java/com/baeldung/algorithms/radixsort/RadixSortUnitTest.java b/algorithms-sorting/src/test/java/com/baeldung/algorithms/radixsort/RadixSortUnitTest.java index f1b50f5c99..0f6c751ade 100644 --- a/algorithms-sorting/src/test/java/com/baeldung/algorithms/radixsort/RadixSortUnitTest.java +++ b/algorithms-sorting/src/test/java/com/baeldung/algorithms/radixsort/RadixSortUnitTest.java @@ -7,7 +7,7 @@ import org.junit.Test; public class RadixSortUnitTest { @Test - public void givenUnsortedArrayWhenRadixSortThenArraySorted() { + public void givenUnsortedArray_whenRadixSort_thenArraySorted() { int[] numbers = { 387, 468, 134, 123, 68, 221, 769, 37, 7 }; RadixSort.sort(numbers); int[] numbersSorted = { 7, 37, 68, 123, 134, 221, 387, 468, 769 }; From 4a3ca6804797f8364db4caf5686a5fa04df2e8cf Mon Sep 17 00:00:00 2001 From: Sjmillington Date: Tue, 10 Sep 2019 16:52:28 +0100 Subject: [PATCH 26/39] [BAEL-16643] Split guava module --- guava-io/README.md | 4 +++ guava-io/pom.xml | 26 +++++++++++++++++++ .../GuavaCountingOutputStreamUnitTest.java | 0 .../com}/baeldung/guava/GuavaIOUnitTest.java | 0 guava/README.md | 9 ++----- guava/pom.xml | 9 +------ libraries-testing/README.md | 4 ++- libraries-testing/pom.xml | 8 ++++++ .../java/com}/baeldung/hamcrest/Animal.java | 0 .../test/java/com}/baeldung/hamcrest/Cat.java | 0 .../hamcrest/HamcrestMatcherUnitTest.java | 0 .../baeldung/hamcrest/IsPositiveInteger.java | 0 .../java/com}/baeldung/hamcrest/Person.java | 0 .../java/com}/baeldung/hamcrest/README.md | 0 pom.xml | 2 ++ 15 files changed, 46 insertions(+), 16 deletions(-) create mode 100644 guava-io/README.md create mode 100644 guava-io/pom.xml rename {guava/src/test/java/org => guava-io/src/main/test/java/com}/baeldung/guava/GuavaCountingOutputStreamUnitTest.java (100%) rename {guava/src/test/java/org => guava-io/src/main/test/java/com}/baeldung/guava/GuavaIOUnitTest.java (100%) rename {guava/src/test/java/org => libraries-testing/src/test/java/com}/baeldung/hamcrest/Animal.java (100%) rename {guava/src/test/java/org => libraries-testing/src/test/java/com}/baeldung/hamcrest/Cat.java (100%) rename {guava/src/test/java/org => libraries-testing/src/test/java/com}/baeldung/hamcrest/HamcrestMatcherUnitTest.java (100%) rename {guava/src/test/java/org => libraries-testing/src/test/java/com}/baeldung/hamcrest/IsPositiveInteger.java (100%) rename {guava/src/test/java/org => libraries-testing/src/test/java/com}/baeldung/hamcrest/Person.java (100%) rename {guava/src/test/java/org => libraries-testing/src/test/java/com}/baeldung/hamcrest/README.md (100%) diff --git a/guava-io/README.md b/guava-io/README.md new file mode 100644 index 0000000000..df7775a36d --- /dev/null +++ b/guava-io/README.md @@ -0,0 +1,4 @@ +### Relevant Articles: + +- [Using Guava CountingOutputStream](http://www.baeldung.com/guava-counting-outputstream) +- [Guava – Write to File, Read from File](http://www.baeldung.com/guava-write-to-file-read-from-file) diff --git a/guava-io/pom.xml b/guava-io/pom.xml new file mode 100644 index 0000000000..2a66baba80 --- /dev/null +++ b/guava-io/pom.xml @@ -0,0 +1,26 @@ + + 4.0.0 + com.baeldung + guava-io + 0.1.0-SNAPSHOT + guava-io + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../parent-java + + + + guava-io + + + src/main/resources + true + + + + + \ No newline at end of file diff --git a/guava/src/test/java/org/baeldung/guava/GuavaCountingOutputStreamUnitTest.java b/guava-io/src/main/test/java/com/baeldung/guava/GuavaCountingOutputStreamUnitTest.java similarity index 100% rename from guava/src/test/java/org/baeldung/guava/GuavaCountingOutputStreamUnitTest.java rename to guava-io/src/main/test/java/com/baeldung/guava/GuavaCountingOutputStreamUnitTest.java diff --git a/guava/src/test/java/org/baeldung/guava/GuavaIOUnitTest.java b/guava-io/src/main/test/java/com/baeldung/guava/GuavaIOUnitTest.java similarity index 100% rename from guava/src/test/java/org/baeldung/guava/GuavaIOUnitTest.java rename to guava-io/src/main/test/java/com/baeldung/guava/GuavaIOUnitTest.java diff --git a/guava/README.md b/guava/README.md index 60754dbe57..d3bbbf6de5 100644 --- a/guava/README.md +++ b/guava/README.md @@ -1,11 +1,8 @@ -========= - -## Guava and Hamcrest Cookbooks and Examples +## Guava Examples ### Relevant Articles: - [Guava Functional Cookbook](http://www.baeldung.com/guava-functions-predicates) -- [Guava – Write to File, Read from File](http://www.baeldung.com/guava-write-to-file-read-from-file) - [Guide to Guava’s Ordering](http://www.baeldung.com/guava-ordering) - [Guide to Guava’s PreConditions](http://www.baeldung.com/guava-preconditions) - [Introduction to Guava CacheLoader](http://www.baeldung.com/guava-cacheloader) @@ -14,7 +11,5 @@ - [Guide to Guava’s Reflection Utilities](http://www.baeldung.com/guava-reflection) - [Guide to Mathematical Utilities in Guava](http://www.baeldung.com/guava-math) - [Bloom Filter in Java using Guava](http://www.baeldung.com/guava-bloom-filter) -- [Using Guava CountingOutputStream](http://www.baeldung.com/guava-counting-outputstream) -- [Hamcrest Text Matchers](http://www.baeldung.com/hamcrest-text-matchers) - [Quick Guide to the Guava RateLimiter](http://www.baeldung.com/guava-rate-limiter) -- [Hamcrest File Matchers](https://www.baeldung.com/hamcrest-file-matchers) + diff --git a/guava/pom.xml b/guava/pom.xml index 34eb7eafa6..3a19901a02 100644 --- a/guava/pom.xml +++ b/guava/pom.xml @@ -27,13 +27,7 @@ test - - - org.hamcrest - java-hamcrest - ${java-hamcrest.version} - test - + @@ -52,7 +46,6 @@ 3.6.1 - 2.0.0.0 \ No newline at end of file diff --git a/libraries-testing/README.md b/libraries-testing/README.md index 6b25a3b875..b4010056f7 100644 --- a/libraries-testing/README.md +++ b/libraries-testing/README.md @@ -5,4 +5,6 @@ - [Serenity BDD and Screenplay](http://www.baeldung.com/serenity-screenplay) - [Serenity BDD with Spring and JBehave](http://www.baeldung.com/serenity-spring-jbehave) - [Introduction to Awaitlity](http://www.baeldung.com/awaitlity-testing) -- [Introduction to Hoverfly in Java](http://www.baeldung.com/hoverfly) \ No newline at end of file +- [Introduction to Hoverfly in Java](http://www.baeldung.com/hoverfly) +- [Hamcrest File Matchers](https://www.baeldung.com/hamcrest-file-matchers) +- [Hamcrest Text Matchers](http://www.baeldung.com/hamcrest-text-matchers) \ No newline at end of file diff --git a/libraries-testing/pom.xml b/libraries-testing/pom.xml index 8f7a27bbfa..7cc5a8f775 100644 --- a/libraries-testing/pom.xml +++ b/libraries-testing/pom.xml @@ -112,6 +112,13 @@ assertj-core ${assertj.version} + + + org.hamcrest + java-hamcrest + ${java-hamcrest.version} + test + net.serenity-bdd @@ -165,6 +172,7 @@ 4.3.8.RELEASE 3.0.3 3.6.2 + 2.0.0.0 diff --git a/guava/src/test/java/org/baeldung/hamcrest/Animal.java b/libraries-testing/src/test/java/com/baeldung/hamcrest/Animal.java similarity index 100% rename from guava/src/test/java/org/baeldung/hamcrest/Animal.java rename to libraries-testing/src/test/java/com/baeldung/hamcrest/Animal.java diff --git a/guava/src/test/java/org/baeldung/hamcrest/Cat.java b/libraries-testing/src/test/java/com/baeldung/hamcrest/Cat.java similarity index 100% rename from guava/src/test/java/org/baeldung/hamcrest/Cat.java rename to libraries-testing/src/test/java/com/baeldung/hamcrest/Cat.java diff --git a/guava/src/test/java/org/baeldung/hamcrest/HamcrestMatcherUnitTest.java b/libraries-testing/src/test/java/com/baeldung/hamcrest/HamcrestMatcherUnitTest.java similarity index 100% rename from guava/src/test/java/org/baeldung/hamcrest/HamcrestMatcherUnitTest.java rename to libraries-testing/src/test/java/com/baeldung/hamcrest/HamcrestMatcherUnitTest.java diff --git a/guava/src/test/java/org/baeldung/hamcrest/IsPositiveInteger.java b/libraries-testing/src/test/java/com/baeldung/hamcrest/IsPositiveInteger.java similarity index 100% rename from guava/src/test/java/org/baeldung/hamcrest/IsPositiveInteger.java rename to libraries-testing/src/test/java/com/baeldung/hamcrest/IsPositiveInteger.java diff --git a/guava/src/test/java/org/baeldung/hamcrest/Person.java b/libraries-testing/src/test/java/com/baeldung/hamcrest/Person.java similarity index 100% rename from guava/src/test/java/org/baeldung/hamcrest/Person.java rename to libraries-testing/src/test/java/com/baeldung/hamcrest/Person.java diff --git a/guava/src/test/java/org/baeldung/hamcrest/README.md b/libraries-testing/src/test/java/com/baeldung/hamcrest/README.md similarity index 100% rename from guava/src/test/java/org/baeldung/hamcrest/README.md rename to libraries-testing/src/test/java/com/baeldung/hamcrest/README.md diff --git a/pom.xml b/pom.xml index 7f92acef6c..bec3d1a01a 100644 --- a/pom.xml +++ b/pom.xml @@ -442,6 +442,7 @@ grpc gson guava + guava-io guava-collections guava-collections-set guava-modules @@ -1166,6 +1167,7 @@ grpc gson guava + guava-io guava-collections guava-collections-set guava-modules From f4ec48e0b8162cc968f53d460a3fc491a6c0ce33 Mon Sep 17 00:00:00 2001 From: Devender Kumar <47500074+kumar-devender@users.noreply.github.com> Date: Wed, 11 Sep 2019 11:44:03 +0200 Subject: [PATCH 27/39] Added constraint group sequence test cases (#7763) --- .../validationgroup/CompleteInfo.java | 8 +++ .../validationgroup/RegistrationForm.java | 11 ++++ .../RegistrationFormUnitTest.java | 57 +++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/CompleteInfo.java diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/CompleteInfo.java b/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/CompleteInfo.java new file mode 100644 index 0000000000..c989ea3a6f --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/CompleteInfo.java @@ -0,0 +1,8 @@ +package org.baeldung.javabeanconstraints.validationgroup; + +import javax.validation.GroupSequence; + +@GroupSequence({BasicInfo.class, AdvanceInfo.class}) +public interface CompleteInfo { + +} diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationForm.java b/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationForm.java index 154d9821b6..ac8da5c26b 100644 --- a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationForm.java +++ b/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationForm.java @@ -13,6 +13,9 @@ public class RegistrationForm { @NotBlank(groups = BasicInfo.class) private String phone; + @NotBlank(groups = { BasicInfo.class, AdvanceInfo.class }) + private String captcha; + @NotBlank(groups = AdvanceInfo.class) private String street; @NotBlank(groups = AdvanceInfo.class) @@ -95,5 +98,13 @@ public class RegistrationForm { public void setPhone(String phone) { this.phone = phone; } + + public String getCaptcha() { + return captcha; + } + + public void setCaptcha(String captcha) { + this.captcha = captcha; + } } diff --git a/javaxval/src/test/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationFormUnitTest.java b/javaxval/src/test/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationFormUnitTest.java index f8944524f3..bd7034476e 100644 --- a/javaxval/src/test/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationFormUnitTest.java +++ b/javaxval/src/test/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationFormUnitTest.java @@ -43,6 +43,61 @@ public class RegistrationFormUnitTest { }); } + @Test + public void whenCaptchaIsBlank_thenShouldGiveConstraintViolationsForBasicInfo() { + RegistrationForm form = buildRegistrationFormWithBasicInfo(); + form.setCaptcha(""); + Set> violations = validator.validate(form, BasicInfo.class); + assertThat(violations.size()).isEqualTo(1); + violations.forEach(action -> { + assertThat(action.getMessage()).isEqualTo("must not be blank"); + assertThat(action.getPropertyPath().toString()).isEqualTo("captcha"); + }); + } + + @Test + public void whenCaptchaIsBlank_thenShouldGiveConstraintViolationsForAdvanceInfo() { + RegistrationForm form = buildRegistrationFormWithAdvanceInfo(); + form.setCaptcha(""); + Set> violations = validator.validate(form, AdvanceInfo.class); + assertThat(violations.size()).isEqualTo(1); + violations.forEach(action -> { + assertThat(action.getMessage()).isEqualTo("must not be blank"); + assertThat(action.getPropertyPath().toString()).isEqualTo("captcha"); + }); + } + + @Test + public void whenBasicInfoIsNotComplete_thenShouldGiveConstraintViolationsForBasicInfoOnly() { + RegistrationForm form = buildRegistrationFormWithBasicInfo(); + form.setFirstName(""); + Set> violations = validator.validate(form, CompleteInfo.class); + assertThat(violations.size()).isEqualTo(1); + violations.forEach(action -> { + assertThat(action.getMessage()).isEqualTo("must not be blank"); + assertThat(action.getPropertyPath().toString()).isEqualTo("firstName"); + }); + } + + @Test + public void whenBasicInfoIsCompleteAndAdvanceInfoIsNotComplete_thenShouldGiveConstraintViolationsForAdvanceInfo() { + RegistrationForm form = buildRegistrationFormWithBasicAndAdvanceInfo(); + form.setZipCode(""); + Set> violations = validator.validate(form, CompleteInfo.class); + assertThat(violations.size()).isEqualTo(1); + violations.forEach(action -> { + assertThat(action.getMessage()).isEqualTo("must not be blank"); + assertThat(action.getPropertyPath().toString()).isEqualTo("zipCode"); + }); + } + + @Test + public void whenBasicAndAdvanceInfoIsComplete_thenShouldNotGiveConstraintViolationsWithCompleteInfoValidationGroup() { + RegistrationForm form = buildRegistrationFormWithBasicAndAdvanceInfo(); + Set> violations = validator.validate(form, CompleteInfo.class); + assertThat(violations.size()).isEqualTo(0); + } + @Test public void whenBasicAndAdvanceInfoIsComplete_thenShouldNotGiveConstraintViolations() { RegistrationForm form = buildRegistrationFormWithBasicAndAdvanceInfo(); @@ -56,6 +111,7 @@ public class RegistrationFormUnitTest { form.setLastName("kumar"); form.setEmail("anyemail@yopmail.com"); form.setPhone("12345"); + form.setCaptcha("Y2HAhU5T"); return form; } @@ -70,6 +126,7 @@ public class RegistrationFormUnitTest { form.setStreet("alexa str."); form.setZipCode("19923"); form.setHouseNumber("2a"); + form.setCaptcha("Y2HAhU5T"); return form; } From 9addb86012c877ba02a507b3c7cc8d389d3f140d Mon Sep 17 00:00:00 2001 From: catalin-burcea Date: Wed, 11 Sep 2019 13:16:58 +0300 Subject: [PATCH 28/39] Split or move java-numbers module --- java-numbers-2/README.md | 8 ++ .../primechecker/BigIntegerPrimeChecker.java | 0 .../primechecker/BruteForcePrimeChecker.java | 0 .../primechecker/OptimisedPrimeChecker.java | 0 .../algorithms/primechecker/PrimeChecker.java | 0 .../primechecker/PrimesPrimeChecker.java | 0 .../java/com/baeldung/area/circle/Circle.java | 0 .../com/baeldung/area/circle/CircleArea.java | 0 .../java/com/baeldung/nan/NaNExample.java | 0 .../java/com/baeldung/pow/PowerExample.java | 0 .../com/baeldung/prime/PrimeGenerator.java | 118 +++++++++--------- .../primechecker/PrimeCheckerUnitTest.java | 0 .../com/baeldung/java/math/MathUnitTest.java | 0 .../prime/PrimeGeneratorUnitTest.java | 57 ++++----- java-numbers/README.md | 6 - 15 files changed, 96 insertions(+), 93 deletions(-) rename {java-numbers => java-numbers-2}/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java (100%) rename {java-numbers => java-numbers-2}/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java (100%) rename {java-numbers => java-numbers-2}/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java (100%) rename {java-numbers => java-numbers-2}/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java (100%) rename {java-numbers => java-numbers-2}/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java (100%) rename {java-numbers => java-numbers-2}/src/main/java/com/baeldung/area/circle/Circle.java (100%) rename {java-numbers => java-numbers-2}/src/main/java/com/baeldung/area/circle/CircleArea.java (100%) rename {java-numbers => java-numbers-2}/src/main/java/com/baeldung/nan/NaNExample.java (100%) rename {java-numbers => java-numbers-2}/src/main/java/com/baeldung/pow/PowerExample.java (100%) rename {java-numbers => java-numbers-2}/src/main/java/com/baeldung/prime/PrimeGenerator.java (96%) rename {java-numbers => java-numbers-2}/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java (100%) rename {java-numbers => java-numbers-2}/src/test/java/com/baeldung/java/math/MathUnitTest.java (100%) rename {java-numbers => java-numbers-2}/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java (97%) diff --git a/java-numbers-2/README.md b/java-numbers-2/README.md index 52ffc822b9..1d2919aa63 100644 --- a/java-numbers-2/README.md +++ b/java-numbers-2/README.md @@ -1,2 +1,10 @@ ## Relevant Articles - [Lossy Conversion in Java](https://www.baeldung.com/java-lossy-conversion) +- [A Guide to the Java Math Class](https://www.baeldung.com/java-lang-math) +- [Calculate the Area of a Circle in Java](https://www.baeldung.com/java-calculate-circle-area) +- [NaN in Java](http://www.baeldung.com/java-not-a-number) +- [Generating Prime Numbers in Java](http://www.baeldung.com/java-generate-prime-numbers) +- [Using Math.pow in Java](http://www.baeldung.com/java-math-pow) +- [Check If a Number Is Prime in Java](http://www.baeldung.com/java-prime-numbers) +- [Binary Numbers in Java](https://www.baeldung.com/java-binary-numbers) +- [Finding the Least Common Multiple in Java](https://www.baeldung.com/java-least-common-multiple) diff --git a/java-numbers/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java b/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java rename to java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java diff --git a/java-numbers/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java b/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java rename to java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java diff --git a/java-numbers/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java b/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java rename to java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java diff --git a/java-numbers/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java b/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java rename to java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java diff --git a/java-numbers/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java b/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java rename to java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java diff --git a/java-numbers/src/main/java/com/baeldung/area/circle/Circle.java b/java-numbers-2/src/main/java/com/baeldung/area/circle/Circle.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/area/circle/Circle.java rename to java-numbers-2/src/main/java/com/baeldung/area/circle/Circle.java diff --git a/java-numbers/src/main/java/com/baeldung/area/circle/CircleArea.java b/java-numbers-2/src/main/java/com/baeldung/area/circle/CircleArea.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/area/circle/CircleArea.java rename to java-numbers-2/src/main/java/com/baeldung/area/circle/CircleArea.java diff --git a/java-numbers/src/main/java/com/baeldung/nan/NaNExample.java b/java-numbers-2/src/main/java/com/baeldung/nan/NaNExample.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/nan/NaNExample.java rename to java-numbers-2/src/main/java/com/baeldung/nan/NaNExample.java diff --git a/java-numbers/src/main/java/com/baeldung/pow/PowerExample.java b/java-numbers-2/src/main/java/com/baeldung/pow/PowerExample.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/pow/PowerExample.java rename to java-numbers-2/src/main/java/com/baeldung/pow/PowerExample.java diff --git a/java-numbers/src/main/java/com/baeldung/prime/PrimeGenerator.java b/java-numbers-2/src/main/java/com/baeldung/prime/PrimeGenerator.java similarity index 96% rename from java-numbers/src/main/java/com/baeldung/prime/PrimeGenerator.java rename to java-numbers-2/src/main/java/com/baeldung/prime/PrimeGenerator.java index 750807ce77..7511141a84 100644 --- a/java-numbers/src/main/java/com/baeldung/prime/PrimeGenerator.java +++ b/java-numbers-2/src/main/java/com/baeldung/prime/PrimeGenerator.java @@ -1,59 +1,59 @@ -package com.baeldung.prime; - -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -public class PrimeGenerator { - public static List sieveOfEratosthenes(int n) { - final boolean prime[] = new boolean[n + 1]; - Arrays.fill(prime, true); - - for (int p = 2; p * p <= n; p++) { - if (prime[p]) { - for (int i = p * 2; i <= n; i += p) - prime[i] = false; - } - } - - final List primes = new LinkedList<>(); - for (int i = 2; i <= n; i++) { - if (prime[i]) - primes.add(i); - } - return primes; - } - - public static List primeNumbersBruteForce(int max) { - final List primeNumbers = new LinkedList(); - for (int i = 2; i <= max; i++) { - if (isPrimeBruteForce(i)) { - primeNumbers.add(i); - } - } - return primeNumbers; - } - - private static boolean isPrimeBruteForce(int x) { - for (int i = 2; i < x; i++) { - if (x % i == 0) { - return false; - } - } - return true; - } - - public static List primeNumbersTill(int max) { - return IntStream.rangeClosed(2, max) - .filter(x -> isPrime(x)) - .boxed() - .collect(Collectors.toList()); - } - - private static boolean isPrime(int x) { - return IntStream.rangeClosed(2, (int) (Math.sqrt(x))) - .allMatch(n -> x % n != 0); - } -} +package com.baeldung.prime; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class PrimeGenerator { + public static List sieveOfEratosthenes(int n) { + final boolean prime[] = new boolean[n + 1]; + Arrays.fill(prime, true); + + for (int p = 2; p * p <= n; p++) { + if (prime[p]) { + for (int i = p * 2; i <= n; i += p) + prime[i] = false; + } + } + + final List primes = new LinkedList<>(); + for (int i = 2; i <= n; i++) { + if (prime[i]) + primes.add(i); + } + return primes; + } + + public static List primeNumbersBruteForce(int max) { + final List primeNumbers = new LinkedList(); + for (int i = 2; i <= max; i++) { + if (isPrimeBruteForce(i)) { + primeNumbers.add(i); + } + } + return primeNumbers; + } + + private static boolean isPrimeBruteForce(int x) { + for (int i = 2; i < x; i++) { + if (x % i == 0) { + return false; + } + } + return true; + } + + public static List primeNumbersTill(int max) { + return IntStream.rangeClosed(2, max) + .filter(x -> isPrime(x)) + .boxed() + .collect(Collectors.toList()); + } + + private static boolean isPrime(int x) { + return IntStream.rangeClosed(2, (int) (Math.sqrt(x))) + .allMatch(n -> x % n != 0); + } +} diff --git a/java-numbers/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java b/java-numbers-2/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java similarity index 100% rename from java-numbers/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java rename to java-numbers-2/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java diff --git a/java-numbers/src/test/java/com/baeldung/java/math/MathUnitTest.java b/java-numbers-2/src/test/java/com/baeldung/java/math/MathUnitTest.java similarity index 100% rename from java-numbers/src/test/java/com/baeldung/java/math/MathUnitTest.java rename to java-numbers-2/src/test/java/com/baeldung/java/math/MathUnitTest.java diff --git a/java-numbers/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java b/java-numbers-2/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java similarity index 97% rename from java-numbers/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java rename to java-numbers-2/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java index 210bde076b..2509bd73d4 100644 --- a/java-numbers/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java +++ b/java-numbers-2/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java @@ -1,28 +1,29 @@ -package com.baeldung.prime; - -import java.util.Arrays; -import java.util.List; -import org.junit.Test; - -import static com.baeldung.prime.PrimeGenerator.*; -import static org.junit.Assert.*; - -public class PrimeGeneratorUnitTest { - @Test - public void whenBruteForced_returnsSuccessfully() { - final List primeNumbers = primeNumbersBruteForce(20); - assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); - } - - @Test - public void whenOptimized_returnsSuccessfully() { - final List primeNumbers = primeNumbersTill(20); - assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); - } - - @Test - public void whenSieveOfEratosthenes_returnsSuccessfully() { - final List primeNumbers = sieveOfEratosthenes(20); - assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); - } -} +package com.baeldung.prime; + +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; + +import static com.baeldung.prime.PrimeGenerator.*; +import static org.junit.Assert.*; + +public class PrimeGeneratorUnitTest { + @Test + public void whenBruteForced_returnsSuccessfully() { + final List primeNumbers = primeNumbersBruteForce(20); + assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); + } + + @Test + public void whenOptimized_returnsSuccessfully() { + final List primeNumbers = primeNumbersTill(20); + assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); + } + + @Test + public void whenSieveOfEratosthenes_returnsSuccessfully() { + final List primeNumbers = sieveOfEratosthenes(20); + assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); + } +} diff --git a/java-numbers/README.md b/java-numbers/README.md index 2b1131f325..7885232c46 100644 --- a/java-numbers/README.md +++ b/java-numbers/README.md @@ -4,11 +4,7 @@ ### Relevant Articles: - [Number of Digits in an Integer in Java](http://www.baeldung.com/java-number-of-digits-in-int) -- [NaN in Java](http://www.baeldung.com/java-not-a-number) - [How to Round a Number to N Decimal Places in Java](http://www.baeldung.com/java-round-decimal-number) -- [Check If a Number Is Prime in Java](http://www.baeldung.com/java-prime-numbers) -- [Using Math.pow in Java](http://www.baeldung.com/java-math-pow) -- [Generating Prime Numbers in Java](http://www.baeldung.com/java-generate-prime-numbers) - [BigDecimal and BigInteger in Java](http://www.baeldung.com/java-bigdecimal-biginteger) - [Find All Pairs of Numbers in an Array That Add Up to a Given Sum](http://www.baeldung.com/java-algorithm-number-pairs-sum) - [Java – Random Long, Float, Integer and Double](http://www.baeldung.com/java-generate-random-long-float-integer-double) @@ -17,5 +13,3 @@ - [Calculating the nth Root in Java](https://www.baeldung.com/java-nth-root) - [Convert Double to String, Removing Decimal Places](https://www.baeldung.com/java-double-to-string) - [Changing the Order in a Sum Operation Can Produce Different Results?](https://www.baeldung.com/java-floating-point-sum-order) -- [Calculate the Area of a Circle in Java](https://www.baeldung.com/java-calculate-circle-area) -- [A Guide to the Java Math Class](https://www.baeldung.com/java-lang-math) \ No newline at end of file From ff15a61559d30ef95318066cf2e4ff738f0441e4 Mon Sep 17 00:00:00 2001 From: fanatixan Date: Wed, 11 Sep 2019 13:00:16 +0200 Subject: [PATCH 29/39] BAEL-16653 (#7691) * added module 'design-patterns-behavioral' * added module 'design-patterns-structural' * added module 'design-patterns-creational' * added module 'design-patterns-architectural' * added module 'design-patterns-functional' * moved facade code examples from design-patterns to design-patterns-structural * moved singleton examples from design-patterns to design-patterns-creational * moved bridge examples from design-patterns to design-patterns-structural * moved creational examples from design-patterns to design-patterns-creational * moved observer examples from design-patterns to design-patterns-behavioral * moved flyweight examples from design-patterns to design-patterns-creational * moved service locator examples from design-patterns to design-patterns-architectural * moved double checked locking singleton examples from design-patterns to design-patterns-creational * moved composite examples from design-patterns to design-patterns-structural * moved visitor examples from design-patterns to design-patterns-behavioral * moved dao examples from design-patterns to design-patterns-architectural * moved interpreter examples from design-patterns to design-patterns-behavioral * moved state examples from design-patterns to design-patterns-behavioral * moved decorator examples from design-patterns to design-patterns-structural * renamed LogerUtil to LoggerUtil * moved template method examples from design-patterns to design-patterns-behavioral * moved chain of responsibility examples from design-patterns to design-patterns-behavioral * moved command examples from design-patterns to design-patterns-behavioral * moved constructor vs static factory method examples from design-patterns to design-patterns-creational * moved adapter examples from design-patterns to design-patterns-structural * moved currying examples from design-patterns to design-patterns-functional * moved proxy examples from design-patterns to design-patterns-structural * moved persistence.xml from design-patterns to design-patterns-architectural * deleted empty module: design-patterns * moved mediator examples from design-patterns-2 to design-patterns-behavioral * moved null object examples from design-patterns-2 to design-patterns-behavioral * moved null check examples from design-patterns to design-patterns-behavioral * moved freebuilder examples from design-patterns-2 to design-patterns-creational * added module design-patterns-behavioral-2 * moved memento examples from design-patterns-2 to design-patterns-behavioral-2 * removed empty module design-patterns-2 * changed http to https in readmes in modules design-patterns-* --- patterns/design-patterns-2/README.md | 5 - .../design-patterns-architectural/README.md | 3 + .../pom.xml | 20 +-- .../application/UserApplication.java | 0 .../config/JpaEntityManagerFactory.java | 0 .../config/PersistenceUnitInfoImpl.java | 0 .../com/baeldung/daopattern/daos/Dao.java | 0 .../baeldung/daopattern/daos/JpaUserDao.java | 0 .../com/baeldung/daopattern/daos/UserDao.java | 0 .../baeldung/daopattern/entities/User.java | 0 .../com/baeldung/service/locator/Cache.java | 0 .../service/locator/EmailService.java | 0 .../service/locator/InitialContext.java | 0 .../com/baeldung/service/locator/Main.java | 0 .../service/locator/MessagingService.java | 0 .../baeldung/service/locator/SMSService.java | 0 .../service/locator/ServiceLocator.java | 0 .../main/resources/META-INF/persistence.xml | 0 .../daopattern/test/UserDaoUnitTest.java | 0 .../design-patterns-behavioral-2/README.md | 2 + patterns/design-patterns-behavioral-2/pom.xml | 33 +++++ .../java/com/baeldung/memento/TextEditor.java | 0 .../java/com/baeldung/memento/TextWindow.java | 0 .../com/baeldung/memento/TextWindowState.java | 0 .../baeldung/memento/TextEditorUnitTest.java | 0 patterns/design-patterns-behavioral/README.md | 11 ++ .../pom.xml | 25 +--- .../AuthenticationProcessor.java | 0 .../AuthenticationProvider.java | 0 .../OAuthAuthenticationProcessor.java | 0 .../OAuthTokenProvider.java | 0 .../SamlAuthenticationProvider.java | 0 ...ernamePasswordAuthenticationProcessor.java | 0 .../UsernamePasswordProvider.java | 0 .../command/client/TextFileApplication.java | 0 .../command/OpenTextFileOperation.java | 0 .../command/SaveTextFileOperation.java | 0 .../command/command/TextFileOperation.java | 0 .../invoker/TextFileOperationExecutor.java | 0 .../baeldung/command/receiver/TextFile.java | 0 .../com/baeldung/interpreter/Context.java | 0 .../com/baeldung/interpreter/Expression.java | 0 .../java/com/baeldung/interpreter/From.java | 0 .../baeldung/interpreter/InterpreterDemo.java | 0 .../java/com/baeldung/interpreter/Row.java | 0 .../java/com/baeldung/interpreter/Select.java | 0 .../java/com/baeldung/interpreter/Where.java | 0 .../java/com/baeldung/mediator/Button.java | 0 .../main/java/com/baeldung/mediator/Fan.java | 0 .../java/com/baeldung/mediator/Mediator.java | 0 .../com/baeldung/mediator/PowerSupplier.java | 0 .../com/baeldung/nullobject/JmsRouter.java | 0 .../java/com/baeldung/nullobject/Message.java | 0 .../com/baeldung/nullobject/NullRouter.java | 0 .../java/com/baeldung/nullobject/Router.java | 0 .../baeldung/nullobject/RouterFactory.java | 0 .../baeldung/nullobject/RoutingHandler.java | 0 .../com/baeldung/nullobject/SmsRouter.java | 0 .../java/com/baeldung/nulls/APIContracts.java | 0 .../java/com/baeldung/nulls/Assertions.java | 0 .../com/baeldung/nulls/EmptyCollections.java | 0 .../baeldung/nulls/FindBugsAnnotations.java | 0 .../com/baeldung/nulls/Preconditions.java | 0 .../baeldung/nulls/PrimitivesAndWrapper.java | 0 .../java/com/baeldung/nulls/UsingLombok.java | 0 .../java/com/baeldung/nulls/UsingObjects.java | 0 .../com/baeldung/nulls/UsingOptional.java | 0 .../com/baeldung/nulls/UsingStringUtils.java | 0 .../java/com/baeldung/observer/Channel.java | 0 .../com/baeldung/observer/NewsAgency.java | 0 .../com/baeldung/observer/NewsChannel.java | 0 .../com/baeldung/observer/ONewsAgency.java | 0 .../com/baeldung/observer/ONewsChannel.java | 0 .../com/baeldung/observer/PCLNewsAgency.java | 0 .../com/baeldung/observer/PCLNewsChannel.java | 0 .../com/baeldung/state/DeliveredState.java | 0 .../java/com/baeldung/state/OrderedState.java | 0 .../main/java/com/baeldung/state/Package.java | 0 .../java/com/baeldung/state/PackageState.java | 0 .../com/baeldung/state/ReceivedState.java | 0 .../java/com/baeldung/state/StateDemo.java | 0 .../application/Application.java | 0 .../templatemethod/model/Computer.java | 0 .../templatemethod/model/ComputerBuilder.java | 0 .../templatemethod/model/HighEndComputer.java | 0 .../model/HighEndComputerBuilder.java | 0 .../model/StandardComputer.java | 0 .../model/StandardComputerBuilder.java | 0 .../java/com/baeldung/visitor/Document.java | 0 .../java/com/baeldung/visitor/Element.java | 0 .../com/baeldung/visitor/ElementVisitor.java | 0 .../com/baeldung/visitor/JsonElement.java | 0 .../java/com/baeldung/visitor/Visitor.java | 0 .../com/baeldung/visitor/VisitorDemo.java | 0 .../java/com/baeldung/visitor/XmlElement.java | 0 .../ChainOfResponsibilityIntegrationTest.java | 0 .../test/OpenTextFileOperationUnitTest.java | 0 .../test/SaveTextFileOperationUnitTest.java | 0 .../TextFileOperationExecutorUnitTest.java | 0 .../command/test/TextFileUnitTest.java | 0 .../mediator/MediatorIntegrationTest.java | 0 .../nulls/PrimitivesAndWrapperUnitTest.java | 0 .../baeldung/nulls/UsingLombokUnitTest.java | 0 .../baeldung/nulls/UsingObjectsUnitTest.java | 0 .../baeldung/nulls/UsingOptionalUnitTest.java | 0 .../nulls/UsingStringUtilsUnitTest.java | 0 .../observer/ObserverIntegrationTest.java | 0 .../baeldung/state/StatePatternUnitTest.java | 0 .../TemplateMethodPatternIntegrationTest.java | 0 patterns/design-patterns-creational/README.md | 8 ++ patterns/design-patterns-creational/pom.xml | 47 +++++++ .../application/Application.java | 22 +-- .../entities/User.java | 126 +++++++++--------- .../abstractfactory/AbstractFactory.java | 0 .../AbstractPatternDriver.java | 0 .../creational/abstractfactory/Animal.java | 0 .../abstractfactory/AnimalFactory.java | 0 .../creational/abstractfactory/Brown.java | 0 .../creational/abstractfactory/Color.java | 0 .../abstractfactory/ColorFactory.java | 0 .../creational/abstractfactory/Dog.java | 0 .../creational/abstractfactory/Duck.java | 0 .../abstractfactory/FactoryProvider.java | 0 .../creational/abstractfactory/White.java | 0 .../creational/builder/BankAccount.java | 0 .../builder/BuilderPatternDriver.java | 0 .../creational/factory/FactoryDriver.java | 0 .../baeldung/creational/factory/Heptagon.java | 0 .../baeldung/creational/factory/Octagon.java | 0 .../baeldung/creational/factory/Pentagon.java | 0 .../baeldung/creational/factory/Polygon.java | 0 .../creational/factory/PolygonFactory.java | 0 .../baeldung/creational/factory/Square.java | 0 .../baeldung/creational/factory/Triangle.java | 0 .../creational/singleton/Singleton.java | 0 .../creational/singleton/SingletonDriver.java | 0 .../main/java/com/baeldung/flyweight/Car.java | 3 - .../java/com/baeldung/flyweight/Engine.java | 0 .../java/com/baeldung/flyweight/Vehicle.java | 0 .../baeldung/flyweight/VehicleFactory.java | 0 .../com/baeldung/freebuilder/Address.java | 0 .../com/baeldung/freebuilder/Employee.java | 0 .../freebuilder/builder/Employee.java | 0 .../baeldung/singleton/ClassSingleton.java | 0 .../com/baeldung/singleton/EnumSingleton.java | 0 .../java/com/baeldung/singleton/Sandbox.java | 0 .../synchronization/DclSingleton.java | 0 .../synchronization/DraconianSingleton.java | 0 .../synchronization/EarlyInitSingleton.java | 0 .../synchronization/EnumSingleton.java | 0 .../InitOnDemandSingleton.java | 0 .../UserUnitTest.java | 84 ++++++------ .../AbstractPatternIntegrationTest.java | 0 .../BuilderPatternIntegrationTest.java | 0 .../factory/FactoryIntegrationTest.java | 0 .../singleton/SingletonIntegrationTest.java | 0 .../baeldung/flyweight/FlyweightUnitTest.java | 0 .../freebuilder/EmployeeBuilderUnitTest.java | 0 .../builder/EmployeeBuilderUnitTest.java | 0 ...ngletonSynchronizationIntegrationTest.java | 0 patterns/design-patterns-functional/README.md | 2 + patterns/design-patterns-functional/pom.xml | 25 ++++ .../java/com/baeldung/currying/Letter.java | 0 .../com/baeldung/currying/LetterUnitTest.java | 0 patterns/design-patterns-structural/README.md | 7 + patterns/design-patterns-structural/pom.xml | 30 +++++ .../adapter/AdapterPatternDriver.java | 2 +- .../com/baeldung/adapter/AstonMartin.java | 0 .../com/baeldung/adapter/BugattiVeyron.java | 0 .../java/com/baeldung/adapter/McLaren.java | 0 .../java/com/baeldung/adapter/Movable.java | 0 .../com/baeldung/adapter/MovableAdapter.java | 0 .../baeldung/adapter/MovableAdapterImpl.java | 0 .../main/java/com/baeldung/bridge/Blue.java | 0 .../baeldung/bridge/BridgePatternDriver.java | 0 .../main/java/com/baeldung/bridge/Color.java | 0 .../main/java/com/baeldung/bridge/Red.java | 0 .../main/java/com/baeldung/bridge/Shape.java | 0 .../main/java/com/baeldung/bridge/Square.java | 0 .../java/com/baeldung/bridge/Triangle.java | 0 .../com/baeldung/composite/CompositeDemo.java | 0 .../com/baeldung/composite/Department.java | 0 .../composite/FinancialDepartment.java | 0 .../baeldung/composite/HeadDepartment.java | 0 .../baeldung/composite/SalesDepartment.java | 0 .../com/baeldung/decorator/BubbleLights.java | 0 .../com/baeldung/decorator/ChristmasTree.java | 0 .../baeldung/decorator/ChristmasTreeImpl.java | 0 .../decorator/DecoratorPatternDriver.java | 2 +- .../java/com/baeldung/decorator/Garland.java | 0 .../com/baeldung/decorator/TreeDecorator.java | 0 .../com/baeldung/facade/CarEngineFacade.java | 0 .../facade/carsystem/AirFlowController.java | 0 .../facade/carsystem/AirFlowMeter.java | 0 .../facade/carsystem/CatalyticConverter.java | 0 .../facade/carsystem/CoolingController.java | 0 .../facade/carsystem/FuelInjector.java | 0 .../baeldung/facade/carsystem/FuelPump.java | 0 .../baeldung/facade/carsystem/Radiator.java | 0 .../baeldung/facade/carsystem/Starter.java | 0 .../facade/carsystem/TemperatureSensor.java | 0 .../com/baeldung/proxy/ExpensiveObject.java | 0 .../baeldung/proxy/ExpensiveObjectImpl.java | 2 +- .../baeldung/proxy/ExpensiveObjectProxy.java | 0 .../baeldung/proxy/ProxyPatternDriver.java | 0 .../java/com/baeldung/util/LoggerUtil.java} | 4 +- .../resources/log4jstructuraldp.properties | 0 .../AdapterPatternIntegrationTest.java | 9 +- .../bridge}/BridgePatternIntegrationTest.java | 8 +- .../DecoratorPatternIntegrationTest.java | 7 +- .../CarEngineFacadeIntegrationTest.java | 0 .../proxy}/ProxyPatternIntegrationTest.java | 7 +- .../com/baeldung/proxy}/TestAppenderDP.java | 2 +- patterns/design-patterns/README.md | 23 ---- patterns/pom.xml | 8 +- 215 files changed, 314 insertions(+), 213 deletions(-) delete mode 100644 patterns/design-patterns-2/README.md create mode 100644 patterns/design-patterns-architectural/README.md rename patterns/{design-patterns => design-patterns-architectural}/pom.xml (78%) rename patterns/{design-patterns => design-patterns-architectural}/src/main/java/com/baeldung/daopattern/application/UserApplication.java (100%) rename patterns/{design-patterns => design-patterns-architectural}/src/main/java/com/baeldung/daopattern/config/JpaEntityManagerFactory.java (100%) rename patterns/{design-patterns => design-patterns-architectural}/src/main/java/com/baeldung/daopattern/config/PersistenceUnitInfoImpl.java (100%) rename patterns/{design-patterns => design-patterns-architectural}/src/main/java/com/baeldung/daopattern/daos/Dao.java (100%) rename patterns/{design-patterns => design-patterns-architectural}/src/main/java/com/baeldung/daopattern/daos/JpaUserDao.java (100%) rename patterns/{design-patterns => design-patterns-architectural}/src/main/java/com/baeldung/daopattern/daos/UserDao.java (100%) rename patterns/{design-patterns => design-patterns-architectural}/src/main/java/com/baeldung/daopattern/entities/User.java (100%) rename patterns/{design-patterns => design-patterns-architectural}/src/main/java/com/baeldung/service/locator/Cache.java (100%) rename patterns/{design-patterns => design-patterns-architectural}/src/main/java/com/baeldung/service/locator/EmailService.java (100%) rename patterns/{design-patterns => design-patterns-architectural}/src/main/java/com/baeldung/service/locator/InitialContext.java (100%) rename patterns/{design-patterns => design-patterns-architectural}/src/main/java/com/baeldung/service/locator/Main.java (100%) rename patterns/{design-patterns => design-patterns-architectural}/src/main/java/com/baeldung/service/locator/MessagingService.java (100%) rename patterns/{design-patterns => design-patterns-architectural}/src/main/java/com/baeldung/service/locator/SMSService.java (100%) rename patterns/{design-patterns => design-patterns-architectural}/src/main/java/com/baeldung/service/locator/ServiceLocator.java (100%) rename patterns/{design-patterns => design-patterns-architectural}/src/main/resources/META-INF/persistence.xml (100%) rename patterns/{design-patterns => design-patterns-architectural}/src/test/java/com/baeldung/daopattern/test/UserDaoUnitTest.java (100%) create mode 100644 patterns/design-patterns-behavioral-2/README.md create mode 100644 patterns/design-patterns-behavioral-2/pom.xml rename patterns/{design-patterns-2 => design-patterns-behavioral-2}/src/main/java/com/baeldung/memento/TextEditor.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral-2}/src/main/java/com/baeldung/memento/TextWindow.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral-2}/src/main/java/com/baeldung/memento/TextWindowState.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral-2}/src/test/java/com/baeldung/memento/TextEditorUnitTest.java (100%) create mode 100644 patterns/design-patterns-behavioral/README.md rename patterns/{design-patterns-2 => design-patterns-behavioral}/pom.xml (69%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProcessor.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProvider.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/chainofresponsibility/OAuthAuthenticationProcessor.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/chainofresponsibility/OAuthTokenProvider.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/chainofresponsibility/SamlAuthenticationProvider.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordAuthenticationProcessor.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordProvider.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/command/client/TextFileApplication.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/command/command/OpenTextFileOperation.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/command/command/SaveTextFileOperation.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/command/command/TextFileOperation.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/command/invoker/TextFileOperationExecutor.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/command/receiver/TextFile.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/interpreter/Context.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/interpreter/Expression.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/interpreter/From.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/interpreter/InterpreterDemo.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/interpreter/Row.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/interpreter/Select.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/interpreter/Where.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/mediator/Button.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/mediator/Fan.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/mediator/Mediator.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/mediator/PowerSupplier.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nullobject/JmsRouter.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nullobject/Message.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nullobject/NullRouter.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nullobject/Router.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nullobject/RouterFactory.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nullobject/RoutingHandler.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nullobject/SmsRouter.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nulls/APIContracts.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nulls/Assertions.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nulls/EmptyCollections.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nulls/Preconditions.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nulls/UsingLombok.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nulls/UsingObjects.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nulls/UsingOptional.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/main/java/com/baeldung/nulls/UsingStringUtils.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/observer/Channel.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/observer/NewsAgency.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/observer/NewsChannel.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/observer/ONewsAgency.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/observer/ONewsChannel.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/observer/PCLNewsAgency.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/observer/PCLNewsChannel.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/state/DeliveredState.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/state/OrderedState.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/state/Package.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/state/PackageState.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/state/ReceivedState.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/state/StateDemo.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/templatemethod/application/Application.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/templatemethod/model/Computer.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/templatemethod/model/ComputerBuilder.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/templatemethod/model/HighEndComputer.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/templatemethod/model/StandardComputer.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/visitor/Document.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/visitor/Element.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/visitor/ElementVisitor.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/visitor/JsonElement.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/visitor/Visitor.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/visitor/VisitorDemo.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/main/java/com/baeldung/visitor/XmlElement.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/test/java/com/baeldung/chainofresponsibility/ChainOfResponsibilityIntegrationTest.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/test/java/com/baeldung/command/test/OpenTextFileOperationUnitTest.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/test/java/com/baeldung/command/test/SaveTextFileOperationUnitTest.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/test/java/com/baeldung/command/test/TextFileOperationExecutorUnitTest.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/test/java/com/baeldung/command/test/TextFileUnitTest.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/test/java/com/baeldung/mediator/MediatorIntegrationTest.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/test/java/com/baeldung/nulls/PrimitivesAndWrapperUnitTest.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/test/java/com/baeldung/nulls/UsingLombokUnitTest.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/test/java/com/baeldung/nulls/UsingObjectsUnitTest.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/test/java/com/baeldung/nulls/UsingOptionalUnitTest.java (100%) rename patterns/{design-patterns-2 => design-patterns-behavioral}/src/test/java/com/baeldung/nulls/UsingStringUtilsUnitTest.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/test/java/com/baeldung/observer/ObserverIntegrationTest.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/test/java/com/baeldung/state/StatePatternUnitTest.java (100%) rename patterns/{design-patterns => design-patterns-behavioral}/src/test/java/com/baeldung/templatemethod/test/TemplateMethodPatternIntegrationTest.java (100%) create mode 100644 patterns/design-patterns-creational/README.md create mode 100644 patterns/design-patterns-creational/pom.xml rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java (97%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java (96%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/abstractfactory/AbstractFactory.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/abstractfactory/AbstractPatternDriver.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/abstractfactory/Animal.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/abstractfactory/AnimalFactory.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/abstractfactory/Brown.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/abstractfactory/Color.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/abstractfactory/ColorFactory.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/abstractfactory/Dog.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/abstractfactory/Duck.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/abstractfactory/FactoryProvider.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/abstractfactory/White.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/builder/BankAccount.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/builder/BuilderPatternDriver.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/factory/FactoryDriver.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/factory/Heptagon.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/factory/Octagon.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/factory/Pentagon.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/factory/Polygon.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/factory/PolygonFactory.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/factory/Square.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/factory/Triangle.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/singleton/Singleton.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/creational/singleton/SingletonDriver.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/flyweight/Car.java (95%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/flyweight/Engine.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/flyweight/Vehicle.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/flyweight/VehicleFactory.java (100%) rename patterns/{design-patterns-2 => design-patterns-creational}/src/main/java/com/baeldung/freebuilder/Address.java (100%) rename patterns/{design-patterns-2 => design-patterns-creational}/src/main/java/com/baeldung/freebuilder/Employee.java (100%) rename patterns/{design-patterns-2 => design-patterns-creational}/src/main/java/com/baeldung/freebuilder/builder/Employee.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/singleton/ClassSingleton.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/singleton/EnumSingleton.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/singleton/Sandbox.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/singleton/synchronization/DclSingleton.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/singleton/synchronization/DraconianSingleton.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/singleton/synchronization/EarlyInitSingleton.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/singleton/synchronization/EnumSingleton.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/main/java/com/baeldung/singleton/synchronization/InitOnDemandSingleton.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java (97%) rename patterns/{design-patterns => design-patterns-creational}/src/test/java/com/baeldung/creational/abstractfactory/AbstractPatternIntegrationTest.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/test/java/com/baeldung/creational/builder/BuilderPatternIntegrationTest.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/test/java/com/baeldung/creational/factory/FactoryIntegrationTest.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/test/java/com/baeldung/creational/singleton/SingletonIntegrationTest.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/test/java/com/baeldung/flyweight/FlyweightUnitTest.java (100%) rename patterns/{design-patterns-2 => design-patterns-creational}/src/test/java/com/baeldung/freebuilder/EmployeeBuilderUnitTest.java (100%) rename patterns/{design-patterns-2 => design-patterns-creational}/src/test/java/com/baeldung/freebuilder/builder/EmployeeBuilderUnitTest.java (100%) rename patterns/{design-patterns => design-patterns-creational}/src/test/java/com/baeldung/singleton/synchronization/SingletonSynchronizationIntegrationTest.java (100%) create mode 100644 patterns/design-patterns-functional/README.md create mode 100644 patterns/design-patterns-functional/pom.xml rename patterns/{design-patterns => design-patterns-functional}/src/main/java/com/baeldung/currying/Letter.java (100%) rename patterns/{design-patterns => design-patterns-functional}/src/test/java/com/baeldung/currying/LetterUnitTest.java (100%) create mode 100644 patterns/design-patterns-structural/README.md create mode 100644 patterns/design-patterns-structural/pom.xml rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java (94%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/adapter/AstonMartin.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/adapter/BugattiVeyron.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/adapter/McLaren.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/adapter/Movable.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/adapter/MovableAdapter.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/adapter/MovableAdapterImpl.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/bridge/Blue.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/bridge/BridgePatternDriver.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/bridge/Color.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/bridge/Red.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/bridge/Shape.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/bridge/Square.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/bridge/Triangle.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/composite/CompositeDemo.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/composite/Department.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/composite/FinancialDepartment.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/composite/HeadDepartment.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/composite/SalesDepartment.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/decorator/BubbleLights.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/decorator/ChristmasTree.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/decorator/ChristmasTreeImpl.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java (90%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/decorator/Garland.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/decorator/TreeDecorator.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/facade/CarEngineFacade.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/facade/carsystem/AirFlowController.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/facade/carsystem/AirFlowMeter.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/facade/carsystem/CatalyticConverter.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/facade/carsystem/CoolingController.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/facade/carsystem/FuelInjector.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/facade/carsystem/FuelPump.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/facade/carsystem/Radiator.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/facade/carsystem/Starter.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/facade/carsystem/TemperatureSensor.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/proxy/ExpensiveObject.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java (88%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java (100%) rename patterns/{design-patterns => design-patterns-structural}/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java (100%) rename patterns/{design-patterns/src/main/java/com/baeldung/util/LogerUtil.java => design-patterns-structural/src/main/java/com/baeldung/util/LoggerUtil.java} (87%) rename patterns/{design-patterns => design-patterns-structural}/src/main/resources/log4jstructuraldp.properties (100%) rename patterns/{design-patterns/src/test/java/com/baeldung => design-patterns-structural/src/test/java/com/baeldung/adapter}/AdapterPatternIntegrationTest.java (75%) rename patterns/{design-patterns/src/test/java/com/baeldung => design-patterns-structural/src/test/java/com/baeldung/bridge}/BridgePatternIntegrationTest.java (72%) rename patterns/{design-patterns/src/test/java/com/baeldung => design-patterns-structural/src/test/java/com/baeldung/decorator}/DecoratorPatternIntegrationTest.java (75%) rename patterns/{design-patterns => design-patterns-structural}/src/test/java/com/baeldung/facade/CarEngineFacadeIntegrationTest.java (100%) rename patterns/{design-patterns/src/test/java/com/baeldung => design-patterns-structural/src/test/java/com/baeldung/proxy}/ProxyPatternIntegrationTest.java (87%) rename patterns/{design-patterns/src/test/java/com/baeldung => design-patterns-structural/src/test/java/com/baeldung/proxy}/TestAppenderDP.java (95%) delete mode 100644 patterns/design-patterns/README.md diff --git a/patterns/design-patterns-2/README.md b/patterns/design-patterns-2/README.md deleted file mode 100644 index 8e4ef657e1..0000000000 --- a/patterns/design-patterns-2/README.md +++ /dev/null @@ -1,5 +0,0 @@ -### Relevant Articles - -- [The Mediator Pattern in Java](https://www.baeldung.com/java-mediator-pattern) -- [Introduction to the Null Object Pattern](https://www.baeldung.com/java-null-object-pattern) -- [Avoid Check for Null Statement in Java](https://www.baeldung.com/java-avoid-null-check) diff --git a/patterns/design-patterns-architectural/README.md b/patterns/design-patterns-architectural/README.md new file mode 100644 index 0000000000..fbe4221752 --- /dev/null +++ b/patterns/design-patterns-architectural/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: +- [Service Locator Pattern](https://www.baeldung.com/java-service-locator-pattern) +- [The DAO Pattern in Java](https://www.baeldung.com/java-dao-pattern) diff --git a/patterns/design-patterns/pom.xml b/patterns/design-patterns-architectural/pom.xml similarity index 78% rename from patterns/design-patterns/pom.xml rename to patterns/design-patterns-architectural/pom.xml index e6bff64f9e..cf99919e7c 100644 --- a/patterns/design-patterns/pom.xml +++ b/patterns/design-patterns-architectural/pom.xml @@ -2,9 +2,9 @@ 4.0.0 - design-patterns + design-patterns-architectural 1.0 - design-patterns + design-patterns-architectural jar @@ -21,7 +21,8 @@ ${assertj-core.version} test - + + javax javaee-api ${javaee.version} @@ -37,24 +38,15 @@ ${mysql-connector.version} jar - - log4j - log4j - ${log4j.version} - - - com.googlecode.grep4j - grep4j - ${grep4j.version} - UTF-8 1.8 1.8 - 1.8.7 + 3.9.1 + 8.0 5.2.16.Final 6.0.6 diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/application/UserApplication.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/application/UserApplication.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/application/UserApplication.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/application/UserApplication.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/config/JpaEntityManagerFactory.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/config/JpaEntityManagerFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/config/JpaEntityManagerFactory.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/config/JpaEntityManagerFactory.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/config/PersistenceUnitInfoImpl.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/config/PersistenceUnitInfoImpl.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/config/PersistenceUnitInfoImpl.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/config/PersistenceUnitInfoImpl.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/Dao.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/Dao.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/Dao.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/Dao.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/JpaUserDao.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/JpaUserDao.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/JpaUserDao.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/JpaUserDao.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/UserDao.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/UserDao.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/UserDao.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/UserDao.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/entities/User.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/entities/User.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/entities/User.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/entities/User.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/Cache.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/Cache.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/Cache.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/Cache.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/EmailService.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/EmailService.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/EmailService.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/EmailService.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/InitialContext.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/InitialContext.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/InitialContext.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/InitialContext.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/Main.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/Main.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/Main.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/Main.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/MessagingService.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/MessagingService.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/MessagingService.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/MessagingService.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/SMSService.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/SMSService.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/SMSService.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/SMSService.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/ServiceLocator.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/ServiceLocator.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/ServiceLocator.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/ServiceLocator.java diff --git a/patterns/design-patterns/src/main/resources/META-INF/persistence.xml b/patterns/design-patterns-architectural/src/main/resources/META-INF/persistence.xml similarity index 100% rename from patterns/design-patterns/src/main/resources/META-INF/persistence.xml rename to patterns/design-patterns-architectural/src/main/resources/META-INF/persistence.xml diff --git a/patterns/design-patterns/src/test/java/com/baeldung/daopattern/test/UserDaoUnitTest.java b/patterns/design-patterns-architectural/src/test/java/com/baeldung/daopattern/test/UserDaoUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/daopattern/test/UserDaoUnitTest.java rename to patterns/design-patterns-architectural/src/test/java/com/baeldung/daopattern/test/UserDaoUnitTest.java diff --git a/patterns/design-patterns-behavioral-2/README.md b/patterns/design-patterns-behavioral-2/README.md new file mode 100644 index 0000000000..9618a9c458 --- /dev/null +++ b/patterns/design-patterns-behavioral-2/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [Memento Design Pattern in Java](https://www.baeldung.com/java-memento-design-pattern) diff --git a/patterns/design-patterns-behavioral-2/pom.xml b/patterns/design-patterns-behavioral-2/pom.xml new file mode 100644 index 0000000000..7e73c0ad19 --- /dev/null +++ b/patterns/design-patterns-behavioral-2/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + design-patterns-behavioral-2 + 1.0 + design-patterns-behavioral-2 + jar + + + com.baeldung + patterns + 1.0.0-SNAPSHOT + .. + + + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + UTF-8 + 1.8 + 1.8 + + 3.12.2 + + diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextEditor.java b/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextEditor.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextEditor.java rename to patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextEditor.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextWindow.java b/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextWindow.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextWindow.java rename to patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextWindow.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextWindowState.java b/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextWindowState.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextWindowState.java rename to patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextWindowState.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/memento/TextEditorUnitTest.java b/patterns/design-patterns-behavioral-2/src/test/java/com/baeldung/memento/TextEditorUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/memento/TextEditorUnitTest.java rename to patterns/design-patterns-behavioral-2/src/test/java/com/baeldung/memento/TextEditorUnitTest.java diff --git a/patterns/design-patterns-behavioral/README.md b/patterns/design-patterns-behavioral/README.md new file mode 100644 index 0000000000..42514e0ad8 --- /dev/null +++ b/patterns/design-patterns-behavioral/README.md @@ -0,0 +1,11 @@ +### Relevant Articles: +- [The Observer Pattern in Java](https://www.baeldung.com/java-observer-pattern) +- [Visitor Design Pattern in Java](https://www.baeldung.com/java-visitor-pattern) +- [Interpreter Design Pattern in Java](https://www.baeldung.com/java-interpreter-pattern) +- [State Design Pattern in Java](https://www.baeldung.com/java-state-design-pattern) +- [Implementing the Template Method Pattern in Java](https://www.baeldung.com/java-template-method-pattern) +- [Chain of Responsibility Design Pattern in Java](https://www.baeldung.com/chain-of-responsibility-pattern) +- [The Command Pattern in Java](https://www.baeldung.com/java-command-pattern) +- [The Mediator Pattern in Java](https://www.baeldung.com/java-mediator-pattern) +- [Introduction to the Null Object Pattern](https://www.baeldung.com/java-null-object-pattern) +- [Avoid Check for Null Statement in Java](https://www.baeldung.com/java-avoid-null-check) diff --git a/patterns/design-patterns-2/pom.xml b/patterns/design-patterns-behavioral/pom.xml similarity index 69% rename from patterns/design-patterns-2/pom.xml rename to patterns/design-patterns-behavioral/pom.xml index f99bb4dc9c..d6603f94ec 100644 --- a/patterns/design-patterns-2/pom.xml +++ b/patterns/design-patterns-behavioral/pom.xml @@ -2,9 +2,9 @@ 4.0.0 - design-patterns-2 + design-patterns-behavioral 1.0 - design-patterns-2 + design-patterns-behavioral jar @@ -31,32 +31,21 @@ commons-lang3 ${commons-lang3.version} + org.assertj assertj-core - ${assertj.version} + ${assertj-core.version} test - - - org.inferred - freebuilder - ${freebuilder.version} - true - - - com.google.code.findbugs - jsr305 - ${javax.annotations.version} - + UTF-8 1.8 1.8 + 16.0.2 - 3.12.2 - 2.4.1 - 3.0.2 + 3.9.1 diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProcessor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProcessor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProcessor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProcessor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProvider.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProvider.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProvider.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProvider.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/OAuthAuthenticationProcessor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/OAuthAuthenticationProcessor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/OAuthAuthenticationProcessor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/OAuthAuthenticationProcessor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/OAuthTokenProvider.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/OAuthTokenProvider.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/OAuthTokenProvider.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/OAuthTokenProvider.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/SamlAuthenticationProvider.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/SamlAuthenticationProvider.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/SamlAuthenticationProvider.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/SamlAuthenticationProvider.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordAuthenticationProcessor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordAuthenticationProcessor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordAuthenticationProcessor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordAuthenticationProcessor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordProvider.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordProvider.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordProvider.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordProvider.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/client/TextFileApplication.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/client/TextFileApplication.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/client/TextFileApplication.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/client/TextFileApplication.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/command/OpenTextFileOperation.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/OpenTextFileOperation.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/command/OpenTextFileOperation.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/OpenTextFileOperation.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/command/SaveTextFileOperation.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/SaveTextFileOperation.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/command/SaveTextFileOperation.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/SaveTextFileOperation.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/command/TextFileOperation.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/TextFileOperation.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/command/TextFileOperation.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/TextFileOperation.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/invoker/TextFileOperationExecutor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/invoker/TextFileOperationExecutor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/invoker/TextFileOperationExecutor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/invoker/TextFileOperationExecutor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/receiver/TextFile.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/receiver/TextFile.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/receiver/TextFile.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/receiver/TextFile.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/Context.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Context.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/Context.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Context.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/Expression.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Expression.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/Expression.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Expression.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/From.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/From.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/From.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/From.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/InterpreterDemo.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/InterpreterDemo.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/InterpreterDemo.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/InterpreterDemo.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/Row.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Row.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/Row.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Row.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/Select.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Select.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/Select.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Select.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/Where.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Where.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/Where.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Where.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Button.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Button.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Button.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Button.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Fan.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Fan.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Fan.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Fan.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Mediator.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Mediator.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Mediator.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Mediator.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/mediator/PowerSupplier.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/PowerSupplier.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/mediator/PowerSupplier.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/PowerSupplier.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/JmsRouter.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/JmsRouter.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/JmsRouter.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/JmsRouter.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/Message.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/Message.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/Message.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/Message.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/NullRouter.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/NullRouter.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/NullRouter.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/NullRouter.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/Router.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/Router.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/Router.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/Router.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/RouterFactory.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/RouterFactory.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/RouterFactory.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/RouterFactory.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/RoutingHandler.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/RoutingHandler.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/RoutingHandler.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/RoutingHandler.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/SmsRouter.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/SmsRouter.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/SmsRouter.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/SmsRouter.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/APIContracts.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/APIContracts.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/APIContracts.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/APIContracts.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/Assertions.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/Assertions.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/Assertions.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/Assertions.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/EmptyCollections.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/EmptyCollections.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/EmptyCollections.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/EmptyCollections.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/Preconditions.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/Preconditions.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/Preconditions.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/Preconditions.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingLombok.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingLombok.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingLombok.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingLombok.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingObjects.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingObjects.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingObjects.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingObjects.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingOptional.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingOptional.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingOptional.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingOptional.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingStringUtils.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingStringUtils.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingStringUtils.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingStringUtils.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/Channel.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/Channel.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/Channel.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/Channel.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/NewsAgency.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/NewsAgency.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/NewsAgency.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/NewsAgency.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/NewsChannel.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/NewsChannel.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/NewsChannel.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/NewsChannel.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/ONewsAgency.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/ONewsAgency.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/ONewsAgency.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/ONewsAgency.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/ONewsChannel.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/ONewsChannel.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/ONewsChannel.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/ONewsChannel.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/PCLNewsAgency.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/PCLNewsAgency.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/PCLNewsAgency.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/PCLNewsAgency.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/PCLNewsChannel.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/PCLNewsChannel.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/PCLNewsChannel.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/PCLNewsChannel.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/DeliveredState.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/DeliveredState.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/DeliveredState.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/DeliveredState.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/OrderedState.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/OrderedState.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/OrderedState.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/OrderedState.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/Package.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/Package.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/Package.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/Package.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/PackageState.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/PackageState.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/PackageState.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/PackageState.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/ReceivedState.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/ReceivedState.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/ReceivedState.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/ReceivedState.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/StateDemo.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/StateDemo.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/StateDemo.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/StateDemo.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/application/Application.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/application/Application.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/application/Application.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/application/Application.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/Computer.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/Computer.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/Computer.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/Computer.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/ComputerBuilder.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/ComputerBuilder.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/ComputerBuilder.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/ComputerBuilder.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/HighEndComputer.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputer.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/HighEndComputer.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputer.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/StandardComputer.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputer.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/StandardComputer.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputer.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/Document.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Document.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/Document.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Document.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/Element.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Element.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/Element.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Element.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/ElementVisitor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/ElementVisitor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/ElementVisitor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/ElementVisitor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/JsonElement.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/JsonElement.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/JsonElement.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/JsonElement.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/Visitor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Visitor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/Visitor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Visitor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/VisitorDemo.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/VisitorDemo.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/VisitorDemo.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/VisitorDemo.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/XmlElement.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/XmlElement.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/XmlElement.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/XmlElement.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/chainofresponsibility/ChainOfResponsibilityIntegrationTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/chainofresponsibility/ChainOfResponsibilityIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/chainofresponsibility/ChainOfResponsibilityIntegrationTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/chainofresponsibility/ChainOfResponsibilityIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/command/test/OpenTextFileOperationUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/OpenTextFileOperationUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/command/test/OpenTextFileOperationUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/OpenTextFileOperationUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/command/test/SaveTextFileOperationUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/SaveTextFileOperationUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/command/test/SaveTextFileOperationUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/SaveTextFileOperationUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/command/test/TextFileOperationExecutorUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/TextFileOperationExecutorUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/command/test/TextFileOperationExecutorUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/TextFileOperationExecutorUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/command/test/TextFileUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/TextFileUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/command/test/TextFileUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/TextFileUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/mediator/MediatorIntegrationTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/mediator/MediatorIntegrationTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/mediator/MediatorIntegrationTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/mediator/MediatorIntegrationTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/nulls/PrimitivesAndWrapperUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/PrimitivesAndWrapperUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/nulls/PrimitivesAndWrapperUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/PrimitivesAndWrapperUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingLombokUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingLombokUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingLombokUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingLombokUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingObjectsUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingObjectsUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingObjectsUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingObjectsUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingOptionalUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingOptionalUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingOptionalUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingOptionalUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingStringUtilsUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingStringUtilsUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingStringUtilsUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingStringUtilsUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/observer/ObserverIntegrationTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/observer/ObserverIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/observer/ObserverIntegrationTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/observer/ObserverIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/state/StatePatternUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/state/StatePatternUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/state/StatePatternUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/state/StatePatternUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/templatemethod/test/TemplateMethodPatternIntegrationTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/templatemethod/test/TemplateMethodPatternIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/templatemethod/test/TemplateMethodPatternIntegrationTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/templatemethod/test/TemplateMethodPatternIntegrationTest.java diff --git a/patterns/design-patterns-creational/README.md b/patterns/design-patterns-creational/README.md new file mode 100644 index 0000000000..0c00dc7b3a --- /dev/null +++ b/patterns/design-patterns-creational/README.md @@ -0,0 +1,8 @@ +### Relevant Articles: +- [Singletons in Java](https://www.baeldung.com/java-singleton) +- [Introduction to Creational Design Patterns](https://www.baeldung.com/creational-design-patterns) +- [Abstract Factory Pattern in Java](https://www.baeldung.com/java-abstract-factory-pattern) +- [Flyweight Pattern in Java](https://www.baeldung.com/java-flyweight) +- [Double-Checked Locking with Singleton](https://www.baeldung.com/java-singleton-double-checked-locking) +- [Java Constructors vs Static Factory Methods](https://www.baeldung.com/java-constructors-vs-static-factory-methods) +- [Automatic Generation of the Builder Pattern with FreeBuilder](https://www.baeldung.com/java-builder-pattern-freebuilder) diff --git a/patterns/design-patterns-creational/pom.xml b/patterns/design-patterns-creational/pom.xml new file mode 100644 index 0000000000..351f69f749 --- /dev/null +++ b/patterns/design-patterns-creational/pom.xml @@ -0,0 +1,47 @@ + + + 4.0.0 + design-patterns-creational + 1.0 + design-patterns-creational + jar + + + com.baeldung + patterns + 1.0.0-SNAPSHOT + .. + + + + + org.inferred + freebuilder + ${freebuilder.version} + true + + + com.google.code.findbugs + jsr305 + ${javax.annotations.version} + + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + + + UTF-8 + 1.8 + 1.8 + + 2.4.1 + 3.0.2 + 3.9.1 + + diff --git a/patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java similarity index 97% rename from patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java index d19772072f..8730542dcb 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java @@ -1,12 +1,12 @@ -package com.baeldung.constructorsstaticfactorymethods.application; - -import com.baeldung.constructorsstaticfactorymethods.entities.User; - -public class Application { - - public static void main(String[] args) { - User user1 = User.createWithDefaultCountry("John", "john@domain.com"); - User user2 = User.createWithLoggedInstantiationTime("John", "john@domain.com", "Argentina"); - User user3 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); - } +package com.baeldung.constructorsstaticfactorymethods.application; + +import com.baeldung.constructorsstaticfactorymethods.entities.User; + +public class Application { + + public static void main(String[] args) { + User user1 = User.createWithDefaultCountry("John", "john@domain.com"); + User user2 = User.createWithLoggedInstantiationTime("John", "john@domain.com", "Argentina"); + User user3 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); + } } \ No newline at end of file diff --git a/patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java similarity index 96% rename from patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java index 4036b622c6..f05a3baaa3 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java @@ -1,63 +1,63 @@ -package com.baeldung.constructorsstaticfactorymethods.entities; - -import java.time.LocalTime; -import java.util.logging.ConsoleHandler; -import java.util.logging.Level; -import java.util.logging.Logger; -import java.util.logging.SimpleFormatter; - -public class User { - - private static volatile User instance = null; - private static final Logger LOGGER = Logger.getLogger(User.class.getName()); - private final String name; - private final String email; - private final String country; - - public static User createWithDefaultCountry(String name, String email) { - return new User(name, email, "Argentina"); - } - - public static User createWithLoggedInstantiationTime(String name, String email, String country) { - setLoggerProperties(); - LOGGER.log(Level.INFO, "Creating User instance at : {0}", LocalTime.now()); - return new User(name, email, country); - } - - public static User getSingletonInstance(String name, String email, String country) { - if (instance == null) { - synchronized (User.class) { - if (instance == null) { - instance = new User(name, email, country); - } - } - } - return instance; - - } - - private User(String name, String email, String country) { - this.name = name; - this.email = email; - this.country = country; - } - - public String getName() { - return name; - } - - public String getEmail() { - return email; - } - - public String getCountry() { - return country; - } - - private static void setLoggerProperties() { - ConsoleHandler handler = new ConsoleHandler(); - handler.setLevel(Level.INFO); - handler.setFormatter(new SimpleFormatter()); - LOGGER.addHandler(handler); - } -} +package com.baeldung.constructorsstaticfactorymethods.entities; + +import java.time.LocalTime; +import java.util.logging.ConsoleHandler; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.logging.SimpleFormatter; + +public class User { + + private static volatile User instance = null; + private static final Logger LOGGER = Logger.getLogger(User.class.getName()); + private final String name; + private final String email; + private final String country; + + public static User createWithDefaultCountry(String name, String email) { + return new User(name, email, "Argentina"); + } + + public static User createWithLoggedInstantiationTime(String name, String email, String country) { + setLoggerProperties(); + LOGGER.log(Level.INFO, "Creating User instance at : {0}", LocalTime.now()); + return new User(name, email, country); + } + + public static User getSingletonInstance(String name, String email, String country) { + if (instance == null) { + synchronized (User.class) { + if (instance == null) { + instance = new User(name, email, country); + } + } + } + return instance; + + } + + private User(String name, String email, String country) { + this.name = name; + this.email = email; + this.country = country; + } + + public String getName() { + return name; + } + + public String getEmail() { + return email; + } + + public String getCountry() { + return country; + } + + private static void setLoggerProperties() { + ConsoleHandler handler = new ConsoleHandler(); + handler.setLevel(Level.INFO); + handler.setFormatter(new SimpleFormatter()); + LOGGER.addHandler(handler); + } +} diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AbstractFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AbstractFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AbstractFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AbstractFactory.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AbstractPatternDriver.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AbstractPatternDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AbstractPatternDriver.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AbstractPatternDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Animal.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Animal.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Animal.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Animal.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AnimalFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AnimalFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AnimalFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AnimalFactory.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Brown.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Brown.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Brown.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Brown.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Color.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Color.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Color.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Color.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/ColorFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/ColorFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/ColorFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/ColorFactory.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Dog.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Dog.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Dog.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Dog.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Duck.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Duck.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Duck.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Duck.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/FactoryProvider.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/FactoryProvider.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/FactoryProvider.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/FactoryProvider.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/White.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/White.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/White.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/White.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/builder/BankAccount.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/builder/BankAccount.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/builder/BankAccount.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/builder/BankAccount.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/builder/BuilderPatternDriver.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/builder/BuilderPatternDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/builder/BuilderPatternDriver.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/builder/BuilderPatternDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/FactoryDriver.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/FactoryDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/FactoryDriver.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/FactoryDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Heptagon.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Heptagon.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Heptagon.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Heptagon.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Octagon.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Octagon.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Octagon.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Octagon.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Pentagon.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Pentagon.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Pentagon.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Pentagon.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Polygon.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Polygon.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Polygon.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Polygon.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/PolygonFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/PolygonFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/PolygonFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/PolygonFactory.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Square.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Square.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Square.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Square.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Triangle.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Triangle.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Triangle.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Triangle.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/singleton/Singleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/singleton/Singleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/singleton/Singleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/singleton/Singleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/singleton/SingletonDriver.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/singleton/SingletonDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/singleton/SingletonDriver.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/singleton/SingletonDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/flyweight/Car.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Car.java similarity index 95% rename from patterns/design-patterns/src/main/java/com/baeldung/flyweight/Car.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Car.java index a0b1a7cdf5..80ef992abb 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/flyweight/Car.java +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Car.java @@ -2,8 +2,6 @@ package com.baeldung.flyweight; import java.awt.Color; -import javax.annotation.concurrent.Immutable; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -12,7 +10,6 @@ import org.slf4j.LoggerFactory; * * @author Donato Rimenti */ -@Immutable public class Car implements Vehicle { /** diff --git a/patterns/design-patterns/src/main/java/com/baeldung/flyweight/Engine.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Engine.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/flyweight/Engine.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Engine.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/flyweight/Vehicle.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Vehicle.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/flyweight/Vehicle.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Vehicle.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/flyweight/VehicleFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/VehicleFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/flyweight/VehicleFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/VehicleFactory.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/Address.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/Address.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/Address.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/Address.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/Employee.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/Employee.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/Employee.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/Employee.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/builder/Employee.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/builder/Employee.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/builder/Employee.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/builder/Employee.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/ClassSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/ClassSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/ClassSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/ClassSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/EnumSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/EnumSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/EnumSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/EnumSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/Sandbox.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/Sandbox.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/Sandbox.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/Sandbox.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/DclSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/DclSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/DclSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/DclSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/DraconianSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/DraconianSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/DraconianSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/DraconianSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/EarlyInitSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/EarlyInitSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/EarlyInitSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/EarlyInitSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/EnumSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/EnumSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/EnumSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/EnumSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/InitOnDemandSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/InitOnDemandSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/InitOnDemandSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/InitOnDemandSingleton.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java similarity index 97% rename from patterns/design-patterns/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java index 0c0266a111..ee8698b18d 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java +++ b/patterns/design-patterns-creational/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java @@ -1,43 +1,43 @@ -package com.baeldung.constructorsstaticfactorymethods; - -import com.baeldung.constructorsstaticfactorymethods.entities.User; -import static org.assertj.core.api.Assertions.assertThat; -import org.junit.Test; - -public class UserUnitTest { - - @Test - public void givenUserClass_whenCalledcreateWithDefaultCountry_thenCorrect() { - assertThat(User.createWithDefaultCountry("John", "john@domain.com")).isInstanceOf(User.class); - } - - @Test - public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetName_thenCorrect() { - User user = User.createWithDefaultCountry("John", "john@domain.com"); - assertThat(user.getName()).isEqualTo("John"); - } - - @Test - public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetEmail_thenCorrect() { - User user = User.createWithDefaultCountry("John", "john@domain.com"); - assertThat(user.getEmail()).isEqualTo("john@domain.com"); - } - - @Test - public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetCountry_thenCorrect() { - User user = User.createWithDefaultCountry("John", "john@domain.com"); - assertThat(user.getCountry()).isEqualTo("Argentina"); - } - - @Test - public void givenUserInstanceCreatedWithcreateWithInstantiationTime_whenCalledcreateWithInstantiationTime_thenCorrect() { - assertThat(User.createWithLoggedInstantiationTime("John", "john@domain.com", "Argentina")).isInstanceOf(User.class); - } - - @Test - public void givenUserInstanceCreatedWithgetSingletonIntance_whenCalledgetSingletonInstance_thenCorrect() { - User user1 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); - User user2 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); - assertThat(user1).isEqualTo(user2); - } +package com.baeldung.constructorsstaticfactorymethods; + +import com.baeldung.constructorsstaticfactorymethods.entities.User; +import static org.assertj.core.api.Assertions.assertThat; +import org.junit.Test; + +public class UserUnitTest { + + @Test + public void givenUserClass_whenCalledcreateWithDefaultCountry_thenCorrect() { + assertThat(User.createWithDefaultCountry("John", "john@domain.com")).isInstanceOf(User.class); + } + + @Test + public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetName_thenCorrect() { + User user = User.createWithDefaultCountry("John", "john@domain.com"); + assertThat(user.getName()).isEqualTo("John"); + } + + @Test + public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetEmail_thenCorrect() { + User user = User.createWithDefaultCountry("John", "john@domain.com"); + assertThat(user.getEmail()).isEqualTo("john@domain.com"); + } + + @Test + public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetCountry_thenCorrect() { + User user = User.createWithDefaultCountry("John", "john@domain.com"); + assertThat(user.getCountry()).isEqualTo("Argentina"); + } + + @Test + public void givenUserInstanceCreatedWithcreateWithInstantiationTime_whenCalledcreateWithInstantiationTime_thenCorrect() { + assertThat(User.createWithLoggedInstantiationTime("John", "john@domain.com", "Argentina")).isInstanceOf(User.class); + } + + @Test + public void givenUserInstanceCreatedWithgetSingletonIntance_whenCalledgetSingletonInstance_thenCorrect() { + User user1 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); + User user2 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); + assertThat(user1).isEqualTo(user2); + } } \ No newline at end of file diff --git a/patterns/design-patterns/src/test/java/com/baeldung/creational/abstractfactory/AbstractPatternIntegrationTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/creational/abstractfactory/AbstractPatternIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/creational/abstractfactory/AbstractPatternIntegrationTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/creational/abstractfactory/AbstractPatternIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/creational/builder/BuilderPatternIntegrationTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/creational/builder/BuilderPatternIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/creational/builder/BuilderPatternIntegrationTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/creational/builder/BuilderPatternIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/creational/factory/FactoryIntegrationTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/creational/factory/FactoryIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/creational/factory/FactoryIntegrationTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/creational/factory/FactoryIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/creational/singleton/SingletonIntegrationTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/creational/singleton/SingletonIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/creational/singleton/SingletonIntegrationTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/creational/singleton/SingletonIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/flyweight/FlyweightUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/flyweight/FlyweightUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/flyweight/FlyweightUnitTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/flyweight/FlyweightUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/freebuilder/EmployeeBuilderUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/freebuilder/EmployeeBuilderUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/freebuilder/EmployeeBuilderUnitTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/freebuilder/EmployeeBuilderUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/freebuilder/builder/EmployeeBuilderUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/freebuilder/builder/EmployeeBuilderUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/freebuilder/builder/EmployeeBuilderUnitTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/freebuilder/builder/EmployeeBuilderUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/singleton/synchronization/SingletonSynchronizationIntegrationTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/singleton/synchronization/SingletonSynchronizationIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/singleton/synchronization/SingletonSynchronizationIntegrationTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/singleton/synchronization/SingletonSynchronizationIntegrationTest.java diff --git a/patterns/design-patterns-functional/README.md b/patterns/design-patterns-functional/README.md new file mode 100644 index 0000000000..04e21bafd5 --- /dev/null +++ b/patterns/design-patterns-functional/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [Currying in Java](https://www.baeldung.com/java-currying) diff --git a/patterns/design-patterns-functional/pom.xml b/patterns/design-patterns-functional/pom.xml new file mode 100644 index 0000000000..5df7cc0cb9 --- /dev/null +++ b/patterns/design-patterns-functional/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + design-patterns-functional + 1.0 + design-patterns-functional + jar + + + com.baeldung + patterns + 1.0.0-SNAPSHOT + .. + + + + + + + UTF-8 + 1.8 + 1.8 + + diff --git a/patterns/design-patterns/src/main/java/com/baeldung/currying/Letter.java b/patterns/design-patterns-functional/src/main/java/com/baeldung/currying/Letter.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/currying/Letter.java rename to patterns/design-patterns-functional/src/main/java/com/baeldung/currying/Letter.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/currying/LetterUnitTest.java b/patterns/design-patterns-functional/src/test/java/com/baeldung/currying/LetterUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/currying/LetterUnitTest.java rename to patterns/design-patterns-functional/src/test/java/com/baeldung/currying/LetterUnitTest.java diff --git a/patterns/design-patterns-structural/README.md b/patterns/design-patterns-structural/README.md new file mode 100644 index 0000000000..91620a522e --- /dev/null +++ b/patterns/design-patterns-structural/README.md @@ -0,0 +1,7 @@ +### Relevant Articles: +- [Facade Design Pattern in Java](https://www.baeldung.com/java-facade-pattern) +- [Proxy, Decorator, Adapter and Bridge Patterns](https://www.baeldung.com/java-structural-design-patterns) +- [Composite Design Pattern in Java](https://www.baeldung.com/java-composite-pattern) +- [The Decorator Pattern in Java](https://www.baeldung.com/java-decorator-pattern) +- [The Adapter Pattern in Java](https://www.baeldung.com/java-adapter-pattern) +- [The Proxy Pattern in Java](https://www.baeldung.com/java-proxy-pattern) diff --git a/patterns/design-patterns-structural/pom.xml b/patterns/design-patterns-structural/pom.xml new file mode 100644 index 0000000000..63806058c9 --- /dev/null +++ b/patterns/design-patterns-structural/pom.xml @@ -0,0 +1,30 @@ + + + 4.0.0 + design-patterns-structural + 1.0 + design-patterns-structural + jar + + + com.baeldung + patterns + 1.0.0-SNAPSHOT + .. + + + + + log4j + log4j + ${log4j.version} + + + + + UTF-8 + 1.8 + 1.8 + + diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java similarity index 94% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java index a4e10a0868..9f696a5f40 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java +++ b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java @@ -1,6 +1,6 @@ package com.baeldung.adapter; -import static com.baeldung.util.LogerUtil.LOG; +import static com.baeldung.util.LoggerUtil.LOG; public class AdapterPatternDriver { diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/AstonMartin.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/AstonMartin.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/AstonMartin.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/AstonMartin.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/BugattiVeyron.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/BugattiVeyron.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/BugattiVeyron.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/BugattiVeyron.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/McLaren.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/McLaren.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/McLaren.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/McLaren.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/Movable.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/Movable.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/Movable.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/Movable.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/MovableAdapter.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/MovableAdapter.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/MovableAdapter.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/MovableAdapter.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/MovableAdapterImpl.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/MovableAdapterImpl.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/MovableAdapterImpl.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/MovableAdapterImpl.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Blue.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Blue.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Blue.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Blue.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/BridgePatternDriver.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/BridgePatternDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/BridgePatternDriver.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/BridgePatternDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Color.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Color.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Color.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Color.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Red.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Red.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Red.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Red.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Shape.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Shape.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Shape.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Shape.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Square.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Square.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Square.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Square.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Triangle.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Triangle.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Triangle.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Triangle.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/composite/CompositeDemo.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/composite/CompositeDemo.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/composite/CompositeDemo.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/composite/CompositeDemo.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/composite/Department.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/composite/Department.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/composite/Department.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/composite/Department.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/composite/FinancialDepartment.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/composite/FinancialDepartment.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/composite/FinancialDepartment.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/composite/FinancialDepartment.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/composite/HeadDepartment.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/composite/HeadDepartment.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/composite/HeadDepartment.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/composite/HeadDepartment.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/composite/SalesDepartment.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/composite/SalesDepartment.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/composite/SalesDepartment.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/composite/SalesDepartment.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/BubbleLights.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/BubbleLights.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/BubbleLights.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/BubbleLights.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/ChristmasTree.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/ChristmasTree.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/ChristmasTree.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/ChristmasTree.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/ChristmasTreeImpl.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/ChristmasTreeImpl.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/ChristmasTreeImpl.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/ChristmasTreeImpl.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java similarity index 90% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java index c20c23ff6e..6a9da7c78c 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java +++ b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java @@ -1,6 +1,6 @@ package com.baeldung.decorator; -import static com.baeldung.util.LogerUtil.LOG; +import static com.baeldung.util.LoggerUtil.LOG; public class DecoratorPatternDriver { diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/Garland.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/Garland.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/Garland.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/Garland.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/TreeDecorator.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/TreeDecorator.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/TreeDecorator.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/TreeDecorator.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/CarEngineFacade.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/CarEngineFacade.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/CarEngineFacade.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/CarEngineFacade.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/AirFlowController.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/AirFlowController.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/AirFlowController.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/AirFlowController.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/AirFlowMeter.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/AirFlowMeter.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/AirFlowMeter.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/AirFlowMeter.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/CatalyticConverter.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/CatalyticConverter.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/CatalyticConverter.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/CatalyticConverter.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/CoolingController.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/CoolingController.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/CoolingController.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/CoolingController.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/FuelInjector.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/FuelInjector.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/FuelInjector.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/FuelInjector.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/FuelPump.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/FuelPump.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/FuelPump.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/FuelPump.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/Radiator.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/Radiator.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/Radiator.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/Radiator.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/Starter.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/Starter.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/Starter.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/Starter.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/TemperatureSensor.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/TemperatureSensor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/TemperatureSensor.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/TemperatureSensor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObject.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObject.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObject.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObject.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java similarity index 88% rename from patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java index 7ade31da88..6d38672a63 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java +++ b/patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java @@ -1,6 +1,6 @@ package com.baeldung.proxy; -import static com.baeldung.util.LogerUtil.LOG;; +import static com.baeldung.util.LoggerUtil.LOG; public class ExpensiveObjectImpl implements ExpensiveObject { diff --git a/patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/util/LogerUtil.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/util/LoggerUtil.java similarity index 87% rename from patterns/design-patterns/src/main/java/com/baeldung/util/LogerUtil.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/util/LoggerUtil.java index 7217a4bc40..9702cba0f5 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/util/LogerUtil.java +++ b/patterns/design-patterns-structural/src/main/java/com/baeldung/util/LoggerUtil.java @@ -8,7 +8,7 @@ import java.util.Properties; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; -public class LogerUtil { +public class LoggerUtil { public final static Logger LOG = Logger.getLogger("GLOBAL"); @@ -22,7 +22,7 @@ public class LogerUtil { props.load( new BufferedReader( new InputStreamReader( - LogerUtil.class.getResourceAsStream("/log4jstructuraldp.properties") + LoggerUtil.class.getResourceAsStream("/log4jstructuraldp.properties") ) ) ); diff --git a/patterns/design-patterns/src/main/resources/log4jstructuraldp.properties b/patterns/design-patterns-structural/src/main/resources/log4jstructuraldp.properties similarity index 100% rename from patterns/design-patterns/src/main/resources/log4jstructuraldp.properties rename to patterns/design-patterns-structural/src/main/resources/log4jstructuraldp.properties diff --git a/patterns/design-patterns/src/test/java/com/baeldung/AdapterPatternIntegrationTest.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/adapter/AdapterPatternIntegrationTest.java similarity index 75% rename from patterns/design-patterns/src/test/java/com/baeldung/AdapterPatternIntegrationTest.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/adapter/AdapterPatternIntegrationTest.java index 78a1492d83..536caf7341 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/AdapterPatternIntegrationTest.java +++ b/patterns/design-patterns-structural/src/test/java/com/baeldung/adapter/AdapterPatternIntegrationTest.java @@ -1,16 +1,9 @@ -package com.baeldung; +package com.baeldung.adapter; import static org.junit.Assert.assertEquals; import org.junit.Test; -import com.baeldung.adapter.AstonMartin; -import com.baeldung.adapter.BugattiVeyron; -import com.baeldung.adapter.McLaren; -import com.baeldung.adapter.Movable; -import com.baeldung.adapter.MovableAdapter; -import com.baeldung.adapter.MovableAdapterImpl; - public class AdapterPatternIntegrationTest { @Test public void givenMovableAdapter_WhenConvertingMPHToKMPH_thenSuccessfullyConverted() { diff --git a/patterns/design-patterns/src/test/java/com/baeldung/BridgePatternIntegrationTest.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/bridge/BridgePatternIntegrationTest.java similarity index 72% rename from patterns/design-patterns/src/test/java/com/baeldung/BridgePatternIntegrationTest.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/bridge/BridgePatternIntegrationTest.java index adcb5cdd2c..814a91c070 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/BridgePatternIntegrationTest.java +++ b/patterns/design-patterns-structural/src/test/java/com/baeldung/bridge/BridgePatternIntegrationTest.java @@ -1,15 +1,9 @@ -package com.baeldung; +package com.baeldung.bridge; import static org.junit.Assert.*; import org.junit.Test; -import com.baeldung.bridge.Blue; -import com.baeldung.bridge.Red; -import com.baeldung.bridge.Shape; -import com.baeldung.bridge.Square; -import com.baeldung.bridge.Triangle; - public class BridgePatternIntegrationTest { @Test diff --git a/patterns/design-patterns/src/test/java/com/baeldung/DecoratorPatternIntegrationTest.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/decorator/DecoratorPatternIntegrationTest.java similarity index 75% rename from patterns/design-patterns/src/test/java/com/baeldung/DecoratorPatternIntegrationTest.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/decorator/DecoratorPatternIntegrationTest.java index 23a717ae2e..0f2e262346 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/DecoratorPatternIntegrationTest.java +++ b/patterns/design-patterns-structural/src/test/java/com/baeldung/decorator/DecoratorPatternIntegrationTest.java @@ -1,14 +1,9 @@ -package com.baeldung; +package com.baeldung.decorator; import static org.junit.Assert.assertEquals; import org.junit.Test; -import com.baeldung.decorator.BubbleLights; -import com.baeldung.decorator.ChristmasTree; -import com.baeldung.decorator.ChristmasTreeImpl; -import com.baeldung.decorator.Garland; - public class DecoratorPatternIntegrationTest { @Test public void givenDecoratorPattern_WhenDecoratorsInjectedAtRuntime_thenConfigSuccess() { diff --git a/patterns/design-patterns/src/test/java/com/baeldung/facade/CarEngineFacadeIntegrationTest.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/facade/CarEngineFacadeIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/facade/CarEngineFacadeIntegrationTest.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/facade/CarEngineFacadeIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/ProxyPatternIntegrationTest.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/ProxyPatternIntegrationTest.java similarity index 87% rename from patterns/design-patterns/src/test/java/com/baeldung/ProxyPatternIntegrationTest.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/ProxyPatternIntegrationTest.java index c035793b64..6db19f7cea 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/ProxyPatternIntegrationTest.java +++ b/patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/ProxyPatternIntegrationTest.java @@ -1,6 +1,6 @@ -package com.baeldung; +package com.baeldung.proxy; -import static com.baeldung.util.LogerUtil.LOG; +import static com.baeldung.util.LoggerUtil.LOG; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @@ -11,9 +11,6 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import com.baeldung.proxy.ExpensiveObject; -import com.baeldung.proxy.ExpensiveObjectProxy; - public class ProxyPatternIntegrationTest { public static TestAppenderDP appender; diff --git a/patterns/design-patterns/src/test/java/com/baeldung/TestAppenderDP.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/TestAppenderDP.java similarity index 95% rename from patterns/design-patterns/src/test/java/com/baeldung/TestAppenderDP.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/TestAppenderDP.java index 2b3bc47292..1c6d9a2064 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/TestAppenderDP.java +++ b/patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/TestAppenderDP.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.proxy; import java.util.ArrayList; import java.util.List; diff --git a/patterns/design-patterns/README.md b/patterns/design-patterns/README.md deleted file mode 100644 index 1c611f05d2..0000000000 --- a/patterns/design-patterns/README.md +++ /dev/null @@ -1,23 +0,0 @@ -### Relevant Articles: -- [Facade Design Pattern in Java](http://www.baeldung.com/java-facade-pattern) -- [Singletons in Java](http://www.baeldung.com/java-singleton) -- [Proxy, Decorator, Adapter and Bridge Patterns](http://www.baeldung.com/java-structural-design-patterns) -- [Introduction to Creational Design Patterns](http://www.baeldung.com/creational-design-patterns) -- [The Observer Pattern in Java](http://www.baeldung.com/java-observer-pattern) -- [Flyweight Pattern in Java](http://www.baeldung.com/java-flyweight) -- [Service Locator Pattern](http://www.baeldung.com/java-service-locator-pattern) -- [Double-Checked Locking with Singleton](http://www.baeldung.com/java-singleton-double-checked-locking) -- [Composite Design Pattern in Java](http://www.baeldung.com/java-composite-pattern) -- [Visitor Design Pattern in Java](http://www.baeldung.com/java-visitor-pattern) -- [The DAO Pattern in Java](http://www.baeldung.com/java-dao-pattern) -- [Interpreter Design Pattern in Java](http://www.baeldung.com/java-interpreter-pattern) -- [State Design Pattern in Java](https://www.baeldung.com/java-state-design-pattern) -- [The Decorator Pattern in Java](https://www.baeldung.com/java-decorator-pattern) -- [Abstract Factory Pattern in Java](https://www.baeldung.com/java-abstract-factory-pattern) -- [Implementing the Template Method Pattern in Java](http://www.baeldung.com/java-template-method-pattern) -- [Chain of Responsibility Design Pattern in Java](http://www.baeldung.com/chain-of-responsibility-pattern) -- [The Command Pattern in Java](http://www.baeldung.com/java-command-pattern) -- [Java Constructors vs Static Factory Methods](https://www.baeldung.com/java-constructors-vs-static-factory-methods) -- [The Adapter Pattern in Java](https://www.baeldung.com/java-adapter-pattern) -- [Currying in Java](https://www.baeldung.com/java-currying) -- [The Proxy Pattern in Java](https://www.baeldung.com/java-proxy-pattern) diff --git a/patterns/pom.xml b/patterns/pom.xml index 7f7368ca07..196c3c3319 100644 --- a/patterns/pom.xml +++ b/patterns/pom.xml @@ -16,8 +16,12 @@ front-controller intercepting-filter - design-patterns - design-patterns-2 + design-patterns-architectural + design-patterns-behavioral + design-patterns-behavioral-2 + design-patterns-creational + design-patterns-functional + design-patterns-structural solid dip backoff-jitter From b7c58ddce6477f20453654c9e3234edc0b653630 Mon Sep 17 00:00:00 2001 From: NickTononi <48349671+NickTononi@users.noreply.github.com> Date: Wed, 11 Sep 2019 13:23:33 +0200 Subject: [PATCH 30/39] [BAEL-3279]Add missing code snippets from the Spring RequestMapping article (#7768) * [BAEL-3279]Add missing code snippets from the Spring RequestMapping article * [BAEL-3279] Updated snippets * changhed tabs to spaces * fixed import issues * fixed package --- .../FooMappingExamplesController.java | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/spring-rest-simple/src/main/java/com/baeldung/requestmapping/FooMappingExamplesController.java b/spring-rest-simple/src/main/java/com/baeldung/requestmapping/FooMappingExamplesController.java index 2c11e36141..90012ed054 100644 --- a/spring-rest-simple/src/main/java/com/baeldung/requestmapping/FooMappingExamplesController.java +++ b/spring-rest-simple/src/main/java/com/baeldung/requestmapping/FooMappingExamplesController.java @@ -1,6 +1,8 @@ package com.baeldung.requestmapping; +import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -97,5 +99,29 @@ public class FooMappingExamplesController { public String putAndPostFoos() { return "Advanced - PUT and POST within single method"; } + + // --- Ambiguous Mapping + + @GetMapping(value = "foos/duplicate" ) + public String duplicate() { + return "Duplicate"; + } + + // uncomment for exception of type java.lang.IllegalStateException: Ambiguous mapping -} + // @GetMapping(value = "foos/duplicate" ) + // public String duplicateEx() { + // return "Duplicate"; + // } + + @GetMapping(value = "foos/duplicate/xml", produces = MediaType.APPLICATION_XML_VALUE) + public String duplicateXml() { + return "Duplicate Xml"; + } + + @GetMapping(value = "foos/duplicate/json", produces = MediaType.APPLICATION_JSON_VALUE) + public String duplicateJson() { + return "Duplicate Json"; + } + +} \ No newline at end of file From 4f1aa7ab6def9b1c9f0aa78ad33357042a66f890 Mon Sep 17 00:00:00 2001 From: Rui Vilao Date: Wed, 11 Sep 2019 20:02:21 +0200 Subject: [PATCH 31/39] Renames java-sql20 to a more generic module persistence-libraries. --- .../{java-sql2o => persistence-libraries}/README.md | 0 .../{java-sql2o => persistence-libraries}/pom.xml | 2 +- .../com/baeldung/persistence/sql2o/Sql2oIntegrationTest.java | 0 persistence-modules/pom.xml | 4 ++-- 4 files changed, 3 insertions(+), 3 deletions(-) rename persistence-modules/{java-sql2o => persistence-libraries}/README.md (100%) rename persistence-modules/{java-sql2o => persistence-libraries}/pom.xml (97%) rename persistence-modules/{java-sql2o => persistence-libraries}/src/test/java/com/baeldung/persistence/sql2o/Sql2oIntegrationTest.java (100%) diff --git a/persistence-modules/java-sql2o/README.md b/persistence-modules/persistence-libraries/README.md similarity index 100% rename from persistence-modules/java-sql2o/README.md rename to persistence-modules/persistence-libraries/README.md diff --git a/persistence-modules/java-sql2o/pom.xml b/persistence-modules/persistence-libraries/pom.xml similarity index 97% rename from persistence-modules/java-sql2o/pom.xml rename to persistence-modules/persistence-libraries/pom.xml index fe5a0e5dc8..cce051f303 100644 --- a/persistence-modules/java-sql2o/pom.xml +++ b/persistence-modules/persistence-libraries/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - java-sql2o + persistence-libraries 1.0-SNAPSHOT diff --git a/persistence-modules/java-sql2o/src/test/java/com/baeldung/persistence/sql2o/Sql2oIntegrationTest.java b/persistence-modules/persistence-libraries/src/test/java/com/baeldung/persistence/sql2o/Sql2oIntegrationTest.java similarity index 100% rename from persistence-modules/java-sql2o/src/test/java/com/baeldung/persistence/sql2o/Sql2oIntegrationTest.java rename to persistence-modules/persistence-libraries/src/test/java/com/baeldung/persistence/sql2o/Sql2oIntegrationTest.java diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index 9ae24efcc1..5dd0611f41 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -30,7 +30,7 @@ java-jpa java-jpa-2 java-mongodb - java-sql2o + persistence-libraries jnosql liquibase orientdb @@ -59,7 +59,7 @@ spring-jpa spring-persistence-simple jpa-hibernate-cascade-type - r2dbc + r2dbc spring-boot-jdbi From 075f6476fca917371867ce73c1cf39f2fa1234d4 Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Wed, 11 Sep 2019 21:46:42 +0300 Subject: [PATCH 32/39] Update README.md --- java-math/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/java-math/README.md b/java-math/README.md index 244417d1a5..b0921e55ae 100644 --- a/java-math/README.md +++ b/java-math/README.md @@ -9,3 +9,4 @@ - [Calculate Percentage in Java](https://www.baeldung.com/java-calculate-percentage) - [Convert Latitude and Longitude to a 2D Point in Java](https://www.baeldung.com/java-convert-latitude-longitude) - [Debugging with Eclipse](https://www.baeldung.com/eclipse-debugging) +- [Matrix Multiplication in Java](https://www.baeldung.com/java-matrix-multiplication) From fb1ed77838ddb943b41b2233bb2555c96559e9db Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Wed, 11 Sep 2019 21:47:26 +0300 Subject: [PATCH 33/39] Update README.md --- libraries-2/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries-2/README.md b/libraries-2/README.md index 400aa475d1..7d7fc67fa7 100644 --- a/libraries-2/README.md +++ b/libraries-2/README.md @@ -8,6 +8,5 @@ - [A Guide to Crawler4j](https://www.baeldung.com/crawler4j) - [Decode an OkHttp JSON Response](https://www.baeldung.com/okhttp-json-response) - [Key Value Store with Chronicle Map](https://www.baeldung.com/java-chronicle-map) -- [Matrix Multiplication in Java](https://www.baeldung.com/java-matrix-multiplication) - [Guide to MapDB](https://www.baeldung.com/mapdb) - [A Guide to Apache Mesos](https://www.baeldung.com/apache-mesos) From ec23ab367efe9342bb6de5763d07a4dec4d85c4f Mon Sep 17 00:00:00 2001 From: Catalin Burcea Date: Thu, 12 Sep 2019 12:32:10 +0300 Subject: [PATCH 34/39] Split or move core-java-modules/core-java-lang-oop module (#7767) --- .../core-java-lang-oop-2/README.md | 5 ++++ .../core-java-lang-oop-2/pom.xml | 22 +++++++++++----- .../baeldung/constructors/BankAccount.java | 0 .../baeldung/constructors/Transaction.java | 0 .../com/baeldung/equalshashcode/Money.java | 0 .../com/baeldung/equalshashcode/Team.java | 0 .../com/baeldung/equalshashcode/Voucher.java | 0 .../baeldung/equalshashcode/WrongTeam.java | 0 .../baeldung/equalshashcode/WrongVoucher.java | 0 .../equalshashcode/entities/ComplexClass.java | 0 .../entities/PrimitiveClass.java | 0 .../equalshashcode/entities/Rectangle.java | 0 .../equalshashcode/entities/Shape.java | 0 .../equalshashcode/entities/Square.java | 0 .../baeldung/immutableobjects/Currency.java | 0 .../com/baeldung/immutableobjects/Money.java | 0 .../application/Application.java | 8 +----- .../inheritancecomposition/model/Actress.java | 0 .../model/Computer.java | 0 .../inheritancecomposition/model/Memory.java | 0 .../inheritancecomposition/model/Person.java | 0 .../model/Processor.java | 0 .../model/SoundCard.java | 0 .../model/StandardMemory.java | 0 .../model/StandardProcessor.java | 0 .../model/StandardSoundCard.java | 0 .../model/Waitress.java | 0 .../markerinterface/DeletableShape.java | 0 .../baeldung/markerinterface/Rectangle.java | 0 .../com/baeldung/markerinterface/Shape.java | 0 .../baeldung/markerinterface/ShapeDao.java | 0 .../constructors/ConstructorUnitTest.java | 2 -- .../equalshashcode/MoneyUnitTest.java | 6 ++--- .../baeldung/equalshashcode/TeamUnitTest.java | 9 +++---- .../entities/ComplexClassUnitTest.java | 8 +++--- .../entities/PrimitiveClassUnitTest.java | 0 .../entities/SquareClassUnitTest.java | 4 +-- .../ImmutableObjectsUnitTest.java | 4 +-- .../ActressUnitTest.java | 3 ++- .../CompositionUnitTest.java | 15 +++++------ .../InheritanceUnitTest.java | 5 ++-- .../PersonUnitTest.java | 3 ++- .../WaitressUnitTest.java | 3 ++- .../MarkerInterfaceUnitTest.java | 4 +-- .../core-java-lang-oop-3/.gitignore | 26 +++++++++++++++++++ .../core-java-lang-oop-3/README.md | 11 ++++++++ .../core-java-lang-oop-3/pom.xml | 26 +++++++++++++++++++ .../com/baeldung/accessmodifiers/Public.java | 0 .../baeldung/accessmodifiers/SubClass.java | 0 .../baeldung/accessmodifiers/SuperPublic.java | 0 .../another/AnotherPublic.java | 0 .../another/AnotherSubClass.java | 0 .../another/AnotherSuperPublic.java | 0 .../publicmodifier/ListOfThree.java | 0 .../publicmodifier/SpecialCharacters.java | 0 .../publicmodifier/Student.java | 0 .../com/baeldung/keyword/KeywordDemo.java | 0 .../keyword/superkeyword/SuperBase.java | 0 .../keyword/superkeyword/SuperSub.java | 0 .../keyword/thiskeyword/KeywordUnitTest.java | 0 .../relationships/aggregation/Car.java | 0 .../aggregation/CarWithStaticInnerWheel.java | 0 .../relationships/aggregation/Wheel.java | 0 .../relationships/association/Child.java | 0 .../relationships/association/Mother.java | 0 .../relationships/composition/Building.java | 0 .../BuildingWithDefinitionRoomInMethod.java | 0 .../relationships/university/Department.java | 0 .../relationships/university/Professor.java | 0 .../relationships/university/University.java | 0 .../PublicAccessModifierUnitTest.java | 11 ++++---- .../NonPrimitivesUnitTest.java | 2 +- .../parameterpassing/PrimitivesUnitTest.java | 0 .../core-java-lang-oop/README.md | 9 ------- core-java-modules/core-java-lang-oop/pom.xml | 7 ----- pom.xml | 2 ++ 76 files changed, 124 insertions(+), 71 deletions(-) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/constructors/BankAccount.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/constructors/Transaction.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/equalshashcode/Money.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/equalshashcode/Team.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/equalshashcode/Voucher.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/equalshashcode/WrongTeam.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/equalshashcode/entities/Shape.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/equalshashcode/entities/Square.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/immutableobjects/Currency.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/immutableobjects/Money.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/inheritancecomposition/application/Application.java (67%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/inheritancecomposition/model/Person.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/markerinterface/DeletableShape.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/markerinterface/Rectangle.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/markerinterface/Shape.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/main/java/com/baeldung/markerinterface/ShapeDao.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java (96%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java (99%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java (94%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java (89%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test => core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition}/ActressUnitTest.java (95%) rename core-java-modules/{core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test => core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition}/CompositionUnitTest.java (61%) rename core-java-modules/{core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test => core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition}/InheritanceUnitTest.java (93%) rename core-java-modules/{core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test => core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition}/PersonUnitTest.java (94%) rename core-java-modules/{core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test => core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition}/WaitressUnitTest.java (96%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-2}/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java (100%) create mode 100644 core-java-modules/core-java-lang-oop-3/.gitignore create mode 100644 core-java-modules/core-java-lang-oop-3/README.md create mode 100644 core-java-modules/core-java-lang-oop-3/pom.xml rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-3}/src/main/java/com/baeldung/accessmodifiers/Public.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-3}/src/main/java/com/baeldung/accessmodifiers/SubClass.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-3}/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-3}/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-3}/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-3}/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-3}/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-3}/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-3}/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-3}/src/main/java/com/baeldung/keyword/KeywordDemo.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-3}/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-3}/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-3}/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-3}/src/main/java/com/baeldung/relationships/aggregation/Car.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-3}/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-3}/src/main/java/com/baeldung/relationships/aggregation/Wheel.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-3}/src/main/java/com/baeldung/relationships/association/Child.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-3}/src/main/java/com/baeldung/relationships/association/Mother.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-3}/src/main/java/com/baeldung/relationships/composition/Building.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-3}/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-3}/src/main/java/com/baeldung/relationships/university/Department.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-3}/src/main/java/com/baeldung/relationships/university/Professor.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-3}/src/main/java/com/baeldung/relationships/university/University.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-3}/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java (99%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-3}/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java (99%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-3}/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java (100%) diff --git a/core-java-modules/core-java-lang-oop-2/README.md b/core-java-modules/core-java-lang-oop-2/README.md index 5c615c25df..7fee77d4bb 100644 --- a/core-java-modules/core-java-lang-oop-2/README.md +++ b/core-java-modules/core-java-lang-oop-2/README.md @@ -8,3 +8,8 @@ - [Anonymous Classes in Java](https://www.baeldung.com/java-anonymous-classes) - [Raw Types in Java](https://www.baeldung.com/raw-types-java) - [Java ‘private’ Access Modifier](https://www.baeldung.com/java-private-keyword) +- [Marker Interfaces in Java](https://www.baeldung.com/java-marker-interfaces) +- [Java equals() and hashCode() Contracts](https://www.baeldung.com/java-equals-hashcode-contracts) +- [Immutable Objects in Java](http://www.baeldung.com/java-immutable-object) +- [Inheritance and Composition (Is-a vs Has-a relationship) in Java](http://www.baeldung.com/java-inheritance-composition) +- [A Guide to Constructors in Java](https://www.baeldung.com/java-constructors) diff --git a/core-java-modules/core-java-lang-oop-2/pom.xml b/core-java-modules/core-java-lang-oop-2/pom.xml index b7bd72372b..d27df147b7 100644 --- a/core-java-modules/core-java-lang-oop-2/pom.xml +++ b/core-java-modules/core-java-lang-oop-2/pom.xml @@ -15,16 +15,26 @@ - - com.h2database - h2 - ${h2.version} - test - + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + nl.jqno.equalsverifier + equalsverifier + ${equalsverifier.version} + test + 1.4.199 + + 3.10.0 + 3.0.3 diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/constructors/BankAccount.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/BankAccount.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/constructors/BankAccount.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/BankAccount.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/constructors/Transaction.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/Transaction.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/constructors/Transaction.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/Transaction.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Money.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Money.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Money.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Money.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Team.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Team.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Team.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Team.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Voucher.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Voucher.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Voucher.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Voucher.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/WrongTeam.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongTeam.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/WrongTeam.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongTeam.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Shape.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Shape.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Shape.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Shape.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Square.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Square.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Square.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Square.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/immutableobjects/Currency.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Currency.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/immutableobjects/Currency.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Currency.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/immutableobjects/Money.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Money.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/immutableobjects/Money.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Money.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/application/Application.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/application/Application.java similarity index 67% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/application/Application.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/application/Application.java index 7761fdce56..fc6db9411c 100644 --- a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/application/Application.java +++ b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/application/Application.java @@ -1,12 +1,6 @@ package com.baeldung.inheritancecomposition.application; -import com.baeldung.inheritancecomposition.model.Actress; -import com.baeldung.inheritancecomposition.model.Computer; -import com.baeldung.inheritancecomposition.model.StandardMemory; -import com.baeldung.inheritancecomposition.model.Person; -import com.baeldung.inheritancecomposition.model.StandardProcessor; -import com.baeldung.inheritancecomposition.model.StandardSoundCard; -import com.baeldung.inheritancecomposition.model.Waitress; +import com.baeldung.inheritancecomposition.model.*; public class Application { diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Person.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Person.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Person.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Person.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/DeletableShape.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/DeletableShape.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/DeletableShape.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/DeletableShape.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/Rectangle.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Rectangle.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/Rectangle.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Rectangle.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/Shape.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Shape.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/Shape.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Shape.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/ShapeDao.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/ShapeDao.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/ShapeDao.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/ShapeDao.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java similarity index 96% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java index 66c8520e34..274fe77764 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java @@ -1,11 +1,9 @@ package com.baeldung.constructors; -import com.google.common.collect.Comparators; import org.junit.Test; import java.time.LocalDateTime; import java.time.Month; -import java.util.ArrayList; import java.util.logging.Logger; import static org.assertj.core.api.Assertions.*; diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java index 60584fdb53..8fc99e0e81 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java @@ -1,10 +1,10 @@ package com.baeldung.equalshashcode; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.assertFalse; - import org.junit.Test; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + public class MoneyUnitTest { @Test diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java similarity index 99% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java index a2de408796..7dfc6d47a3 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java @@ -1,14 +1,13 @@ package com.baeldung.equalshashcode; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; +import nl.jqno.equalsverifier.EqualsVerifier; +import org.junit.Test; import java.util.HashMap; import java.util.Map; -import org.junit.Test; - -import nl.jqno.equalsverifier.EqualsVerifier; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; public class TeamUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java similarity index 94% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java index 0cb4ace0ab..05b1e3e0b9 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java @@ -1,13 +1,11 @@ package com.baeldung.equalshashcode.entities; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - import org.junit.Assert; import org.junit.Test; -import com.baeldung.equalshashcode.entities.ComplexClass; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; public class ComplexClassUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java similarity index 89% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java index a25e8bd486..7722ee7605 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java @@ -1,11 +1,9 @@ package com.baeldung.equalshashcode.entities; -import java.awt.Color; - import org.junit.Assert; import org.junit.Test; -import com.baeldung.equalshashcode.entities.Square; +import java.awt.*; public class SquareClassUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java index 01dfeac050..7b917023ee 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java @@ -1,11 +1,11 @@ package com.baeldung.immutableobjects; -import static org.junit.Assert.assertEquals; +import org.junit.Test; import java.util.ArrayList; import java.util.List; -import org.junit.Test; +import static org.junit.Assert.assertEquals; public class ImmutableObjectsUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/ActressUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java similarity index 95% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/ActressUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java index 6dbf2302ae..e174ceceae 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/ActressUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java @@ -1,8 +1,9 @@ -package com.baeldung.inheritancecomposition.test; +package com.baeldung.inheritancecomposition; import com.baeldung.inheritancecomposition.model.Actress; import org.junit.BeforeClass; import org.junit.Test; + import static org.assertj.core.api.Assertions.*; public class ActressUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/CompositionUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java similarity index 61% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/CompositionUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java index 987af047a5..7699ecb4a7 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/CompositionUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java @@ -1,15 +1,12 @@ -package com.baeldung.inheritancecomposition.test; +package com.baeldung.inheritancecomposition; -import com.baeldung.inheritancecomposition.model.Computer; -import com.baeldung.inheritancecomposition.model.Memory; -import com.baeldung.inheritancecomposition.model.Processor; -import com.baeldung.inheritancecomposition.model.StandardMemory; -import com.baeldung.inheritancecomposition.model.StandardProcessor; -import com.baeldung.inheritancecomposition.model.StandardSoundCard; -import java.util.Optional; -import static org.assertj.core.api.Assertions.assertThat; +import com.baeldung.inheritancecomposition.model.*; import org.junit.Test; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; + public class CompositionUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/InheritanceUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java similarity index 93% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/InheritanceUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java index 3ddbc19607..515e05528b 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/InheritanceUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java @@ -1,11 +1,12 @@ -package com.baeldung.inheritancecomposition.test; +package com.baeldung.inheritancecomposition; import com.baeldung.inheritancecomposition.model.Actress; import com.baeldung.inheritancecomposition.model.Person; import com.baeldung.inheritancecomposition.model.Waitress; -import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; + public class InheritanceUnitTest { @Test diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/PersonUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java similarity index 94% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/PersonUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java index 313070b274..ea0b87f6e6 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/PersonUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java @@ -1,8 +1,9 @@ -package com.baeldung.inheritancecomposition.test; +package com.baeldung.inheritancecomposition; import com.baeldung.inheritancecomposition.model.Person; import org.junit.BeforeClass; import org.junit.Test; + import static org.assertj.core.api.Assertions.*; public class PersonUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/WaitressUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java similarity index 96% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/WaitressUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java index c23fc4d403..816868be13 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/WaitressUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java @@ -1,8 +1,9 @@ -package com.baeldung.inheritancecomposition.test; +package com.baeldung.inheritancecomposition; import com.baeldung.inheritancecomposition.model.Waitress; import org.junit.BeforeClass; import org.junit.Test; + import static org.assertj.core.api.Assertions.*; public class WaitressUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java index 81cd51ce51..64e5d8cdb1 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java @@ -1,9 +1,9 @@ package com.baeldung.markerinterface; -import static org.junit.jupiter.api.Assertions.assertEquals; - import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + public class MarkerInterfaceUnitTest { @Test diff --git a/core-java-modules/core-java-lang-oop-3/.gitignore b/core-java-modules/core-java-lang-oop-3/.gitignore new file mode 100644 index 0000000000..3de4cc647e --- /dev/null +++ b/core-java-modules/core-java-lang-oop-3/.gitignore @@ -0,0 +1,26 @@ +*.class + +0.* + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* +.resourceCache + +# Packaged files # +*.jar +*.war +*.ear + +# Files generated by integration tests +*.txt +backup-pom.xml +/bin/ +/temp + +#IntelliJ specific +.idea/ +*.iml \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-3/README.md b/core-java-modules/core-java-lang-oop-3/README.md new file mode 100644 index 0000000000..57df2c1769 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-3/README.md @@ -0,0 +1,11 @@ +========= + +## Core Java Lang OOP 3 Cookbooks and Examples + +### Relevant Articles: +- [Pass-By-Value as a Parameter Passing Mechanism in Java](http://www.baeldung.com/java-pass-by-value-or-pass-by-reference) +- [Access Modifiers in Java](http://www.baeldung.com/java-access-modifiers) +- [Guide to the super Java Keyword](http://www.baeldung.com/java-super) +- [Guide to the this Java Keyword](http://www.baeldung.com/java-this) +- [Java Public Access Modifier](https://www.baeldung.com/java-public-keyword) +- [Composition, Aggregation and Association in Java](https://www.baeldung.com/java-composition-aggregation-association) \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-3/pom.xml b/core-java-modules/core-java-lang-oop-3/pom.xml new file mode 100644 index 0000000000..29807b5bef --- /dev/null +++ b/core-java-modules/core-java-lang-oop-3/pom.xml @@ -0,0 +1,26 @@ + + 4.0.0 + com.baeldung + core-java-lang-oop-3 + 0.1.0-SNAPSHOT + core-java-lang-oop-3 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + com.h2database + h2 + ${h2.version} + test + + + + diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/Public.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/Public.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/Public.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/Public.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/SubClass.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SubClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/SubClass.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SubClass.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/KeywordDemo.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/KeywordDemo.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/KeywordDemo.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/KeywordDemo.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/Car.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/Car.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Car.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/Wheel.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Wheel.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/Wheel.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Wheel.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/association/Child.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Child.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/association/Child.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Child.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/association/Mother.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Mother.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/association/Mother.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Mother.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/composition/Building.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/Building.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/composition/Building.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/Building.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/Department.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Department.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/Department.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Department.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/Professor.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Professor.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/Professor.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Professor.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/University.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/University.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/University.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/University.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java b/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java similarity index 99% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java rename to core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java index a2d891ac93..ed8fb4f45a 100644 --- a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java +++ b/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java @@ -1,14 +1,11 @@ package com.baeldung.accessmodifiers; +import com.baeldung.accessmodifiers.publicmodifier.ListOfThree; +import com.baeldung.accessmodifiers.publicmodifier.Student; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; -import com.baeldung.accessmodifiers.publicmodifier.ListOfThree; -import com.baeldung.accessmodifiers.publicmodifier.Student; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.jupiter.api.Assertions.assertEquals; import java.math.BigDecimal; import java.sql.Connection; import java.sql.DriverManager; @@ -17,6 +14,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; + @TestInstance(Lifecycle.PER_CLASS) public class PublicAccessModifierUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java b/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java similarity index 99% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java rename to core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java index 62f891d11b..bf0d12936d 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java +++ b/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java @@ -27,7 +27,7 @@ public class NonPrimitivesUnitTest { b1.num++; } } - + class Foo { public int num; diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java b/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java rename to core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/README.md b/core-java-modules/core-java-lang-oop/README.md index c9ee9a9e94..1751da8b3e 100644 --- a/core-java-modules/core-java-lang-oop/README.md +++ b/core-java-modules/core-java-lang-oop/README.md @@ -12,13 +12,4 @@ - [Object Type Casting in Java](http://www.baeldung.com/java-type-casting) - [The “final” Keyword in Java](http://www.baeldung.com/java-final) - [Type Erasure in Java Explained](http://www.baeldung.com/java-type-erasure) -- [Pass-By-Value as a Parameter Passing Mechanism in Java](http://www.baeldung.com/java-pass-by-value-or-pass-by-reference) - [Variable and Method Hiding in Java](http://www.baeldung.com/java-variable-method-hiding) -- [Access Modifiers in Java](http://www.baeldung.com/java-access-modifiers) -- [Guide to the super Java Keyword](http://www.baeldung.com/java-super) -- [Guide to the this Java Keyword](http://www.baeldung.com/java-this) -- [Immutable Objects in Java](http://www.baeldung.com/java-immutable-object) -- [Inheritance and Composition (Is-a vs Has-a relationship) in Java](http://www.baeldung.com/java-inheritance-composition) -- [A Guide to Constructors in Java](https://www.baeldung.com/java-constructors) -- [Java equals() and hashCode() Contracts](https://www.baeldung.com/java-equals-hashcode-contracts) -- [Marker Interfaces in Java](https://www.baeldung.com/java-marker-interfaces) diff --git a/core-java-modules/core-java-lang-oop/pom.xml b/core-java-modules/core-java-lang-oop/pom.xml index 46003b132b..d86347b51f 100644 --- a/core-java-modules/core-java-lang-oop/pom.xml +++ b/core-java-modules/core-java-lang-oop/pom.xml @@ -56,12 +56,6 @@ ${assertj-core.version} test - - nl.jqno.equalsverifier - equalsverifier - ${equalsverifier.version} - test - @@ -78,7 +72,6 @@ 2.8.2 3.10.0 - 3.0.3 diff --git a/pom.xml b/pom.xml index 7f92acef6c..297df13b82 100644 --- a/pom.xml +++ b/pom.xml @@ -408,6 +408,7 @@ core-java-modules/core-java-lang-2 core-java-modules/core-java-lang-oop core-java-modules/core-java-lang-oop-2 + core-java-modules/core-java-lang-oop-3 core-java-modules core-java-modules/core-java-networking core-java-modules/core-java-perf @@ -1135,6 +1136,7 @@ core-java-modules/core-java-lang-2 core-java-modules/core-java-lang-oop core-java-modules/core-java-lang-oop-2 + core-java-modules/core-java-lang-oop-3 core-java-modules core-java-modules/core-java-networking core-java-modules/core-java-perf From 8673e3a460e4fa1abb021697525d170fd4d92831 Mon Sep 17 00:00:00 2001 From: Jonathan Cook Date: Thu, 12 Sep 2019 11:37:21 +0200 Subject: [PATCH 35/39] BAEL-3132 - Linux Commands - Loop Through Directories/Folders (#7682) * BAEL-3132 - Linux Commands - Loop Through Directories/Folders * BAEL-3132 - Linux Commands - Loop Through Directories/Folders - update pom description. * BAEL-3132 - Linux Commands - Loop Through Directories/Folders - Add another example using find exec. * BAEL-3132 - Linux Commands - Loop Through Directories/Folders --- linux-bash/loops/src/main/bash/find_directories.sh | 9 +++++++++ linux-bash/loops/src/main/bash/loop_directories.sh | 11 +++++++++++ 2 files changed, 20 insertions(+) create mode 100755 linux-bash/loops/src/main/bash/find_directories.sh create mode 100755 linux-bash/loops/src/main/bash/loop_directories.sh diff --git a/linux-bash/loops/src/main/bash/find_directories.sh b/linux-bash/loops/src/main/bash/find_directories.sh new file mode 100755 index 0000000000..8a9b20294d --- /dev/null +++ b/linux-bash/loops/src/main/bash/find_directories.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +find . -maxdepth 1 -mindepth 1 -type d -printf '%f\n' + +find . -maxdepth 1 -mindepth 1 -type d | while read dir; do + echo "$dir" +done + +find . -maxdepth 1 -type d -exec echo {} \; \ No newline at end of file diff --git a/linux-bash/loops/src/main/bash/loop_directories.sh b/linux-bash/loops/src/main/bash/loop_directories.sh new file mode 100755 index 0000000000..77e661d710 --- /dev/null +++ b/linux-bash/loops/src/main/bash/loop_directories.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +for dir in */; do + echo "$dir" +done + +for file in *; do + if [ -d "$file" ]; then + echo "$file" + fi +done \ No newline at end of file From d96a0726802b73a852e86611691579c6f9590f50 Mon Sep 17 00:00:00 2001 From: catalin-burcea Date: Thu, 12 Sep 2019 12:54:41 +0300 Subject: [PATCH 36/39] Split or move core-java-modules/core-java-networking module --- .../core-java-networking-2/README.md | 2 ++ core-java-modules/core-java-networking-2/pom.xml | 16 +++++++++++++++- .../httprequest/FullResponseBuilder.java | 0 .../httprequest/ParameterStringBuilder.java | 0 .../java/com/baeldung/mail/EmailService.java | 7 ++----- .../httprequest/HttpRequestLiveTest.java | 9 +-------- core-java-modules/core-java-networking/README.md | 2 -- core-java-modules/core-java-networking/pom.xml | 11 ----------- 8 files changed, 20 insertions(+), 27 deletions(-) rename core-java-modules/{core-java-networking => core-java-networking-2}/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java (100%) rename core-java-modules/{core-java-networking => core-java-networking-2}/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java (100%) rename core-java-modules/{core-java-networking => core-java-networking-2}/src/main/java/com/baeldung/mail/EmailService.java (97%) rename core-java-modules/{core-java-networking => core-java-networking-2}/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java (96%) diff --git a/core-java-modules/core-java-networking-2/README.md b/core-java-modules/core-java-networking-2/README.md index 6b6151248e..ce54ce5e56 100644 --- a/core-java-modules/core-java-networking-2/README.md +++ b/core-java-modules/core-java-networking-2/README.md @@ -1,3 +1,5 @@ ### Relevant Articles - [Checking if a URL Exists in Java](https://www.baeldung.com/java-check-url-exists) +- [Do a Simple HTTP Request in Java](http://www.baeldung.com/java-http-request) +- [Sending Emails with Java](http://www.baeldung.com/java-email) diff --git a/core-java-modules/core-java-networking-2/pom.xml b/core-java-modules/core-java-networking-2/pom.xml index 8a26f6ab9f..1e46a9ef7f 100644 --- a/core-java-modules/core-java-networking-2/pom.xml +++ b/core-java-modules/core-java-networking-2/pom.xml @@ -12,9 +12,23 @@ + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + javax.mail + mail + ${javax.mail.version} + core-java-networking-2 - + + + + 1.5.0-b01 + diff --git a/core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java similarity index 100% rename from core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java rename to core-java-modules/core-java-networking-2/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java diff --git a/core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java similarity index 100% rename from core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java rename to core-java-modules/core-java-networking-2/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java diff --git a/core-java-modules/core-java-networking/src/main/java/com/baeldung/mail/EmailService.java b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/mail/EmailService.java similarity index 97% rename from core-java-modules/core-java-networking/src/main/java/com/baeldung/mail/EmailService.java rename to core-java-modules/core-java-networking-2/src/main/java/com/baeldung/mail/EmailService.java index e775b9f708..bd2024fdfa 100644 --- a/core-java-modules/core-java-networking/src/main/java/com/baeldung/mail/EmailService.java +++ b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/mail/EmailService.java @@ -1,15 +1,12 @@ package com.baeldung.mail; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.util.Properties; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; +import java.io.File; +import java.util.Properties; public class EmailService { diff --git a/core-java-modules/core-java-networking/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java b/core-java-modules/core-java-networking-2/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java similarity index 96% rename from core-java-modules/core-java-networking/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java rename to core-java-modules/core-java-networking-2/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java index 77bf9bc8db..41e0f2d6af 100644 --- a/core-java-modules/core-java-networking/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java +++ b/core-java-modules/core-java-networking-2/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java @@ -3,14 +3,7 @@ package com.baeldung.httprequest; import org.apache.commons.lang3.StringUtils; import org.junit.Test; -import com.baeldung.httprequest.FullResponseBuilder; -import com.baeldung.httprequest.ParameterStringBuilder; - -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; +import java.io.*; import java.net.CookieManager; import java.net.HttpCookie; import java.net.HttpURLConnection; diff --git a/core-java-modules/core-java-networking/README.md b/core-java-modules/core-java-networking/README.md index 2341520df7..33fc3684a3 100644 --- a/core-java-modules/core-java-networking/README.md +++ b/core-java-modules/core-java-networking/README.md @@ -7,12 +7,10 @@ - [Connecting Through Proxy Servers in Core Java](https://www.baeldung.com/java-connect-via-proxy-server) - [Broadcasting and Multicasting in Java](http://www.baeldung.com/java-broadcast-multicast) - [A Guide To UDP In Java](http://www.baeldung.com/udp-in-java) -- [Sending Emails with Java](http://www.baeldung.com/java-email) - [A Guide To HTTP Cookies In Java](http://www.baeldung.com/cookies-java) - [A Guide to the Java URL](http://www.baeldung.com/java-url) - [Working with Network Interfaces in Java](http://www.baeldung.com/java-network-interfaces) - [A Guide to Java Sockets](http://www.baeldung.com/a-guide-to-java-sockets) - [Guide to Java URL Encoding/Decoding](http://www.baeldung.com/java-url-encoding-decoding) -- [Do a Simple HTTP Request in Java](http://www.baeldung.com/java-http-request) - [Difference between URL and URI](http://www.baeldung.com/java-url-vs-uri) - [Read an InputStream using the Java Server Socket](https://www.baeldung.com/java-inputstream-server-socket) diff --git a/core-java-modules/core-java-networking/pom.xml b/core-java-modules/core-java-networking/pom.xml index e2ee7b2fcc..b5071bf7df 100644 --- a/core-java-modules/core-java-networking/pom.xml +++ b/core-java-modules/core-java-networking/pom.xml @@ -14,11 +14,6 @@ - - javax.mail - mail - ${javax.mail.version} - commons-io commons-io @@ -29,11 +24,6 @@ spring-web ${springframework.spring-web.version} - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - @@ -41,7 +31,6 @@ - 1.5.0-b01 4.3.4.RELEASE From 1f129995deb23d3ccb89dd84a3d7289b5691959b Mon Sep 17 00:00:00 2001 From: Kamlesh Kumar Date: Thu, 12 Sep 2019 19:28:07 +0530 Subject: [PATCH 37/39] BAEL-3139: Moved code to a new project core-java-concurrency-2 (#7778) --- .../core-java-concurrency-2/.gitignore | 26 ++++++++++++++++++ .../core-java-concurrency-2/README.md | 7 +++++ .../core-java-concurrency-2/pom.xml | 27 +++++++++++++++++++ .../concurrent/mutex/SequenceGenerator.java | 0 .../mutex/SequenceGeneratorUsingMonitor.java | 0 .../SequenceGeneratorUsingReentrantLock.java | 0 .../SequenceGeneratorUsingSemaphore.java | 0 ...quenceGeneratorUsingSynchronizedBlock.java | 0 ...uenceGeneratorUsingSynchronizedMethod.java | 0 .../src/main/resources/logback.xml | 19 +++++++++++++ .../concurrent/mutex/MutexUnitTest.java | 0 .../src/test/resources/.gitignore | 13 +++++++++ 12 files changed, 92 insertions(+) create mode 100644 core-java-modules/core-java-concurrency-2/.gitignore create mode 100644 core-java-modules/core-java-concurrency-2/README.md create mode 100644 core-java-modules/core-java-concurrency-2/pom.xml rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-2}/src/main/java/com/baeldung/concurrent/mutex/SequenceGenerator.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-2}/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingMonitor.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-2}/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingReentrantLock.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-2}/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSemaphore.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-2}/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedBlock.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-2}/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedMethod.java (100%) create mode 100644 core-java-modules/core-java-concurrency-2/src/main/resources/logback.xml rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-2}/src/test/java/com/baeldung/concurrent/mutex/MutexUnitTest.java (100%) create mode 100644 core-java-modules/core-java-concurrency-2/src/test/resources/.gitignore diff --git a/core-java-modules/core-java-concurrency-2/.gitignore b/core-java-modules/core-java-concurrency-2/.gitignore new file mode 100644 index 0000000000..3de4cc647e --- /dev/null +++ b/core-java-modules/core-java-concurrency-2/.gitignore @@ -0,0 +1,26 @@ +*.class + +0.* + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* +.resourceCache + +# Packaged files # +*.jar +*.war +*.ear + +# Files generated by integration tests +*.txt +backup-pom.xml +/bin/ +/temp + +#IntelliJ specific +.idea/ +*.iml \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-2/README.md b/core-java-modules/core-java-concurrency-2/README.md new file mode 100644 index 0000000000..749d174968 --- /dev/null +++ b/core-java-modules/core-java-concurrency-2/README.md @@ -0,0 +1,7 @@ +========= + +## Core Java Concurrency 2 Examples + +### Relevant Articles: +- [Using a Mutex Object in Java](https://www.baeldung.com/java-mutex) + diff --git a/core-java-modules/core-java-concurrency-2/pom.xml b/core-java-modules/core-java-concurrency-2/pom.xml new file mode 100644 index 0000000000..6b179a29c7 --- /dev/null +++ b/core-java-modules/core-java-concurrency-2/pom.xml @@ -0,0 +1,27 @@ + + 4.0.0 + com.baeldung + core-java-concurrency-2 + 0.1.0-SNAPSHOT + core-java-concurrency-2 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + core-java-concurrency-2 + + + src/main/resources + true + + + + + diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGenerator.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGenerator.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGenerator.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGenerator.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingMonitor.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingMonitor.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingMonitor.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingMonitor.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingReentrantLock.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingReentrantLock.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingReentrantLock.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingReentrantLock.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSemaphore.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSemaphore.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSemaphore.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSemaphore.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedBlock.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedBlock.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedBlock.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedBlock.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedMethod.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedMethod.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedMethod.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedMethod.java diff --git a/core-java-modules/core-java-concurrency-2/src/main/resources/logback.xml b/core-java-modules/core-java-concurrency-2/src/main/resources/logback.xml new file mode 100644 index 0000000000..56af2d397e --- /dev/null +++ b/core-java-modules/core-java-concurrency-2/src/main/resources/logback.xml @@ -0,0 +1,19 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/mutex/MutexUnitTest.java b/core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/mutex/MutexUnitTest.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/mutex/MutexUnitTest.java rename to core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/mutex/MutexUnitTest.java diff --git a/core-java-modules/core-java-concurrency-2/src/test/resources/.gitignore b/core-java-modules/core-java-concurrency-2/src/test/resources/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/core-java-modules/core-java-concurrency-2/src/test/resources/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file From c5675b4a314201eaafe02a0bce5a1261eb12e123 Mon Sep 17 00:00:00 2001 From: Antonio Moreno Date: Fri, 13 Sep 2019 05:43:40 +0200 Subject: [PATCH 38/39] adding methods in java tutorial (#7766) * adding methods in java tutorial * adding static method and removing link --- .../com/baeldung/basicmethods/PersonName.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/basicmethods/PersonName.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/basicmethods/PersonName.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/basicmethods/PersonName.java new file mode 100644 index 0000000000..43bbf0dd62 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/basicmethods/PersonName.java @@ -0,0 +1,37 @@ +package com.baeldung.basicmethods; + +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; + +public class PersonName { + + public String getName(String firstName, String lastName) throws RuntimeException { + return firstName + " " + lastName; + } + + public String getName(String firstName, String middleName, String lastName) { + if (!middleName.equals("")) { + return firstName + " " + lastName; + } + return firstName + " " + middleName + " " + lastName; + } + + public void printFullName(String firstName, String lastName) { + System.out.println(firstName + " " + lastName); + } + + public void writeName(String name) throws IOException { + PrintWriter out = new PrintWriter(new FileWriter("OutFile.txt")); + out.println("Name: " + name); + out.close(); + } + + public static String getNameStatic(String firstName, String lastName) { + return firstName + " " + lastName; + } + + public static void callToStaticMethod() { + System.out.println("Name is: " + PersonName.getNameStatic("Alan", "Turing")); + } +} From 2c19d277d447158e7998039eff73b7d4065fde65 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Fri, 13 Sep 2019 16:08:57 +0530 Subject: [PATCH 39/39] BAEL-17420 Slice 16 | The top 100 articles should have their own package in the module (#7747) --- .../java/listInitialization/ListInitializationUnitTest.java | 2 +- .../PostJSONWithHttpURLConnection.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename core-java-modules/core-java/src/main/java/com/baeldung/{urlconnection => jsonposturlconnection}/PostJSONWithHttpURLConnection.java (97%) diff --git a/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java index b484eecef7..25f39e9a13 100644 --- a/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java +++ b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java @@ -42,7 +42,7 @@ public class ListInitializationUnitTest { } @Test - public void givenArrayAsList_whenCreated_thenShareReference() { + public void givenArraysAsList_whenCreated_thenShareReference() { String[] array = { "foo", "bar" }; List list = Arrays.asList(array); array[0] = "baz"; diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/urlconnection/PostJSONWithHttpURLConnection.java b/core-java-modules/core-java/src/main/java/com/baeldung/jsonposturlconnection/PostJSONWithHttpURLConnection.java similarity index 97% rename from core-java-modules/core-java/src/main/java/com/baeldung/urlconnection/PostJSONWithHttpURLConnection.java rename to core-java-modules/core-java/src/main/java/com/baeldung/jsonposturlconnection/PostJSONWithHttpURLConnection.java index 38b4a0411d..b2469ac984 100644 --- a/core-java-modules/core-java/src/main/java/com/baeldung/urlconnection/PostJSONWithHttpURLConnection.java +++ b/core-java-modules/core-java/src/main/java/com/baeldung/jsonposturlconnection/PostJSONWithHttpURLConnection.java @@ -1,4 +1,4 @@ -package com.baeldung.urlconnection; +package com.baeldung.jsonposturlconnection; import java.io.BufferedReader; import java.io.IOException;