From 8bcdfec23e382661627b55a7860f8ae803e0d8f4 Mon Sep 17 00:00:00 2001 From: Swapan Pramanick Date: Fri, 13 Jul 2018 02:26:19 +0530 Subject: [PATCH 001/119] Evaluation Article - Spring web-flux --- spring-5-reactive-webflux/pom.xml | 60 +++++++++++++++++ .../reactive/Spring5ReactiveApplication.java | 15 +++++ .../reactive/client/CabLocationConsumer.java | 66 +++++++++++++++++++ .../reactive/controller/CabController.java | 41 ++++++++++++ .../baeldung/reactive/model/CabLocation.java | 52 +++++++++++++++ .../baeldung/reactive/service/CabService.java | 66 +++++++++++++++++++ .../src/main/resources/logback.xml | 15 +++++ spring-5-reactive-webflux/src/site/site.xml | 26 ++++++++ .../baeldung/reactive/CapLocationTests.java | 66 +++++++++++++++++++ 9 files changed, 407 insertions(+) create mode 100644 spring-5-reactive-webflux/pom.xml create mode 100644 spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/Spring5ReactiveApplication.java create mode 100644 spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/client/CabLocationConsumer.java create mode 100644 spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/controller/CabController.java create mode 100644 spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/model/CabLocation.java create mode 100644 spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/service/CabService.java create mode 100644 spring-5-reactive-webflux/src/main/resources/logback.xml create mode 100644 spring-5-reactive-webflux/src/site/site.xml create mode 100644 spring-5-reactive-webflux/src/test/java/com/baeldung/reactive/CapLocationTests.java diff --git a/spring-5-reactive-webflux/pom.xml b/spring-5-reactive-webflux/pom.xml new file mode 100644 index 0000000000..891f997789 --- /dev/null +++ b/spring-5-reactive-webflux/pom.xml @@ -0,0 +1,60 @@ + + + + 4.0.0 + + com.baeldung + spring-5-reactive-webflux + 1.0-SNAPSHOT + + spring-5-reactive-webflux + A simple spring-5-reactive-webflux. + + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../parent-boot-2 + + + + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-webflux + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + io.projectreactor + reactor-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + com.baeldung.reactive.Spring5ReactiveApplication + JAR + + + + + diff --git a/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/Spring5ReactiveApplication.java b/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/Spring5ReactiveApplication.java new file mode 100644 index 0000000000..d4546efbeb --- /dev/null +++ b/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/Spring5ReactiveApplication.java @@ -0,0 +1,15 @@ +package com.baeldung.reactive; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * A Spring 5 reactive application + * + */ +@SpringBootApplication +public class Spring5ReactiveApplication { + public static void main(String[] args) { + SpringApplication.run(Spring5ReactiveApplication.class, args); + } +} diff --git a/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/client/CabLocationConsumer.java b/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/client/CabLocationConsumer.java new file mode 100644 index 0000000000..42d96f30b8 --- /dev/null +++ b/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/client/CabLocationConsumer.java @@ -0,0 +1,66 @@ +/** + * + */ +package com.baeldung.reactive.client; + +import java.util.UUID; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.reactive.function.client.WebClient; + +import com.baeldung.reactive.model.CabLocation; + +/** + * @author swpraman + * + */ +public class CabLocationConsumer { + + private static final Logger logger = LoggerFactory.getLogger(CabLocationConsumer.class); + + /** + * Main method to consume locations of a cab as a stream + * @param args + */ + public static void main(String[] args) { + + // The id of the booked cab + String cabId = UUID.randomUUID().toString(); + + // URI of the API + String uri = "http://localhost:8080/cab/location/" + cabId; + + // @formatter:off + WebClient.create(uri) + .get() + .retrieve() + .bodyToFlux(CabLocation.class) + .subscribe(CabLocationConsumer::showLocation); + //@formatter:on + + sleepIndefinitely(); + } + + /** + * Helper method to print location of the cab as received from stream + * @param location + */ + private static void showLocation(CabLocation location) { + logger.debug("Current Location : {}", location); + } + + /** + * This method blocks the current thread indefinitely + */ + private static void sleepIndefinitely() { + try { + while (true) { + Thread.sleep(10000); + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + +} diff --git a/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/controller/CabController.java b/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/controller/CabController.java new file mode 100644 index 0000000000..c9d54f917a --- /dev/null +++ b/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/controller/CabController.java @@ -0,0 +1,41 @@ +/** + * + */ +package com.baeldung.reactive.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.reactive.model.CabLocation; +import com.baeldung.reactive.service.CabService; + +import reactor.core.publisher.Flux; + +/** + * @author swpraman + * + */ +@RestController +public class CabController { + + /** + * Logger instance + */ + private static final Logger logger = LoggerFactory.getLogger(CabController.class); + + @Autowired + private CabService cabService; + + // Server sends location of the cab at the interval of 1 sec + @GetMapping(value = "cab/location/{cabId}", produces = MediaType.APPLICATION_STREAM_JSON_VALUE) + public Flux cabLocation(@PathVariable("cabId") String cabId) { + logger.debug("Getting location stream for cabId: {}", cabId); + return cabService.getLocation(cabId); + } + +} diff --git a/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/model/CabLocation.java b/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/model/CabLocation.java new file mode 100644 index 0000000000..dc1ed44520 --- /dev/null +++ b/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/model/CabLocation.java @@ -0,0 +1,52 @@ +/** + * + */ +package com.baeldung.reactive.model; + +import java.io.Serializable; + +/** + * @author swapanpramanick2004 + * + */ +public class CabLocation implements Serializable { + + /** + * Serial version UID + */ + private static final long serialVersionUID = -3923503044822400093L; + + private String cabId; + private double latititude; + private double longitude; + + public String getCabId() { + return cabId; + } + + public void setCabId(String cabId) { + this.cabId = cabId; + } + + public double getLatititude() { + return latititude; + } + + public void setLatititude(double latititude) { + this.latititude = latititude; + } + + public double getLongitude() { + return longitude; + } + + public void setLongitude(double longitude) { + this.longitude = longitude; + } + + @Override + public String toString() { + return "CabLocation [cabId=" + cabId + ", latititude=" + latititude + ", longitude=" + longitude + "]"; + } + +} diff --git a/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/service/CabService.java b/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/service/CabService.java new file mode 100644 index 0000000000..2cee734ce6 --- /dev/null +++ b/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/service/CabService.java @@ -0,0 +1,66 @@ +/** + * + */ +package com.baeldung.reactive.service; + +import java.time.Duration; +import java.util.Random; +import java.util.stream.Stream; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import com.baeldung.reactive.model.CabLocation; + +import reactor.core.publisher.Flux; +import reactor.util.function.Tuple2; + +/** + * @author swpraman + * + */ +@Service +public class CabService { + + /** + * Logger instance + */ + private static final Logger logger = LoggerFactory.getLogger(CabService.class); + + /** + * getLocation service for cab + * @param cabId + * @return + */ + public Flux getLocation(String cabId) { + + // Create a flux to retrieve location + Flux locFlux = Flux.fromStream(Stream.generate(() -> retrieveNewLocation(cabId))); + + // Zip the flux with an interval flux + return Flux.interval(Duration.ofSeconds(1)) + .zipWith(locFlux) + .map(Tuple2::getT2); + } + + /** + * A random instance to create random location parameters + */ + private Random random = new Random(); + + /** + * A Dummy method to return random location. + * In a real project it should retrieve the location from a database or any other data source. + * @param cabId + * @return + */ + private CabLocation retrieveNewLocation(String cabId) { + logger.debug("Retrieveing location for cab: {}", cabId); + CabLocation location = new CabLocation(); + location.setCabId(cabId); + location.setLatititude(random.nextDouble()); + location.setLongitude(random.nextDouble()); + return location; + } +} diff --git a/spring-5-reactive-webflux/src/main/resources/logback.xml b/spring-5-reactive-webflux/src/main/resources/logback.xml new file mode 100644 index 0000000000..bf262ff721 --- /dev/null +++ b/spring-5-reactive-webflux/src/main/resources/logback.xml @@ -0,0 +1,15 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + \ No newline at end of file diff --git a/spring-5-reactive-webflux/src/site/site.xml b/spring-5-reactive-webflux/src/site/site.xml new file mode 100644 index 0000000000..7ca22305ea --- /dev/null +++ b/spring-5-reactive-webflux/src/site/site.xml @@ -0,0 +1,26 @@ + + + + + spring-5-reactive-webflux + https://maven.apache.org/images/apache-maven-project.png + https://www.apache.org/ + + + + https://maven.apache.org/images/maven-logo-black-on-white.png + https://maven.apache.org/ + + + + org.apache.maven.skins + maven-fluido-skin + 1.7 + + + + + + + \ No newline at end of file diff --git a/spring-5-reactive-webflux/src/test/java/com/baeldung/reactive/CapLocationTests.java b/spring-5-reactive-webflux/src/test/java/com/baeldung/reactive/CapLocationTests.java new file mode 100644 index 0000000000..821ba8228b --- /dev/null +++ b/spring-5-reactive-webflux/src/test/java/com/baeldung/reactive/CapLocationTests.java @@ -0,0 +1,66 @@ +package com.baeldung.reactive; + +import java.time.Duration; +import java.util.UUID; + +import org.assertj.core.api.Assertions; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.reactive.server.WebTestClient; + +import com.baeldung.reactive.controller.CabController; +import com.baeldung.reactive.model.CabLocation; +import com.baeldung.reactive.service.CabService; + +import reactor.core.publisher.Flux; +import reactor.test.StepVerifier; +/** + * Unit test for testing Cab Locations + */ +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = { CabController.class, CabService.class }) +@WebFluxTest(controllers = { CabController.class }) +public class CapLocationTests { + + @Autowired + private WebTestClient webClient; + + @Test + public void whenGetAPIConsumed_thenShouldPrintTheLocationAtOneSecInterval() { + + // The id of the booked cab + String cabId = UUID.randomUUID().toString(); + + // URI of the API + String uri = "http://localhost:8080/cab/location/" + cabId; + + // @formatter:off + Flux resultFlux = webClient.get() + .uri(uri).accept(MediaType.APPLICATION_STREAM_JSON) + .exchange() + .returnResult(CabLocation.class) + .getResponseBody(); + + + StepVerifier.create(resultFlux) + .expectSubscription() + .thenAwait(Duration.ofSeconds(1)) + .assertNext(location -> Assertions.assertThat(location) + .hasFieldOrPropertyWithValue("cabId", cabId)) + .thenAwait(Duration.ofSeconds(1)) + .assertNext(location -> Assertions.assertThat(location) + .hasFieldOrPropertyWithValue("cabId", cabId)) + .thenAwait(Duration.ofSeconds(1)) + .assertNext(location -> Assertions.assertThat(location) + .hasFieldOrPropertyWithValue("cabId", cabId)) + .thenCancel() + .verify(); + + // @formatter:on + } +} From f03f66a474b439a732a716b4982709b575fbf798 Mon Sep 17 00:00:00 2001 From: Swapan Pramanick Date: Fri, 13 Jul 2018 02:29:40 +0530 Subject: [PATCH 002/119] Evaluation Article - Spring web-flux --- spring-5-reactive-webflux/src/site/site.xml | 26 --------------------- 1 file changed, 26 deletions(-) delete mode 100644 spring-5-reactive-webflux/src/site/site.xml diff --git a/spring-5-reactive-webflux/src/site/site.xml b/spring-5-reactive-webflux/src/site/site.xml deleted file mode 100644 index 7ca22305ea..0000000000 --- a/spring-5-reactive-webflux/src/site/site.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - spring-5-reactive-webflux - https://maven.apache.org/images/apache-maven-project.png - https://www.apache.org/ - - - - https://maven.apache.org/images/maven-logo-black-on-white.png - https://maven.apache.org/ - - - - org.apache.maven.skins - maven-fluido-skin - 1.7 - - - - - - - \ No newline at end of file From 292193e492a98ea06d6dd2596b49a3486733a609 Mon Sep 17 00:00:00 2001 From: Swapan Pramanick Date: Fri, 13 Jul 2018 10:31:01 +0530 Subject: [PATCH 003/119] Evaluation Article - Spring web-flux --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 0d78e88c7c..45fa1b6e72 100644 --- a/pom.xml +++ b/pom.xml @@ -272,6 +272,7 @@ antlr maven-archetype apache-meecrowave + spring-5-reactive-webflux From 9f88e41aa870ed675f3d19ab602d668162994c9e Mon Sep 17 00:00:00 2001 From: Swapan Pramanick Date: Sat, 14 Jul 2018 17:08:08 +0530 Subject: [PATCH 004/119] Evaluation Article - Spring web-flux --- .../baeldung/reactive/model/CabLocation.java | 23 ++++++++++++++----- .../baeldung/reactive/service/CabService.java | 6 +---- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/model/CabLocation.java b/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/model/CabLocation.java index dc1ed44520..4bc6589c8a 100644 --- a/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/model/CabLocation.java +++ b/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/model/CabLocation.java @@ -17,8 +17,19 @@ public class CabLocation implements Serializable { private static final long serialVersionUID = -3923503044822400093L; private String cabId; - private double latititude; + private double latitude; private double longitude; + + // default constructor + public CabLocation() { + // create a CabLocation with empty values + } + + public CabLocation(String cabId, double latt, double longt) { + this.cabId = cabId; + this.latitude = latt; + this.longitude = longt; + } public String getCabId() { return cabId; @@ -28,12 +39,12 @@ public class CabLocation implements Serializable { this.cabId = cabId; } - public double getLatititude() { - return latititude; + public double getLatitude() { + return latitude; } - public void setLatititude(double latititude) { - this.latititude = latititude; + public void setLatitude(double latititude) { + this.latitude = latititude; } public double getLongitude() { @@ -46,7 +57,7 @@ public class CabLocation implements Serializable { @Override public String toString() { - return "CabLocation [cabId=" + cabId + ", latititude=" + latititude + ", longitude=" + longitude + "]"; + return "CabLocation [cabId=" + cabId + ", latitude=" + latitude + ", longitude=" + longitude + "]"; } } diff --git a/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/service/CabService.java b/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/service/CabService.java index 2cee734ce6..9df56474c1 100644 --- a/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/service/CabService.java +++ b/spring-5-reactive-webflux/src/main/java/com/baeldung/reactive/service/CabService.java @@ -57,10 +57,6 @@ public class CabService { */ private CabLocation retrieveNewLocation(String cabId) { logger.debug("Retrieveing location for cab: {}", cabId); - CabLocation location = new CabLocation(); - location.setCabId(cabId); - location.setLatititude(random.nextDouble()); - location.setLongitude(random.nextDouble()); - return location; + return new CabLocation(cabId, random.nextDouble(), random.nextDouble()); } } From d46873405a67addfaa69aa7855b37af9c4a3df14 Mon Sep 17 00:00:00 2001 From: Swapan Pramanick Date: Thu, 9 Aug 2018 02:07:23 +0530 Subject: [PATCH 005/119] core-scala: initial commit --- core-scala/build.gradle | 13 ++ core-scala/build.sbt | 12 ++ core-scala/pom.xml | 111 ++++++++++++++++++ core-scala/project/Dependencies.scala | 5 + core-scala/project/build.properties | 1 + .../com/baeldung/examples/ClassExamples.scala | 31 +++++ .../examples/CollectionExamples.scala | 22 ++++ .../examples/ExceptionHandlingExamples.scala | 19 +++ .../examples/FirstClassFunctionExamples.scala | 17 +++ .../examples/LoopAndCalculationExamples.scala | 39 ++++++ .../scala/com/baeldung/examples/MyApp.scala | 15 +++ .../baeldung/examples/ObjectExamples.scala | 23 ++++ .../com/baeldung/examples/OptionExample.scala | 12 ++ .../examples/PatternMatchingExample.scala | 22 ++++ .../com/baeldung/examples/TraitExample.scala | 23 ++++ .../com/baeldung/examples/TupleExamples.scala | 18 +++ .../examples/VariableDeclaration.scala | 24 ++++ core-scala/src/test/scala/samples/junit.scala | 17 +++ .../src/test/scala/samples/scalatest.scala | 108 +++++++++++++++++ core-scala/src/test/scala/samples/specs.scala | 31 +++++ core-scala/test.txt | 4 + 21 files changed, 567 insertions(+) create mode 100644 core-scala/build.gradle create mode 100644 core-scala/build.sbt create mode 100644 core-scala/pom.xml create mode 100644 core-scala/project/Dependencies.scala create mode 100644 core-scala/project/build.properties create mode 100644 core-scala/src/main/scala/com/baeldung/examples/ClassExamples.scala create mode 100644 core-scala/src/main/scala/com/baeldung/examples/CollectionExamples.scala create mode 100644 core-scala/src/main/scala/com/baeldung/examples/ExceptionHandlingExamples.scala create mode 100644 core-scala/src/main/scala/com/baeldung/examples/FirstClassFunctionExamples.scala create mode 100644 core-scala/src/main/scala/com/baeldung/examples/LoopAndCalculationExamples.scala create mode 100644 core-scala/src/main/scala/com/baeldung/examples/MyApp.scala create mode 100644 core-scala/src/main/scala/com/baeldung/examples/ObjectExamples.scala create mode 100644 core-scala/src/main/scala/com/baeldung/examples/OptionExample.scala create mode 100644 core-scala/src/main/scala/com/baeldung/examples/PatternMatchingExample.scala create mode 100644 core-scala/src/main/scala/com/baeldung/examples/TraitExample.scala create mode 100644 core-scala/src/main/scala/com/baeldung/examples/TupleExamples.scala create mode 100644 core-scala/src/main/scala/com/baeldung/examples/VariableDeclaration.scala create mode 100644 core-scala/src/test/scala/samples/junit.scala create mode 100644 core-scala/src/test/scala/samples/scalatest.scala create mode 100644 core-scala/src/test/scala/samples/specs.scala create mode 100644 core-scala/test.txt diff --git a/core-scala/build.gradle b/core-scala/build.gradle new file mode 100644 index 0000000000..05b5d5c55a --- /dev/null +++ b/core-scala/build.gradle @@ -0,0 +1,13 @@ +apply plugin: 'scala' + +repositories { + mavenCentral() +} + +dependencies { + compile 'org.scala-lang:scala-library:2.12.6' + testCompile 'org.scalatest:scalatest_2.12:3.0.5' + testCompile 'junit:junit:4.12' +} + + diff --git a/core-scala/build.sbt b/core-scala/build.sbt new file mode 100644 index 0000000000..1e21f71d39 --- /dev/null +++ b/core-scala/build.sbt @@ -0,0 +1,12 @@ +import Dependencies._ + +lazy val root = (project in file(".")). + settings( + inThisBuild(List( + organization := "com.example", + scalaVersion := "2.12.6", + version := "0.1.0-SNAPSHOT" + )), + name := "core-scala", + libraryDependencies += scalaTest % Test + ) diff --git a/core-scala/pom.xml b/core-scala/pom.xml new file mode 100644 index 0000000000..76b6ee0d22 --- /dev/null +++ b/core-scala/pom.xml @@ -0,0 +1,111 @@ + + 4.0.0 + core-scala + 1.0-SNAPSHOT + jar + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + 1.8 + 1.8 + UTF-8 + 2.12.6 + 2.12 + 4.2.0 + + + + + org.scala-lang + scala-library + ${scala.version} + + + + + junit + junit + 4.12 + test + + + org.scalatest + scalatest_${scala.compat.version} + 3.0.5 + test + + + org.specs2 + specs2-core_${scala.compat.version} + ${spec2.version} + test + + + org.specs2 + specs2-junit_${scala.compat.version} + ${spec2.version} + test + + + + + src/main/scala + src/test/scala + + + + net.alchim31.maven + scala-maven-plugin + 3.3.2 + + + + compile + testCompile + + + + -dependencyfile + ${project.build.directory}/.scala_dependencies + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.21.0 + + + true + + + + org.scalatest + scalatest-maven-plugin + 2.0.0 + + ${project.build.directory}/surefire-reports + . + TestSuiteReport.txt + + samples.AppTest + + + + test + + test + + + + + + + diff --git a/core-scala/project/Dependencies.scala b/core-scala/project/Dependencies.scala new file mode 100644 index 0000000000..558929deb6 --- /dev/null +++ b/core-scala/project/Dependencies.scala @@ -0,0 +1,5 @@ +import sbt._ + +object Dependencies { + lazy val scalaTest = "org.scalatest" %% "scalatest" % "3.0.5" +} diff --git a/core-scala/project/build.properties b/core-scala/project/build.properties new file mode 100644 index 0000000000..d6e35076cc --- /dev/null +++ b/core-scala/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.1.6 diff --git a/core-scala/src/main/scala/com/baeldung/examples/ClassExamples.scala b/core-scala/src/main/scala/com/baeldung/examples/ClassExamples.scala new file mode 100644 index 0000000000..75a37e2bab --- /dev/null +++ b/core-scala/src/main/scala/com/baeldung/examples/ClassExamples.scala @@ -0,0 +1,31 @@ +package com.baeldung.examples + +object ClassExamples extends App { + + import java.time._ + class Customer(val id:Int, val name:String, dob:LocalDate) { + + private var _age = calculateAge(dob) + + def age = _age // getter + def age_= (age:Int) = _age = age //setter + + private def calculateAge(dob:LocalDate) = Period + .between(dob, LocalDate.now) + .getYears + + //override def toString: String = s"(id:${id}, name:${name}, age:${age})" + } + val c = new Customer(1, "Varun Sharma", LocalDate.parse("1980-02-27")) + println(c) + + case class Address(addressLn1:String, area:String, city:String, zip:String) + + val address=Address("102, Raycon Lotus Apartment", "AECS Layout", "Bangalore", "560037") + + val anotherAddress = address.copy(addressLn1="41/2, ITPL Road") + + println(address) + println(anotherAddress) + +} diff --git a/core-scala/src/main/scala/com/baeldung/examples/CollectionExamples.scala b/core-scala/src/main/scala/com/baeldung/examples/CollectionExamples.scala new file mode 100644 index 0000000000..1602516067 --- /dev/null +++ b/core-scala/src/main/scala/com/baeldung/examples/CollectionExamples.scala @@ -0,0 +1,22 @@ +package com.baeldung.examples + +object CollectionExamples extends App { + + val aList = List(5, 3, 9, 2) // create a list + val sortedAscList = aList.sorted // sort ascending + val sortedDescList = aList.sortWith(_ > _) // sort descending + val evenList = aList.filter(_%2 == 0) // filter on some condition + + val mySet = Set(10, 20, 5) // create a set + val changedSet = mySet + 50 // add an element + println(changedSet) + val changedSet2 = mySet - 20 // remove an element + println(changedSet2) + + val capitals = Map("Japan" -> "Tokyo", + "England" -> "London", + "India" -> "New Delhi") // create a map + val capitalOfJapan = capitals("Japan") // get from map + println(capitalOfJapan) + +} diff --git a/core-scala/src/main/scala/com/baeldung/examples/ExceptionHandlingExamples.scala b/core-scala/src/main/scala/com/baeldung/examples/ExceptionHandlingExamples.scala new file mode 100644 index 0000000000..16ec7ffdf4 --- /dev/null +++ b/core-scala/src/main/scala/com/baeldung/examples/ExceptionHandlingExamples.scala @@ -0,0 +1,19 @@ +package com.baeldung.examples + +object ExceptionHandlingExamples extends App { + import java.io._ + def printLines(filename:String) = { + var reader:Option[BufferedReader] = None + try { + reader = Some(new BufferedReader(new FileReader(new File(filename)))) + reader.get.lines().forEach(println(_)) + } catch { + case e:FileNotFoundException => println(s"There was no file named ${filename}") + case e:Throwable => throw new Exception("Some error occurred", e) + } finally { + if (reader.isDefined) reader.get.close() + } + } + printLines("test.txt") + +} diff --git a/core-scala/src/main/scala/com/baeldung/examples/FirstClassFunctionExamples.scala b/core-scala/src/main/scala/com/baeldung/examples/FirstClassFunctionExamples.scala new file mode 100644 index 0000000000..bf925f59c7 --- /dev/null +++ b/core-scala/src/main/scala/com/baeldung/examples/FirstClassFunctionExamples.scala @@ -0,0 +1,17 @@ +package com.baeldung.examples + +object FirstClassFunctionExamples extends App { + + def sum(x:Double, y:Double, f:Double => Double) = f(x) + f(y) + + println(sum(3, 4, x => x*x)) // returns 25.0 + + println(sum(3, 4, x => x*x*x)) // returns 91.0 + + println(sum(3, 4, Math.pow(_, 2))) // returns 25.0 + + def max(first:Int, second:Int) = if (first > second) first else second + + println(max(10, -2)) + +} diff --git a/core-scala/src/main/scala/com/baeldung/examples/LoopAndCalculationExamples.scala b/core-scala/src/main/scala/com/baeldung/examples/LoopAndCalculationExamples.scala new file mode 100644 index 0000000000..17091c715d --- /dev/null +++ b/core-scala/src/main/scala/com/baeldung/examples/LoopAndCalculationExamples.scala @@ -0,0 +1,39 @@ +package com.baeldung.examples + +object LoopAndCalculationExamples extends App { + import CalculationUtils._ + println(sumWithWhile(Array(10, 20, 30))) + println(sumWithFor(Array(10, 20, 30))) + println(checkEvenOdd((1 to 10).toArray).toList) + println(filterEvens((1 to 10).toArray).toList) +} + +object CalculationUtils { + + def sumWithWhile(values:Array[Int]) = { + var sum = 0 + var i = 0 + while ( i < values.length) { + sum += values(i) + i+=1 + } + sum + } + + def sumWithFor(values:Array[Int]) = { + var sum = 0 + for (i <- values) { + sum += i + } + sum + } + + def checkEvenOdd(values:Array[Int]) = { + for (i <- values) yield if (i%2 == 0) "Even" else "Odd" + } + + def filterEvens(values:Array[Int]) = + for (i <- values if i%2 == 0) + yield i + +} diff --git a/core-scala/src/main/scala/com/baeldung/examples/MyApp.scala b/core-scala/src/main/scala/com/baeldung/examples/MyApp.scala new file mode 100644 index 0000000000..d0861a8727 --- /dev/null +++ b/core-scala/src/main/scala/com/baeldung/examples/MyApp.scala @@ -0,0 +1,15 @@ +package com.baeldung.examples + +/** + * @author ${user.name} + */ +object MyApp { + + def foo(x : Array[String]) = x.foldLeft("")((a,b) => a + b) + + def main(args : Array[String]) { + println( "Hello World!" ) + println("Number of arguments passed:" + args.length) + } + +} diff --git a/core-scala/src/main/scala/com/baeldung/examples/ObjectExamples.scala b/core-scala/src/main/scala/com/baeldung/examples/ObjectExamples.scala new file mode 100644 index 0000000000..29db276ebd --- /dev/null +++ b/core-scala/src/main/scala/com/baeldung/examples/ObjectExamples.scala @@ -0,0 +1,23 @@ +package com.baeldung.examples + +object ObjectExamples extends App { + + import java.time._ + class Customer(val id:Int, val name:String, private var _age:Int) { + def age = this._age + def age_= (age:Int) = _age = age + } + object Customer { + def apply(id:Int, name:String, age:Int) = new Customer(id, name, age) + + def apply(id:Int, name:String, dob:LocalDate) = { + val p = Period.between(dob, LocalDate.now) + new Customer(id, name, p.getYears) + } + } + val c = Customer(1, "Varun Sharma", LocalDate.parse("1980-02-27")) + + c.age = 20 + println(c.age) + +} diff --git a/core-scala/src/main/scala/com/baeldung/examples/OptionExample.scala b/core-scala/src/main/scala/com/baeldung/examples/OptionExample.scala new file mode 100644 index 0000000000..b0d49af758 --- /dev/null +++ b/core-scala/src/main/scala/com/baeldung/examples/OptionExample.scala @@ -0,0 +1,12 @@ +package com.baeldung.examples + +object OptionExample extends App { + + def minimumEvenNumber(data:Array[Int]) = { + val evens = data.filter(_%2 == 0) + if (evens.isEmpty) None else Some(evens.min) + } + + val minEven = minimumEvenNumber(Array(21, 3, 11, 7)).getOrElse(0) + println(minEven) +} diff --git a/core-scala/src/main/scala/com/baeldung/examples/PatternMatchingExample.scala b/core-scala/src/main/scala/com/baeldung/examples/PatternMatchingExample.scala new file mode 100644 index 0000000000..d476bed60b --- /dev/null +++ b/core-scala/src/main/scala/com/baeldung/examples/PatternMatchingExample.scala @@ -0,0 +1,22 @@ +package com.baeldung.examples + +object PatternMatchingExample extends App { + + abstract class Item + case class Book(title:String, author:String, price:Double) extends Item + case class MusicCD(title:String, genre:String, price:Double) extends Item + + def describe(item:Item) = item match { + + case b:Book if b.price > 1000 => println(s"The book ${b.title} is expensive") + + case b:Book => println(s"The book ${b.title} is written by ${b.author}.") + + case MusicCD(title, "Jazz", _) => println(s"This is a CD of Jazz music.") + + case _ => println("Unknown Item") + + } + + describe(Book("Half Girlfriend", "Chetan Bhagat", 100)) +} diff --git a/core-scala/src/main/scala/com/baeldung/examples/TraitExample.scala b/core-scala/src/main/scala/com/baeldung/examples/TraitExample.scala new file mode 100644 index 0000000000..0775a2bac2 --- /dev/null +++ b/core-scala/src/main/scala/com/baeldung/examples/TraitExample.scala @@ -0,0 +1,23 @@ +package com.baeldung.examples + +import java.io._ + +object TraitExample extends App { + + trait Loggable { + val logger:PrintStream + def getPrefix():String + def log(message:String) = logger.println(s"[${getPrefix()}]:${message}") + } + object CustomerService extends Loggable { + override val logger = System.out + override def getPrefix(): String = "CustomerService" + def retrieve(id:String) = { + log(s"Retrieve with id ${id} called") + // Code to retrieve Customer from DB + } + } + + CustomerService.retrieve("C100") + +} diff --git a/core-scala/src/main/scala/com/baeldung/examples/TupleExamples.scala b/core-scala/src/main/scala/com/baeldung/examples/TupleExamples.scala new file mode 100644 index 0000000000..e9ffbd0aca --- /dev/null +++ b/core-scala/src/main/scala/com/baeldung/examples/TupleExamples.scala @@ -0,0 +1,18 @@ +package com.baeldung.examples + +object TupleExamples extends App { + + val empSal:(String, Int) = ("David", 10000) + + def getMaxMinSalary(empSal:Array[(String, Int)]) = { + val minEmpSal = empSal.minBy(empSal => empSal._2) + val maxEmpSal = empSal.maxBy(empSal => empSal._2) + (maxEmpSal._2, minEmpSal._2) + } + val empSalArr = Array(("David", 12000), ("Maria", 15000), + ("Elisa", 11000), ("Adam", 8000)) + + val (maxSalary, minSalary) = getMaxMinSalary(empSalArr) + println("Max Salary: " + maxSalary + " and Min Salary: " + minSalary) + +} diff --git a/core-scala/src/main/scala/com/baeldung/examples/VariableDeclaration.scala b/core-scala/src/main/scala/com/baeldung/examples/VariableDeclaration.scala new file mode 100644 index 0000000000..6050b4f908 --- /dev/null +++ b/core-scala/src/main/scala/com/baeldung/examples/VariableDeclaration.scala @@ -0,0 +1,24 @@ +package com.baeldung.examples + +object VariableDeclaration extends App { + + val x:Int = 0 + var friend:String = "David" + lazy val greet = "Hello" + friend + val data = Array(2, 4, 5) + + printHelloWorld() + println(sum(10, 20)) + + def printHelloWorld():Unit = { + println("Hello World") + } + + def sum(x:Int, y:Int) = x + y + + def sayGreeting(to:String, greet:String="Hi", message:String = "How are you?") = println(greet + " " + to + ", " + message) + + sayGreeting(to="David", message="How are you doing?") + sayGreeting(greet="Hello", to="Maria") + +} diff --git a/core-scala/src/test/scala/samples/junit.scala b/core-scala/src/test/scala/samples/junit.scala new file mode 100644 index 0000000000..89513d5bbc --- /dev/null +++ b/core-scala/src/test/scala/samples/junit.scala @@ -0,0 +1,17 @@ +package samples + +import org.junit._ +import Assert._ + +@Test +class AppTest { + + @Test + def testOK() = assertTrue(true) + +// @Test +// def testKO() = assertTrue(false) + +} + + diff --git a/core-scala/src/test/scala/samples/scalatest.scala b/core-scala/src/test/scala/samples/scalatest.scala new file mode 100644 index 0000000000..bd10412199 --- /dev/null +++ b/core-scala/src/test/scala/samples/scalatest.scala @@ -0,0 +1,108 @@ +/* + * Copyright 2001-2009 Artima, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package samples + +/* +ScalaTest facilitates different styles of testing by providing traits you can mix +together to get the behavior and syntax you prefer. A few examples are +included here. For more information, visit: + +http://www.scalatest.org/ + +One way to use ScalaTest is to help make JUnit or TestNG tests more +clear and concise. Here's an example: +*/ +import scala.collection._ +import org.scalatest.Assertions +import org.junit.Test + +class StackSuite extends Assertions { + + @Test def stackShouldPopValuesIinLastInFirstOutOrder() { + val stack = new mutable.ArrayStack[Int] + stack.push(1) + stack.push(2) + assert(stack.pop() === 2) + assert(stack.pop() === 1) + } + + @Test def stackShouldThrowRuntimeExceptionIfAnEmptyArrayStackIsPopped() { + val emptyStack = new mutable.ArrayStack[String] + intercept[RuntimeException] { + emptyStack.pop() + } + } +} + +/* +Here's an example of a FunSuite with Matchers mixed in: +*/ +import org.scalatest.FunSuite +import org.scalatest.Matchers + +import org.junit.runner.RunWith +import org.scalatest.junit.JUnitRunner +@RunWith(classOf[JUnitRunner]) +class ListSuite extends FunSuite with Matchers { + + test("An empty list should be empty") { + List() should be ('empty) + Nil should be ('empty) + } + + test("A non-empty list should not be empty") { + List(1, 2, 3) should not be ('empty) + List("fee", "fie", "foe", "fum") should not be ('empty) + } + + test("A list's length should equal the number of elements it contains") { + List() should have length (0) + List(1, 2) should have length (2) + List("fee", "fie", "foe", "fum") should have length (4) + } +} + +/* +ScalaTest also supports the behavior-driven development style, in which you +combine tests with text that specifies the behavior being tested. Here's +an example whose text output when run looks like: + +A Map +- should only contain keys and values that were added to it +- should report its size as the number of key/value pairs it contains +*/ +import org.scalatest.FunSpec + +class ExampleSpec extends FunSpec { + + describe("An ArrayStack") { + + it("should pop values in last-in-first-out order") { + val stack = new mutable.ArrayStack[Int] + stack.push(1) + stack.push(2) + assert(stack.pop() === 2) + assert(stack.pop() === 1) + } + + it("should throw RuntimeException if an empty array stack is popped") { + val emptyStack = new mutable.ArrayStack[Int] + intercept[RuntimeException] { + emptyStack.pop() + } + } + } +} diff --git a/core-scala/src/test/scala/samples/specs.scala b/core-scala/src/test/scala/samples/specs.scala new file mode 100644 index 0000000000..9e4dfe93bb --- /dev/null +++ b/core-scala/src/test/scala/samples/specs.scala @@ -0,0 +1,31 @@ +package samples + +import org.junit.runner.RunWith +import org.specs2.mutable._ +import org.specs2.runner._ + + +/** + * Sample specification. + * + * This specification can be executed with: scala -cp ${package}.SpecsTest + * Or using maven: mvn test + * + * For more information on how to write or run specifications, please visit: + * http://etorreborre.github.com/specs2/guide/org.specs2.guide.Runners.html + * + */ +@RunWith(classOf[JUnitRunner]) +class MySpecTest extends Specification { + "The 'Hello world' string" should { + "contain 11 characters" in { + "Hello world" must have size(11) + } + "start with 'Hello'" in { + "Hello world" must startWith("Hello") + } + "end with 'world'" in { + "Hello world" must endWith("world") + } + } +} diff --git a/core-scala/test.txt b/core-scala/test.txt new file mode 100644 index 0000000000..da431d2039 --- /dev/null +++ b/core-scala/test.txt @@ -0,0 +1,4 @@ +Hi, +This is the lines +from the test file. +Thanks. \ No newline at end of file From 63d89a6b42407c775e6e7c5079aa627640e15856 Mon Sep 17 00:00:00 2001 From: Swapan Pramanick Date: Thu, 9 Aug 2018 02:29:46 +0530 Subject: [PATCH 006/119] adding core-scala to pom --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index a9aaff3e22..1be2bb6120 100644 --- a/pom.xml +++ b/pom.xml @@ -315,6 +315,7 @@ core-java-persistence core-kotlin core-groovy + core-scala core-java-concurrency couchbase deltaspike From b7b9c2baa44b6ce44e06eda6f5d582f462922b83 Mon Sep 17 00:00:00 2001 From: Swapan Pramanick Date: Tue, 11 Sep 2018 21:14:15 +0530 Subject: [PATCH 007/119] Revert "core-scala: initial commit" This reverts commit d46873405a67addfaa69aa7855b37af9c4a3df14. --- core-scala/build.gradle | 13 -- core-scala/build.sbt | 12 -- core-scala/pom.xml | 111 ------------------ core-scala/project/Dependencies.scala | 5 - core-scala/project/build.properties | 1 - .../com/baeldung/examples/ClassExamples.scala | 31 ----- .../examples/CollectionExamples.scala | 22 ---- .../examples/ExceptionHandlingExamples.scala | 19 --- .../examples/FirstClassFunctionExamples.scala | 17 --- .../examples/LoopAndCalculationExamples.scala | 39 ------ .../scala/com/baeldung/examples/MyApp.scala | 15 --- .../baeldung/examples/ObjectExamples.scala | 23 ---- .../com/baeldung/examples/OptionExample.scala | 12 -- .../examples/PatternMatchingExample.scala | 22 ---- .../com/baeldung/examples/TraitExample.scala | 23 ---- .../com/baeldung/examples/TupleExamples.scala | 18 --- .../examples/VariableDeclaration.scala | 24 ---- core-scala/src/test/scala/samples/junit.scala | 17 --- .../src/test/scala/samples/scalatest.scala | 108 ----------------- core-scala/src/test/scala/samples/specs.scala | 31 ----- core-scala/test.txt | 4 - 21 files changed, 567 deletions(-) delete mode 100644 core-scala/build.gradle delete mode 100644 core-scala/build.sbt delete mode 100644 core-scala/pom.xml delete mode 100644 core-scala/project/Dependencies.scala delete mode 100644 core-scala/project/build.properties delete mode 100644 core-scala/src/main/scala/com/baeldung/examples/ClassExamples.scala delete mode 100644 core-scala/src/main/scala/com/baeldung/examples/CollectionExamples.scala delete mode 100644 core-scala/src/main/scala/com/baeldung/examples/ExceptionHandlingExamples.scala delete mode 100644 core-scala/src/main/scala/com/baeldung/examples/FirstClassFunctionExamples.scala delete mode 100644 core-scala/src/main/scala/com/baeldung/examples/LoopAndCalculationExamples.scala delete mode 100644 core-scala/src/main/scala/com/baeldung/examples/MyApp.scala delete mode 100644 core-scala/src/main/scala/com/baeldung/examples/ObjectExamples.scala delete mode 100644 core-scala/src/main/scala/com/baeldung/examples/OptionExample.scala delete mode 100644 core-scala/src/main/scala/com/baeldung/examples/PatternMatchingExample.scala delete mode 100644 core-scala/src/main/scala/com/baeldung/examples/TraitExample.scala delete mode 100644 core-scala/src/main/scala/com/baeldung/examples/TupleExamples.scala delete mode 100644 core-scala/src/main/scala/com/baeldung/examples/VariableDeclaration.scala delete mode 100644 core-scala/src/test/scala/samples/junit.scala delete mode 100644 core-scala/src/test/scala/samples/scalatest.scala delete mode 100644 core-scala/src/test/scala/samples/specs.scala delete mode 100644 core-scala/test.txt diff --git a/core-scala/build.gradle b/core-scala/build.gradle deleted file mode 100644 index 05b5d5c55a..0000000000 --- a/core-scala/build.gradle +++ /dev/null @@ -1,13 +0,0 @@ -apply plugin: 'scala' - -repositories { - mavenCentral() -} - -dependencies { - compile 'org.scala-lang:scala-library:2.12.6' - testCompile 'org.scalatest:scalatest_2.12:3.0.5' - testCompile 'junit:junit:4.12' -} - - diff --git a/core-scala/build.sbt b/core-scala/build.sbt deleted file mode 100644 index 1e21f71d39..0000000000 --- a/core-scala/build.sbt +++ /dev/null @@ -1,12 +0,0 @@ -import Dependencies._ - -lazy val root = (project in file(".")). - settings( - inThisBuild(List( - organization := "com.example", - scalaVersion := "2.12.6", - version := "0.1.0-SNAPSHOT" - )), - name := "core-scala", - libraryDependencies += scalaTest % Test - ) diff --git a/core-scala/pom.xml b/core-scala/pom.xml deleted file mode 100644 index 76b6ee0d22..0000000000 --- a/core-scala/pom.xml +++ /dev/null @@ -1,111 +0,0 @@ - - 4.0.0 - core-scala - 1.0-SNAPSHOT - jar - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - - - 1.8 - 1.8 - UTF-8 - 2.12.6 - 2.12 - 4.2.0 - - - - - org.scala-lang - scala-library - ${scala.version} - - - - - junit - junit - 4.12 - test - - - org.scalatest - scalatest_${scala.compat.version} - 3.0.5 - test - - - org.specs2 - specs2-core_${scala.compat.version} - ${spec2.version} - test - - - org.specs2 - specs2-junit_${scala.compat.version} - ${spec2.version} - test - - - - - src/main/scala - src/test/scala - - - - net.alchim31.maven - scala-maven-plugin - 3.3.2 - - - - compile - testCompile - - - - -dependencyfile - ${project.build.directory}/.scala_dependencies - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.21.0 - - - true - - - - org.scalatest - scalatest-maven-plugin - 2.0.0 - - ${project.build.directory}/surefire-reports - . - TestSuiteReport.txt - - samples.AppTest - - - - test - - test - - - - - - - diff --git a/core-scala/project/Dependencies.scala b/core-scala/project/Dependencies.scala deleted file mode 100644 index 558929deb6..0000000000 --- a/core-scala/project/Dependencies.scala +++ /dev/null @@ -1,5 +0,0 @@ -import sbt._ - -object Dependencies { - lazy val scalaTest = "org.scalatest" %% "scalatest" % "3.0.5" -} diff --git a/core-scala/project/build.properties b/core-scala/project/build.properties deleted file mode 100644 index d6e35076cc..0000000000 --- a/core-scala/project/build.properties +++ /dev/null @@ -1 +0,0 @@ -sbt.version=1.1.6 diff --git a/core-scala/src/main/scala/com/baeldung/examples/ClassExamples.scala b/core-scala/src/main/scala/com/baeldung/examples/ClassExamples.scala deleted file mode 100644 index 75a37e2bab..0000000000 --- a/core-scala/src/main/scala/com/baeldung/examples/ClassExamples.scala +++ /dev/null @@ -1,31 +0,0 @@ -package com.baeldung.examples - -object ClassExamples extends App { - - import java.time._ - class Customer(val id:Int, val name:String, dob:LocalDate) { - - private var _age = calculateAge(dob) - - def age = _age // getter - def age_= (age:Int) = _age = age //setter - - private def calculateAge(dob:LocalDate) = Period - .between(dob, LocalDate.now) - .getYears - - //override def toString: String = s"(id:${id}, name:${name}, age:${age})" - } - val c = new Customer(1, "Varun Sharma", LocalDate.parse("1980-02-27")) - println(c) - - case class Address(addressLn1:String, area:String, city:String, zip:String) - - val address=Address("102, Raycon Lotus Apartment", "AECS Layout", "Bangalore", "560037") - - val anotherAddress = address.copy(addressLn1="41/2, ITPL Road") - - println(address) - println(anotherAddress) - -} diff --git a/core-scala/src/main/scala/com/baeldung/examples/CollectionExamples.scala b/core-scala/src/main/scala/com/baeldung/examples/CollectionExamples.scala deleted file mode 100644 index 1602516067..0000000000 --- a/core-scala/src/main/scala/com/baeldung/examples/CollectionExamples.scala +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung.examples - -object CollectionExamples extends App { - - val aList = List(5, 3, 9, 2) // create a list - val sortedAscList = aList.sorted // sort ascending - val sortedDescList = aList.sortWith(_ > _) // sort descending - val evenList = aList.filter(_%2 == 0) // filter on some condition - - val mySet = Set(10, 20, 5) // create a set - val changedSet = mySet + 50 // add an element - println(changedSet) - val changedSet2 = mySet - 20 // remove an element - println(changedSet2) - - val capitals = Map("Japan" -> "Tokyo", - "England" -> "London", - "India" -> "New Delhi") // create a map - val capitalOfJapan = capitals("Japan") // get from map - println(capitalOfJapan) - -} diff --git a/core-scala/src/main/scala/com/baeldung/examples/ExceptionHandlingExamples.scala b/core-scala/src/main/scala/com/baeldung/examples/ExceptionHandlingExamples.scala deleted file mode 100644 index 16ec7ffdf4..0000000000 --- a/core-scala/src/main/scala/com/baeldung/examples/ExceptionHandlingExamples.scala +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.examples - -object ExceptionHandlingExamples extends App { - import java.io._ - def printLines(filename:String) = { - var reader:Option[BufferedReader] = None - try { - reader = Some(new BufferedReader(new FileReader(new File(filename)))) - reader.get.lines().forEach(println(_)) - } catch { - case e:FileNotFoundException => println(s"There was no file named ${filename}") - case e:Throwable => throw new Exception("Some error occurred", e) - } finally { - if (reader.isDefined) reader.get.close() - } - } - printLines("test.txt") - -} diff --git a/core-scala/src/main/scala/com/baeldung/examples/FirstClassFunctionExamples.scala b/core-scala/src/main/scala/com/baeldung/examples/FirstClassFunctionExamples.scala deleted file mode 100644 index bf925f59c7..0000000000 --- a/core-scala/src/main/scala/com/baeldung/examples/FirstClassFunctionExamples.scala +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.examples - -object FirstClassFunctionExamples extends App { - - def sum(x:Double, y:Double, f:Double => Double) = f(x) + f(y) - - println(sum(3, 4, x => x*x)) // returns 25.0 - - println(sum(3, 4, x => x*x*x)) // returns 91.0 - - println(sum(3, 4, Math.pow(_, 2))) // returns 25.0 - - def max(first:Int, second:Int) = if (first > second) first else second - - println(max(10, -2)) - -} diff --git a/core-scala/src/main/scala/com/baeldung/examples/LoopAndCalculationExamples.scala b/core-scala/src/main/scala/com/baeldung/examples/LoopAndCalculationExamples.scala deleted file mode 100644 index 17091c715d..0000000000 --- a/core-scala/src/main/scala/com/baeldung/examples/LoopAndCalculationExamples.scala +++ /dev/null @@ -1,39 +0,0 @@ -package com.baeldung.examples - -object LoopAndCalculationExamples extends App { - import CalculationUtils._ - println(sumWithWhile(Array(10, 20, 30))) - println(sumWithFor(Array(10, 20, 30))) - println(checkEvenOdd((1 to 10).toArray).toList) - println(filterEvens((1 to 10).toArray).toList) -} - -object CalculationUtils { - - def sumWithWhile(values:Array[Int]) = { - var sum = 0 - var i = 0 - while ( i < values.length) { - sum += values(i) - i+=1 - } - sum - } - - def sumWithFor(values:Array[Int]) = { - var sum = 0 - for (i <- values) { - sum += i - } - sum - } - - def checkEvenOdd(values:Array[Int]) = { - for (i <- values) yield if (i%2 == 0) "Even" else "Odd" - } - - def filterEvens(values:Array[Int]) = - for (i <- values if i%2 == 0) - yield i - -} diff --git a/core-scala/src/main/scala/com/baeldung/examples/MyApp.scala b/core-scala/src/main/scala/com/baeldung/examples/MyApp.scala deleted file mode 100644 index d0861a8727..0000000000 --- a/core-scala/src/main/scala/com/baeldung/examples/MyApp.scala +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.examples - -/** - * @author ${user.name} - */ -object MyApp { - - def foo(x : Array[String]) = x.foldLeft("")((a,b) => a + b) - - def main(args : Array[String]) { - println( "Hello World!" ) - println("Number of arguments passed:" + args.length) - } - -} diff --git a/core-scala/src/main/scala/com/baeldung/examples/ObjectExamples.scala b/core-scala/src/main/scala/com/baeldung/examples/ObjectExamples.scala deleted file mode 100644 index 29db276ebd..0000000000 --- a/core-scala/src/main/scala/com/baeldung/examples/ObjectExamples.scala +++ /dev/null @@ -1,23 +0,0 @@ -package com.baeldung.examples - -object ObjectExamples extends App { - - import java.time._ - class Customer(val id:Int, val name:String, private var _age:Int) { - def age = this._age - def age_= (age:Int) = _age = age - } - object Customer { - def apply(id:Int, name:String, age:Int) = new Customer(id, name, age) - - def apply(id:Int, name:String, dob:LocalDate) = { - val p = Period.between(dob, LocalDate.now) - new Customer(id, name, p.getYears) - } - } - val c = Customer(1, "Varun Sharma", LocalDate.parse("1980-02-27")) - - c.age = 20 - println(c.age) - -} diff --git a/core-scala/src/main/scala/com/baeldung/examples/OptionExample.scala b/core-scala/src/main/scala/com/baeldung/examples/OptionExample.scala deleted file mode 100644 index b0d49af758..0000000000 --- a/core-scala/src/main/scala/com/baeldung/examples/OptionExample.scala +++ /dev/null @@ -1,12 +0,0 @@ -package com.baeldung.examples - -object OptionExample extends App { - - def minimumEvenNumber(data:Array[Int]) = { - val evens = data.filter(_%2 == 0) - if (evens.isEmpty) None else Some(evens.min) - } - - val minEven = minimumEvenNumber(Array(21, 3, 11, 7)).getOrElse(0) - println(minEven) -} diff --git a/core-scala/src/main/scala/com/baeldung/examples/PatternMatchingExample.scala b/core-scala/src/main/scala/com/baeldung/examples/PatternMatchingExample.scala deleted file mode 100644 index d476bed60b..0000000000 --- a/core-scala/src/main/scala/com/baeldung/examples/PatternMatchingExample.scala +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung.examples - -object PatternMatchingExample extends App { - - abstract class Item - case class Book(title:String, author:String, price:Double) extends Item - case class MusicCD(title:String, genre:String, price:Double) extends Item - - def describe(item:Item) = item match { - - case b:Book if b.price > 1000 => println(s"The book ${b.title} is expensive") - - case b:Book => println(s"The book ${b.title} is written by ${b.author}.") - - case MusicCD(title, "Jazz", _) => println(s"This is a CD of Jazz music.") - - case _ => println("Unknown Item") - - } - - describe(Book("Half Girlfriend", "Chetan Bhagat", 100)) -} diff --git a/core-scala/src/main/scala/com/baeldung/examples/TraitExample.scala b/core-scala/src/main/scala/com/baeldung/examples/TraitExample.scala deleted file mode 100644 index 0775a2bac2..0000000000 --- a/core-scala/src/main/scala/com/baeldung/examples/TraitExample.scala +++ /dev/null @@ -1,23 +0,0 @@ -package com.baeldung.examples - -import java.io._ - -object TraitExample extends App { - - trait Loggable { - val logger:PrintStream - def getPrefix():String - def log(message:String) = logger.println(s"[${getPrefix()}]:${message}") - } - object CustomerService extends Loggable { - override val logger = System.out - override def getPrefix(): String = "CustomerService" - def retrieve(id:String) = { - log(s"Retrieve with id ${id} called") - // Code to retrieve Customer from DB - } - } - - CustomerService.retrieve("C100") - -} diff --git a/core-scala/src/main/scala/com/baeldung/examples/TupleExamples.scala b/core-scala/src/main/scala/com/baeldung/examples/TupleExamples.scala deleted file mode 100644 index e9ffbd0aca..0000000000 --- a/core-scala/src/main/scala/com/baeldung/examples/TupleExamples.scala +++ /dev/null @@ -1,18 +0,0 @@ -package com.baeldung.examples - -object TupleExamples extends App { - - val empSal:(String, Int) = ("David", 10000) - - def getMaxMinSalary(empSal:Array[(String, Int)]) = { - val minEmpSal = empSal.minBy(empSal => empSal._2) - val maxEmpSal = empSal.maxBy(empSal => empSal._2) - (maxEmpSal._2, minEmpSal._2) - } - val empSalArr = Array(("David", 12000), ("Maria", 15000), - ("Elisa", 11000), ("Adam", 8000)) - - val (maxSalary, minSalary) = getMaxMinSalary(empSalArr) - println("Max Salary: " + maxSalary + " and Min Salary: " + minSalary) - -} diff --git a/core-scala/src/main/scala/com/baeldung/examples/VariableDeclaration.scala b/core-scala/src/main/scala/com/baeldung/examples/VariableDeclaration.scala deleted file mode 100644 index 6050b4f908..0000000000 --- a/core-scala/src/main/scala/com/baeldung/examples/VariableDeclaration.scala +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.examples - -object VariableDeclaration extends App { - - val x:Int = 0 - var friend:String = "David" - lazy val greet = "Hello" + friend - val data = Array(2, 4, 5) - - printHelloWorld() - println(sum(10, 20)) - - def printHelloWorld():Unit = { - println("Hello World") - } - - def sum(x:Int, y:Int) = x + y - - def sayGreeting(to:String, greet:String="Hi", message:String = "How are you?") = println(greet + " " + to + ", " + message) - - sayGreeting(to="David", message="How are you doing?") - sayGreeting(greet="Hello", to="Maria") - -} diff --git a/core-scala/src/test/scala/samples/junit.scala b/core-scala/src/test/scala/samples/junit.scala deleted file mode 100644 index 89513d5bbc..0000000000 --- a/core-scala/src/test/scala/samples/junit.scala +++ /dev/null @@ -1,17 +0,0 @@ -package samples - -import org.junit._ -import Assert._ - -@Test -class AppTest { - - @Test - def testOK() = assertTrue(true) - -// @Test -// def testKO() = assertTrue(false) - -} - - diff --git a/core-scala/src/test/scala/samples/scalatest.scala b/core-scala/src/test/scala/samples/scalatest.scala deleted file mode 100644 index bd10412199..0000000000 --- a/core-scala/src/test/scala/samples/scalatest.scala +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2001-2009 Artima, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package samples - -/* -ScalaTest facilitates different styles of testing by providing traits you can mix -together to get the behavior and syntax you prefer. A few examples are -included here. For more information, visit: - -http://www.scalatest.org/ - -One way to use ScalaTest is to help make JUnit or TestNG tests more -clear and concise. Here's an example: -*/ -import scala.collection._ -import org.scalatest.Assertions -import org.junit.Test - -class StackSuite extends Assertions { - - @Test def stackShouldPopValuesIinLastInFirstOutOrder() { - val stack = new mutable.ArrayStack[Int] - stack.push(1) - stack.push(2) - assert(stack.pop() === 2) - assert(stack.pop() === 1) - } - - @Test def stackShouldThrowRuntimeExceptionIfAnEmptyArrayStackIsPopped() { - val emptyStack = new mutable.ArrayStack[String] - intercept[RuntimeException] { - emptyStack.pop() - } - } -} - -/* -Here's an example of a FunSuite with Matchers mixed in: -*/ -import org.scalatest.FunSuite -import org.scalatest.Matchers - -import org.junit.runner.RunWith -import org.scalatest.junit.JUnitRunner -@RunWith(classOf[JUnitRunner]) -class ListSuite extends FunSuite with Matchers { - - test("An empty list should be empty") { - List() should be ('empty) - Nil should be ('empty) - } - - test("A non-empty list should not be empty") { - List(1, 2, 3) should not be ('empty) - List("fee", "fie", "foe", "fum") should not be ('empty) - } - - test("A list's length should equal the number of elements it contains") { - List() should have length (0) - List(1, 2) should have length (2) - List("fee", "fie", "foe", "fum") should have length (4) - } -} - -/* -ScalaTest also supports the behavior-driven development style, in which you -combine tests with text that specifies the behavior being tested. Here's -an example whose text output when run looks like: - -A Map -- should only contain keys and values that were added to it -- should report its size as the number of key/value pairs it contains -*/ -import org.scalatest.FunSpec - -class ExampleSpec extends FunSpec { - - describe("An ArrayStack") { - - it("should pop values in last-in-first-out order") { - val stack = new mutable.ArrayStack[Int] - stack.push(1) - stack.push(2) - assert(stack.pop() === 2) - assert(stack.pop() === 1) - } - - it("should throw RuntimeException if an empty array stack is popped") { - val emptyStack = new mutable.ArrayStack[Int] - intercept[RuntimeException] { - emptyStack.pop() - } - } - } -} diff --git a/core-scala/src/test/scala/samples/specs.scala b/core-scala/src/test/scala/samples/specs.scala deleted file mode 100644 index 9e4dfe93bb..0000000000 --- a/core-scala/src/test/scala/samples/specs.scala +++ /dev/null @@ -1,31 +0,0 @@ -package samples - -import org.junit.runner.RunWith -import org.specs2.mutable._ -import org.specs2.runner._ - - -/** - * Sample specification. - * - * This specification can be executed with: scala -cp ${package}.SpecsTest - * Or using maven: mvn test - * - * For more information on how to write or run specifications, please visit: - * http://etorreborre.github.com/specs2/guide/org.specs2.guide.Runners.html - * - */ -@RunWith(classOf[JUnitRunner]) -class MySpecTest extends Specification { - "The 'Hello world' string" should { - "contain 11 characters" in { - "Hello world" must have size(11) - } - "start with 'Hello'" in { - "Hello world" must startWith("Hello") - } - "end with 'world'" in { - "Hello world" must endWith("world") - } - } -} diff --git a/core-scala/test.txt b/core-scala/test.txt deleted file mode 100644 index da431d2039..0000000000 --- a/core-scala/test.txt +++ /dev/null @@ -1,4 +0,0 @@ -Hi, -This is the lines -from the test file. -Thanks. \ No newline at end of file From 9e74f7cd22fdd88826123e2b3f88010233f8c09d Mon Sep 17 00:00:00 2001 From: Rahul Srivastava Date: Wed, 10 Oct 2018 02:58:35 +0530 Subject: [PATCH 008/119] Hexagonal Architecture in Java --- .../baeldung/hexagonal/architecture/Car.java | 35 ++++++++++++++ .../hexagonal/architecture/FordAdapter.java | 48 +++++++++++++++++++ .../hexagonal/architecture/HondaAdapter.java | 48 +++++++++++++++++++ .../architecture/ManufacturingPort.java | 14 ++++++ 4 files changed, 145 insertions(+) create mode 100644 spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java create mode 100644 spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java create mode 100644 spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java create mode 100644 spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/ManufacturingPort.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java new file mode 100644 index 0000000000..79e5ddd061 --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java @@ -0,0 +1,35 @@ +package com.baeldung.hexagonal.architecture; +import lombok.AllArgsConstructor; +import lombok.Data; + +@AllArgsConstructor +@Data +public class Car { + String manufacturerName; + String fuleType; + String modelNo; + String yearOfManufacture; + String vehicleType; + int noOfGears; + + public void startCar() { + //Start the car + } + + public void stopCar() { + //Stop the car + } + + public void changeGear(int gearNo){ + //Change gear + } + + public void openBoot() { + //Open boot of the car + } + + public void enableChildLock() { + //Enable child lock in the car + } + +} diff --git a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java new file mode 100644 index 0000000000..75e83e5dce --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java @@ -0,0 +1,48 @@ +package com.baeldung.hexagonal.architecture; + +import java.util.List; +import java.util.Map; + +public class FordAdapter implements ManufacturingPort { + + @Override + public void manufacturingMethodology(Car car) { + // Process for manufacturing ford car + + } + + @Override + public void manufacturingLocation(String location) { + // Location at which ford manufacturing will take place + + } + + @Override + public void logoForTheCar(Car car) { + // Put ford logo on the car + + } + + @Override + public void timeToMarketForTheCar(Car car) { + // Find time to market for a particular ford car model + + } + + @Override + public List> totalManufacturingVolume() { + // Return car production volume of all ford manufacturing units + return null; + } + + @Override + public List listOfAllFactories() { + // Return list of all ford factories + return null; + } + + public void fordEngineFuelTest(Car car) { + //Do engine test for ford + } + +} diff --git a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java new file mode 100644 index 0000000000..7b6bac1aa6 --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java @@ -0,0 +1,48 @@ +package com.baeldung.hexagonal.architecture; + +import java.util.List; +import java.util.Map; + +public class HondaAdapter implements ManufacturingPort { + + @Override + public void manufacturingMethodology(Car car) { + // Process for manufacturing honda car + + } + + @Override + public void manufacturingLocation(String location) { + // Location at which honda manufacturing will take place + + } + + @Override + public void logoForTheCar(Car car) { + // Put honda logo on the car + + } + + @Override + public void timeToMarketForTheCar(Car car) { + // Find time to market for a particular honda car model + + } + + @Override + public List> totalManufacturingVolume() { + // Return car production volume of all honda manufacturing units + return null; + } + + @Override + public List listOfAllFactories() { + // Return list of all honda factories + return null; + } + + public void carCrashAndSafetyTest(Car car) { + //Do car crash test got honda car + } + +} \ No newline at end of file diff --git a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/ManufacturingPort.java b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/ManufacturingPort.java new file mode 100644 index 0000000000..666e69ac05 --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/ManufacturingPort.java @@ -0,0 +1,14 @@ +package com.baeldung.hexagonal.architecture; + +import java.util.List; +import java.util.Map; + +public interface ManufacturingPort { + + public void manufacturingMethodology(Car car); + public void manufacturingLocation(String location); + public void logoForTheCar(Car car); + public void timeToMarketForTheCar(Car car); + public List> totalManufacturingVolume(); + public List listOfAllFactories(); +} From 0d91f704c289cd8d5cb8b37aaddcff105eb4d142 Mon Sep 17 00:00:00 2001 From: Rahul Srivastava Date: Tue, 16 Oct 2018 01:57:52 +0530 Subject: [PATCH 009/119] Giving proper indentation --- .../main/java/com/baeldung/hexagonal/architecture/Car.java | 2 +- .../com/baeldung/hexagonal/architecture/FordAdapter.java | 5 ----- .../com/baeldung/hexagonal/architecture/HondaAdapter.java | 7 +------ 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java index 79e5ddd061..ebc5f78193 100644 --- a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java +++ b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java @@ -5,6 +5,7 @@ import lombok.Data; @AllArgsConstructor @Data public class Car { + String manufacturerName; String fuleType; String modelNo; @@ -31,5 +32,4 @@ public class Car { public void enableChildLock() { //Enable child lock in the car } - } diff --git a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java index 75e83e5dce..7f4248c17e 100644 --- a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java +++ b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java @@ -8,25 +8,21 @@ public class FordAdapter implements ManufacturingPort { @Override public void manufacturingMethodology(Car car) { // Process for manufacturing ford car - } @Override public void manufacturingLocation(String location) { // Location at which ford manufacturing will take place - } @Override public void logoForTheCar(Car car) { // Put ford logo on the car - } @Override public void timeToMarketForTheCar(Car car) { // Find time to market for a particular ford car model - } @Override @@ -44,5 +40,4 @@ public class FordAdapter implements ManufacturingPort { public void fordEngineFuelTest(Car car) { //Do engine test for ford } - } diff --git a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java index 7b6bac1aa6..d6773d9b6a 100644 --- a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java +++ b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java @@ -7,26 +7,22 @@ public class HondaAdapter implements ManufacturingPort { @Override public void manufacturingMethodology(Car car) { - // Process for manufacturing honda car - + // Process for manufacturing honda car } @Override public void manufacturingLocation(String location) { // Location at which honda manufacturing will take place - } @Override public void logoForTheCar(Car car) { // Put honda logo on the car - } @Override public void timeToMarketForTheCar(Car car) { // Find time to market for a particular honda car model - } @Override @@ -44,5 +40,4 @@ public class HondaAdapter implements ManufacturingPort { public void carCrashAndSafetyTest(Car car) { //Do car crash test got honda car } - } \ No newline at end of file From fcef80587c4f3fd38c77e2055a218b6c11890952 Mon Sep 17 00:00:00 2001 From: Swapan Pramanick Date: Tue, 16 Oct 2018 20:49:12 +0530 Subject: [PATCH 010/119] BAEL-2221 --- .../org/baeldung/web/dto/EmployeeDto.java | 38 ++++++++++ .../java/org/baeldung/web/model/Employee.java | 53 ++++++++++++++ .../baeldung/web/service/EmployeeService.java | 51 ++++++++++++++ .../java/org/baeldung/SpringTestConfig.java | 19 +++++ ...eServiceMockRestServiceServerUnitTest.java | 70 +++++++++++++++++++ .../web/service/EmployeeServiceUnitTest.java | 49 +++++++++++++ .../src/test/resources/logback-test.xml | 23 ++++++ 7 files changed, 303 insertions(+) create mode 100644 spring-resttemplate/src/main/java/org/baeldung/web/dto/EmployeeDto.java create mode 100644 spring-resttemplate/src/main/java/org/baeldung/web/model/Employee.java create mode 100644 spring-resttemplate/src/main/java/org/baeldung/web/service/EmployeeService.java create mode 100644 spring-resttemplate/src/test/java/org/baeldung/SpringTestConfig.java create mode 100644 spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceMockRestServiceServerUnitTest.java create mode 100644 spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java create mode 100644 spring-resttemplate/src/test/resources/logback-test.xml diff --git a/spring-resttemplate/src/main/java/org/baeldung/web/dto/EmployeeDto.java b/spring-resttemplate/src/main/java/org/baeldung/web/dto/EmployeeDto.java new file mode 100644 index 0000000000..44c8ba5074 --- /dev/null +++ b/spring-resttemplate/src/main/java/org/baeldung/web/dto/EmployeeDto.java @@ -0,0 +1,38 @@ +package org.baeldung.web.dto; + +import java.util.Date; + +public class EmployeeDto { + + private String id; + private String name; + private Double salary; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Double getSalary() { + return salary; + } + + public void setSalary(Double salary) { + this.salary = salary; + } + + @Override public String toString() { + return "EmployeeDto{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", salary=" + salary + '}'; + } +} diff --git a/spring-resttemplate/src/main/java/org/baeldung/web/model/Employee.java b/spring-resttemplate/src/main/java/org/baeldung/web/model/Employee.java new file mode 100644 index 0000000000..0981cc2da1 --- /dev/null +++ b/spring-resttemplate/src/main/java/org/baeldung/web/model/Employee.java @@ -0,0 +1,53 @@ +package org.baeldung.web.model; + +import java.util.Date; +import java.util.Objects; + +public class Employee { + + private String id; + private String name; + private Double salary; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Double getSalary() { + return salary; + } + + public void setSalary(Double salary) { + this.salary = salary; + } + + @Override public String toString() { + return "Employee{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", salary=" + salary + '}'; + } + + @Override public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + Employee employee = (Employee) o; + return Objects.equals(id, employee.id) && Objects.equals(name, employee.name) && Objects.equals(salary, employee.salary); + } + + @Override public int hashCode() { + + return Objects.hash(id, name, salary); + } +} diff --git a/spring-resttemplate/src/main/java/org/baeldung/web/service/EmployeeService.java b/spring-resttemplate/src/main/java/org/baeldung/web/service/EmployeeService.java new file mode 100644 index 0000000000..3a0222cb6c --- /dev/null +++ b/spring-resttemplate/src/main/java/org/baeldung/web/service/EmployeeService.java @@ -0,0 +1,51 @@ +package org.baeldung.web.service; + +import org.baeldung.web.dto.EmployeeDto; +import org.baeldung.web.model.Employee; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +@Service +public class EmployeeService { + + static final String EMP_URL_PREFIX = "http://localhost:8080/employee"; + static final String URL_SEP = "/"; + + private static final Logger logger = LoggerFactory.getLogger(EmployeeService.class); + + @Autowired + private RestTemplate restTemplate; + + public EmployeeDto getEmployee(String id) throws Exception { + + Employee emp = null; + try { + + ResponseEntity resp = restTemplate.getForEntity(EMP_URL_PREFIX + + URL_SEP + id, Employee.class); + + if (resp == null || resp.getStatusCode() != HttpStatus.OK + || resp.getBody() == null) { + + throw new Exception("Employee details could not be fetched."); + } + + emp = resp.getBody(); + + EmployeeDto dto = new EmployeeDto(); + dto.setId(emp.getId()); + dto.setName(emp.getName()); + dto.setSalary(emp.getSalary()); + return dto; + + } catch (Exception e) { + logger.error("Error occurred while fetching employee details", e); + throw new Exception("Error occurred while fetching employee details", e); + } + } +} diff --git a/spring-resttemplate/src/test/java/org/baeldung/SpringTestConfig.java b/spring-resttemplate/src/test/java/org/baeldung/SpringTestConfig.java new file mode 100644 index 0000000000..7c4bbb4e5e --- /dev/null +++ b/spring-resttemplate/src/test/java/org/baeldung/SpringTestConfig.java @@ -0,0 +1,19 @@ +package org.baeldung; + +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +@EnableAutoConfiguration +@ComponentScan("org.baeldung") +public class SpringTestConfig { + + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } + +} diff --git a/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceMockRestServiceServerUnitTest.java b/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceMockRestServiceServerUnitTest.java new file mode 100644 index 0000000000..7c2f535fae --- /dev/null +++ b/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceMockRestServiceServerUnitTest.java @@ -0,0 +1,70 @@ +package org.baeldung.web.service; + +import java.net.URI; + +import org.baeldung.SpringTestConfig; +import org.baeldung.web.dto.EmployeeDto; +import org.baeldung.web.model.Employee; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.client.MockRestServiceServer; +import org.springframework.test.web.client.match.MockRestRequestMatchers; +import org.springframework.test.web.client.response.MockRestResponseCreators; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = SpringTestConfig.class) +public class EmployeeServiceMockRestServiceServerUnitTest { + + private static final Logger logger = LoggerFactory.getLogger(EmployeeServiceMockRestServiceServerUnitTest.class); + + @Autowired + EmployeeService empService; + + @Autowired + RestTemplate restTemplate; + + MockRestServiceServer mockServer; + + ObjectMapper mapper = new ObjectMapper(); + + @Before + public void initMocks() { + mockServer = MockRestServiceServer.createServer(restTemplate); + } + + @Test + public void givenMockingIsDoneByMockRestServiceServer_whenGetIsCalled_shouldReturnMockedObject() throws Exception { + String id = "E001"; + Employee emp = new Employee(); + emp.setId(id); + emp.setName("Eric Simmons"); + emp.setSalary(10000.00d); + //employeeDao.create(emp); + + mockServer.expect(MockRestRequestMatchers.requestTo(new URI(EmployeeService.EMP_URL_PREFIX + + EmployeeService.URL_SEP + id))) + .andExpect(MockRestRequestMatchers.method(HttpMethod.GET)) + .andRespond(MockRestResponseCreators.withStatus(HttpStatus.OK) + .contentType(MediaType.APPLICATION_JSON) + .body(mapper.writeValueAsString(emp))); + + EmployeeDto employeeDto = empService.getEmployee(id); + logger.info("Employee received as: {}", employeeDto); + Assert.assertEquals(emp.getName(), employeeDto.getName()); + Assert.assertEquals(emp.getId(), employeeDto.getId()); + } + +} diff --git a/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java b/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java new file mode 100644 index 0000000000..aa323dd685 --- /dev/null +++ b/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java @@ -0,0 +1,49 @@ +package org.baeldung.web.service; + +import org.baeldung.web.dto.EmployeeDto; +import org.baeldung.web.model.Employee; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +public class EmployeeServiceUnitTest { + + private static final Logger logger = LoggerFactory.getLogger(EmployeeServiceUnitTest.class); + + @Mock + RestTemplate restTemplate; + + @Spy + @InjectMocks + EmployeeService empService = new EmployeeService(); + + @Before + public void initMocks() { + MockitoAnnotations.initMocks(this); + } + + @Test + public void givenMockingIsDoneByMockito_whenGetIsCalled_shouldReturnMockedObject() throws Exception { + String id = "E001"; + Employee emp = new Employee(); + emp.setId(id); + emp.setName("Eric Simmons"); + emp.setSalary(10000.00d); + Mockito + .when(restTemplate.getForEntity(EmployeeService.EMP_URL_PREFIX + + EmployeeService.URL_SEP + id, Employee.class)) + .thenReturn(new ResponseEntity(emp, HttpStatus.OK)); + + EmployeeDto employeeDto = empService.getEmployee(id); + logger.info("Employee received as: {}", employeeDto); + Assert.assertEquals(emp.getName(), employeeDto.getName()); + Assert.assertEquals(emp.getSalary(), employeeDto.getSalary()); + } + +} diff --git a/spring-resttemplate/src/test/resources/logback-test.xml b/spring-resttemplate/src/test/resources/logback-test.xml new file mode 100644 index 0000000000..9f48d36486 --- /dev/null +++ b/spring-resttemplate/src/test/resources/logback-test.xml @@ -0,0 +1,23 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + + + + + + + \ No newline at end of file From 9713832dc6c5e92a62acf2b454f923f0f35d2731 Mon Sep 17 00:00:00 2001 From: Swapan Pramanick Date: Tue, 16 Oct 2018 21:01:06 +0530 Subject: [PATCH 011/119] BAEL-2221 --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9fde092896..beb10b3287 100644 --- a/pom.xml +++ b/pom.xml @@ -361,7 +361,6 @@ core-kotlin kotlin-libraries core-groovy - core-scala core-java-concurrency core-java-concurrency-collections couchbase From da052c96d30997706a49ebca75e1cb05b02136b7 Mon Sep 17 00:00:00 2001 From: Swapan Pramanick Date: Wed, 17 Oct 2018 18:11:30 +0530 Subject: [PATCH 012/119] BAEL-2221 --- ...eServiceMockRestServiceServerUnitTest.java | 33 +++++++++++-------- .../web/service/EmployeeServiceUnitTest.java | 7 ++-- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceMockRestServiceServerUnitTest.java b/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceMockRestServiceServerUnitTest.java index 7c2f535fae..f04b0fbc2b 100644 --- a/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceMockRestServiceServerUnitTest.java +++ b/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceMockRestServiceServerUnitTest.java @@ -17,9 +17,13 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.client.ExpectedCount; import org.springframework.test.web.client.MockRestServiceServer; -import org.springframework.test.web.client.match.MockRestRequestMatchers; -import org.springframework.test.web.client.response.MockRestResponseCreators; + +import static org.baeldung.web.service.EmployeeService.EMP_URL_PREFIX; +import static org.baeldung.web.service.EmployeeService.URL_SEP; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.*; +import static org.springframework.test.web.client.response.MockRestResponseCreators.*; import org.springframework.web.client.RestTemplate; import com.fasterxml.jackson.databind.ObjectMapper; @@ -31,14 +35,14 @@ public class EmployeeServiceMockRestServiceServerUnitTest { private static final Logger logger = LoggerFactory.getLogger(EmployeeServiceMockRestServiceServerUnitTest.class); @Autowired - EmployeeService empService; + private EmployeeService empService; @Autowired - RestTemplate restTemplate; + private RestTemplate restTemplate; - MockRestServiceServer mockServer; + private MockRestServiceServer mockServer; - ObjectMapper mapper = new ObjectMapper(); + private ObjectMapper mapper = new ObjectMapper(); @Before public void initMocks() { @@ -52,17 +56,20 @@ public class EmployeeServiceMockRestServiceServerUnitTest { emp.setId(id); emp.setName("Eric Simmons"); emp.setSalary(10000.00d); - //employeeDao.create(emp); - mockServer.expect(MockRestRequestMatchers.requestTo(new URI(EmployeeService.EMP_URL_PREFIX - + EmployeeService.URL_SEP + id))) - .andExpect(MockRestRequestMatchers.method(HttpMethod.GET)) - .andRespond(MockRestResponseCreators.withStatus(HttpStatus.OK) - .contentType(MediaType.APPLICATION_JSON) - .body(mapper.writeValueAsString(emp))); + String fullUri = new StringBuilder().append(EMP_URL_PREFIX).append(URL_SEP) + .append(id).toString(); + + mockServer.expect(ExpectedCount.once(), requestTo(new URI(fullUri))) + .andExpect(method(HttpMethod.GET)) + .andRespond(withStatus(HttpStatus.OK) + .contentType(MediaType.APPLICATION_JSON) + .body(mapper.writeValueAsString(emp))); EmployeeDto employeeDto = empService.getEmployee(id); logger.info("Employee received as: {}", employeeDto); + + mockServer.verify(); Assert.assertEquals(emp.getName(), employeeDto.getName()); Assert.assertEquals(emp.getId(), employeeDto.getId()); } diff --git a/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java b/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java index aa323dd685..ac714bf6db 100644 --- a/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java +++ b/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java @@ -17,14 +17,13 @@ public class EmployeeServiceUnitTest { private static final Logger logger = LoggerFactory.getLogger(EmployeeServiceUnitTest.class); @Mock - RestTemplate restTemplate; + private RestTemplate restTemplate; - @Spy @InjectMocks - EmployeeService empService = new EmployeeService(); + private EmployeeService empService = new EmployeeService(); @Before - public void initMocks() { + public void setup() { MockitoAnnotations.initMocks(this); } From 580ac4772dd4c0587b22719bedbe64fb7c006ddb Mon Sep 17 00:00:00 2001 From: "stone.shi" <10189895@qq.com> Date: Wed, 17 Oct 2018 22:16:13 +0800 Subject: [PATCH 013/119] correct java main method signature, otherwise performance can't be run in IDE --- .../benchmark/MappingFrameworksPerformance.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/performance-tests/src/test/java/com/baeldung/performancetests/benchmark/MappingFrameworksPerformance.java b/performance-tests/src/test/java/com/baeldung/performancetests/benchmark/MappingFrameworksPerformance.java index e781f1fca1..1c9e4c5dc4 100644 --- a/performance-tests/src/test/java/com/baeldung/performancetests/benchmark/MappingFrameworksPerformance.java +++ b/performance-tests/src/test/java/com/baeldung/performancetests/benchmark/MappingFrameworksPerformance.java @@ -97,7 +97,7 @@ public class MappingFrameworksPerformance { sourceCode = new SourceCode("This is source code!"); } - public void main(String[] args) throws IOException, RunnerException { + public static void main(String[] args) throws IOException, RunnerException { org.openjdk.jmh.Main.main(args); } From dbf2721d25e33f63448c7e980b4e80d585bb3b5a Mon Sep 17 00:00:00 2001 From: Swapan Pramanick Date: Mon, 29 Oct 2018 03:14:08 +0530 Subject: [PATCH 014/119] BAEL-2221 --- .../org/baeldung/web/dto/EmployeeDto.java | 38 ------------------ .../java/org/baeldung/web/model/Employee.java | 25 +++++------- .../baeldung/web/service/EmployeeService.java | 30 ++------------ ...eServiceMockRestServiceServerUnitTest.java | 39 +++++++------------ .../web/service/EmployeeServiceUnitTest.java | 25 +++++------- 5 files changed, 38 insertions(+), 119 deletions(-) delete mode 100644 spring-resttemplate/src/main/java/org/baeldung/web/dto/EmployeeDto.java diff --git a/spring-resttemplate/src/main/java/org/baeldung/web/dto/EmployeeDto.java b/spring-resttemplate/src/main/java/org/baeldung/web/dto/EmployeeDto.java deleted file mode 100644 index 44c8ba5074..0000000000 --- a/spring-resttemplate/src/main/java/org/baeldung/web/dto/EmployeeDto.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.baeldung.web.dto; - -import java.util.Date; - -public class EmployeeDto { - - private String id; - private String name; - private Double salary; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public Double getSalary() { - return salary; - } - - public void setSalary(Double salary) { - this.salary = salary; - } - - @Override public String toString() { - return "EmployeeDto{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", salary=" + salary + '}'; - } -} diff --git a/spring-resttemplate/src/main/java/org/baeldung/web/model/Employee.java b/spring-resttemplate/src/main/java/org/baeldung/web/model/Employee.java index 0981cc2da1..7cab4a0430 100644 --- a/spring-resttemplate/src/main/java/org/baeldung/web/model/Employee.java +++ b/spring-resttemplate/src/main/java/org/baeldung/web/model/Employee.java @@ -7,7 +7,14 @@ public class Employee { private String id; private String name; - private Double salary; + + public Employee(String id, String name) { + this.id = id; + this.name = name; + } + + public Employee() { + } public String getId() { return id; @@ -25,29 +32,17 @@ public class Employee { this.name = name; } - public Double getSalary() { - return salary; - } - - public void setSalary(Double salary) { - this.salary = salary; - } - - @Override public String toString() { - return "Employee{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", salary=" + salary + '}'; - } - @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Employee employee = (Employee) o; - return Objects.equals(id, employee.id) && Objects.equals(name, employee.name) && Objects.equals(salary, employee.salary); + return Objects.equals(id, employee.id); } @Override public int hashCode() { - return Objects.hash(id, name, salary); + return Objects.hash(id); } } diff --git a/spring-resttemplate/src/main/java/org/baeldung/web/service/EmployeeService.java b/spring-resttemplate/src/main/java/org/baeldung/web/service/EmployeeService.java index 3a0222cb6c..91614e90ad 100644 --- a/spring-resttemplate/src/main/java/org/baeldung/web/service/EmployeeService.java +++ b/spring-resttemplate/src/main/java/org/baeldung/web/service/EmployeeService.java @@ -1,6 +1,5 @@ package org.baeldung.web.service; -import org.baeldung.web.dto.EmployeeDto; import org.baeldung.web.model.Employee; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -21,31 +20,10 @@ public class EmployeeService { @Autowired private RestTemplate restTemplate; - public EmployeeDto getEmployee(String id) throws Exception { + public Employee getEmployee(String id) { - Employee emp = null; - try { - - ResponseEntity resp = restTemplate.getForEntity(EMP_URL_PREFIX - + URL_SEP + id, Employee.class); - - if (resp == null || resp.getStatusCode() != HttpStatus.OK - || resp.getBody() == null) { - - throw new Exception("Employee details could not be fetched."); - } - - emp = resp.getBody(); - - EmployeeDto dto = new EmployeeDto(); - dto.setId(emp.getId()); - dto.setName(emp.getName()); - dto.setSalary(emp.getSalary()); - return dto; - - } catch (Exception e) { - logger.error("Error occurred while fetching employee details", e); - throw new Exception("Error occurred while fetching employee details", e); - } + ResponseEntity resp = restTemplate.getForEntity("http://localhost:8080/employee/" + id, + Employee.class); + return resp.getStatusCode() == HttpStatus.OK ? resp.getBody() : null; } } diff --git a/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceMockRestServiceServerUnitTest.java b/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceMockRestServiceServerUnitTest.java index f04b0fbc2b..a45af318f1 100644 --- a/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceMockRestServiceServerUnitTest.java +++ b/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceMockRestServiceServerUnitTest.java @@ -1,9 +1,12 @@ package org.baeldung.web.service; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.method; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo; +import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus; + import java.net.URI; import org.baeldung.SpringTestConfig; -import org.baeldung.web.dto.EmployeeDto; import org.baeldung.web.model.Employee; import org.junit.Assert; import org.junit.Before; @@ -19,11 +22,6 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.client.ExpectedCount; import org.springframework.test.web.client.MockRestServiceServer; - -import static org.baeldung.web.service.EmployeeService.EMP_URL_PREFIX; -import static org.baeldung.web.service.EmployeeService.URL_SEP; -import static org.springframework.test.web.client.match.MockRestRequestMatchers.*; -import static org.springframework.test.web.client.response.MockRestResponseCreators.*; import org.springframework.web.client.RestTemplate; import com.fasterxml.jackson.databind.ObjectMapper; @@ -45,33 +43,24 @@ public class EmployeeServiceMockRestServiceServerUnitTest { private ObjectMapper mapper = new ObjectMapper(); @Before - public void initMocks() { + public void init() { mockServer = MockRestServiceServer.createServer(restTemplate); } @Test public void givenMockingIsDoneByMockRestServiceServer_whenGetIsCalled_shouldReturnMockedObject() throws Exception { - String id = "E001"; - Employee emp = new Employee(); - emp.setId(id); - emp.setName("Eric Simmons"); - emp.setSalary(10000.00d); + Employee emp = new Employee("E001", "Eric Simmons"); - String fullUri = new StringBuilder().append(EMP_URL_PREFIX).append(URL_SEP) - .append(id).toString(); - - mockServer.expect(ExpectedCount.once(), requestTo(new URI(fullUri))) - .andExpect(method(HttpMethod.GET)) - .andRespond(withStatus(HttpStatus.OK) - .contentType(MediaType.APPLICATION_JSON) - .body(mapper.writeValueAsString(emp))); - - EmployeeDto employeeDto = empService.getEmployee(id); - logger.info("Employee received as: {}", employeeDto); + mockServer.expect(ExpectedCount.once(), + requestTo(new URI("http://localhost:8080/employee/E001"))) + .andExpect(method(HttpMethod.GET)) + .andRespond(withStatus(HttpStatus.OK) + .contentType(MediaType.APPLICATION_JSON) + .body(mapper.writeValueAsString(emp))); + Employee employee = empService.getEmployee("E001"); mockServer.verify(); - Assert.assertEquals(emp.getName(), employeeDto.getName()); - Assert.assertEquals(emp.getId(), employeeDto.getId()); + Assert.assertEquals(emp, employee); } } diff --git a/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java b/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java index ac714bf6db..ee30c22e9f 100644 --- a/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java +++ b/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java @@ -1,11 +1,13 @@ package org.baeldung.web.service; -import org.baeldung.web.dto.EmployeeDto; import org.baeldung.web.model.Employee; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.mockito.*; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; @@ -29,20 +31,13 @@ public class EmployeeServiceUnitTest { @Test public void givenMockingIsDoneByMockito_whenGetIsCalled_shouldReturnMockedObject() throws Exception { - String id = "E001"; - Employee emp = new Employee(); - emp.setId(id); - emp.setName("Eric Simmons"); - emp.setSalary(10000.00d); - Mockito - .when(restTemplate.getForEntity(EmployeeService.EMP_URL_PREFIX - + EmployeeService.URL_SEP + id, Employee.class)) - .thenReturn(new ResponseEntity(emp, HttpStatus.OK)); + Employee emp = new Employee("E001", "Eric Simmons"); + Mockito.when(restTemplate.getForEntity("http://localhost:8080/employee/E001", Employee.class)) + .thenReturn(new ResponseEntity(emp, HttpStatus.OK)); - EmployeeDto employeeDto = empService.getEmployee(id); - logger.info("Employee received as: {}", employeeDto); - Assert.assertEquals(emp.getName(), employeeDto.getName()); - Assert.assertEquals(emp.getSalary(), employeeDto.getSalary()); + Employee employee = empService.getEmployee("E001"); + + Assert.assertEquals(emp, employee); } } From 30ce9764811f523e6c94c2aa2d8f1724ed8745b1 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Tue, 30 Oct 2018 00:26:21 +0530 Subject: [PATCH 015/119] BAEL-896 Working with dates in Kotlin - Added code for working with dates tutorial --- .../com/baeldung/kotlin/dates/CreateDate.kt | 31 +++++++++++++ .../com/baeldung/kotlin/dates/ExtractDate.kt | 24 ++++++++++ .../com/baeldung/kotlin/dates/PeriodDate.kt | 44 +++++++++++++++++++ .../com/baeldung/kotlin/dates/PrintDate.kt | 26 +++++++++++ 4 files changed, 125 insertions(+) create mode 100644 kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/CreateDate.kt create mode 100644 kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/ExtractDate.kt create mode 100644 kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PeriodDate.kt create mode 100644 kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PrintDate.kt diff --git a/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/CreateDate.kt b/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/CreateDate.kt new file mode 100644 index 0000000000..78705fc151 --- /dev/null +++ b/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/CreateDate.kt @@ -0,0 +1,31 @@ +package com.baeldung.kotlin.dates + +import java.time.LocalDate +import java.time.format.DateTimeFormatter + +fun createDateUsingParseMethodDefaultFormat() { + + var date = LocalDate.parse("2018-12-31") + println(date) +} + +fun createDateUsingParseMethodCustomFormat() { + + var formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy") + + var date = LocalDate.parse("31-12-2018", formatter) + + println(date) +} + +fun createDateUsingOfMethod() { + var date = LocalDate.of(2018, 12, 31) + println(date) + +} + +fun main(args: Array) { + + createDateUsingParseMethodCustomFormat() + createDateUsingOfMethod() +} \ No newline at end of file diff --git a/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/ExtractDate.kt b/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/ExtractDate.kt new file mode 100644 index 0000000000..f5291b63db --- /dev/null +++ b/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/ExtractDate.kt @@ -0,0 +1,24 @@ +package com.baeldung.kotlin.dates + +import java.time.LocalDate + +fun extractingCommonComponents() { + var date = LocalDate.parse("2018-12-31") + + println(date.year) + println(date.month) + println(date.dayOfMonth) +} + +fun extractingEraDowDoy() { + var date = LocalDate.parse("2018-12-31") + + println(date.era) + println(date.dayOfWeek) + println(date.dayOfYear) +} + +fun main(args: Array) { + extractingCommonComponents() + extractingEraDowDoy() +} \ No newline at end of file diff --git a/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PeriodDate.kt b/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PeriodDate.kt new file mode 100644 index 0000000000..f8689c55be --- /dev/null +++ b/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PeriodDate.kt @@ -0,0 +1,44 @@ +package com.baeldung.kotlin.dates + +import java.time.LocalDate +import java.time.Period + +fun createAPeriod() { + var period = Period.of(1, 2, 3) + + println(period) +} + +fun addAPeriod() { + var period = Period.of(1, 2, 3) + + var date = LocalDate.of(2018, 6, 25) + var modifiedDate = date.plus(period) + + println(modifiedDate) +} + +fun subtractAPeriod() { + var period = Period.of(1, 2, 3) + + var date = LocalDate.of(2018, 6, 25) + var modifiedDate = date.minus(period) + + println(modifiedDate) +} + +fun getAPeriod() { + + var date1 = LocalDate.parse("2018-06-25") + var date2 = LocalDate.parse("2018-12-25") + + var period = Period.between(date1, date2) + println(period) +} + +fun main(args: Array) { + createAPeriod() + addAPeriod() + subtractAPeriod() + getAPeriod() +} \ No newline at end of file diff --git a/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PrintDate.kt b/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PrintDate.kt new file mode 100644 index 0000000000..73380e3152 --- /dev/null +++ b/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PrintDate.kt @@ -0,0 +1,26 @@ +package com.baeldung.kotlin.dates + +import java.time.LocalDate +import java.time.format.DateTimeFormatter + +fun printDateDefaultFormat() { + + var date = LocalDate.parse("2018-12-31") + println(date) +} + +fun printDateUsingCustomFormat() { + + var date = LocalDate.parse("2018-12-31") + + var formatter = DateTimeFormatter.ofPattern("dd-MMMM-yyyy") + var formattedDate = date.format(formatter) + println(formattedDate) +} + +fun main(args: Array) { + + printDateDefaultFormat() + + printDateUsingCustomFormat() +} \ No newline at end of file From ff8380a954c4e10abfdb477f711eb326d4c470f6 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Tue, 30 Oct 2018 09:27:49 +0800 Subject: [PATCH 016/119] add random string test --- .../com/baeldung/random/RandomStringTest.kt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt diff --git a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt new file mode 100644 index 0000000000..b8d0bd49cd --- /dev/null +++ b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt @@ -0,0 +1,18 @@ + +import org.junit.jupiter.api.Test +import java.util.concurrent.ThreadLocalRandom +import kotlin.test.assertTrue + +class RandomNumberTest { + + @Test + fun whenRandomNumberWithJavaUtilMath_thenResultIsBetween0And1() { + val source = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + var test = Random().ints(outputStrLength, 0, source.length) + .asSequence() + .map(source::get) + .joinToString("") + print("message") + } + +} \ No newline at end of file From 3221968f9e4e3fb58f5039c80c68b0092bcbc77a Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Tue, 30 Oct 2018 13:40:59 +0800 Subject: [PATCH 017/119] BAEL-1913 kotline random string --- core-kotlin/pom.xml | 6 +++ .../com/baeldung/random/RandomStringTest.kt | 50 +++++++++++++++---- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/core-kotlin/pom.xml b/core-kotlin/pom.xml index 5cdb5f700e..2b559b19e0 100644 --- a/core-kotlin/pom.xml +++ b/core-kotlin/pom.xml @@ -18,6 +18,11 @@ commons-math3 ${commons-math3.version} + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + org.junit.platform junit-platform-runner @@ -70,6 +75,7 @@ 3.6.1 + 3.8.1 1.1.1 5.2.0 3.10.0 diff --git a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt index b8d0bd49cd..b47a6ac455 100644 --- a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt +++ b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt @@ -1,18 +1,50 @@ - +import org.apache.commons.lang3.RandomStringUtils import org.junit.jupiter.api.Test -import java.util.concurrent.ThreadLocalRandom -import kotlin.test.assertTrue +import kotlin.streams.asSequence +import kotlin.test.assertEquals -class RandomNumberTest { +const val STRING_LENGTH = 10; +const val ALPHANUMERIC_REGEX = "[a-zA-Z0-9]+"; + +class RandomStringTest { @Test - fun whenRandomNumberWithJavaUtilMath_thenResultIsBetween0And1() { - val source = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - var test = Random().ints(outputStrLength, 0, source.length) + fun generateRandomString_useJava_returnString() { + val charPool = ArrayList(); + charPool.addAll('a'..'z'); + charPool.addAll('A'..'Z'); + charPool.addAll('0'..'9'); + + var randomString = java.util.Random().ints(STRING_LENGTH.toLong(), 0, charPool.size) .asSequence() - .map(source::get) + .map(charPool::get) .joinToString("") - print("message") + + assert(randomString.matches(Regex(ALPHANUMERIC_REGEX))); + assertEquals(STRING_LENGTH, randomString.length); + } + + @Test + fun generateRandomString_useKotlin_returnString() { + val charPool = ArrayList(); + charPool.addAll('a'..'z'); + charPool.addAll('A'..'Z'); + charPool.addAll('0'..'9'); + + var randomString = (1..STRING_LENGTH).map { i -> kotlin.random.Random.nextInt(0, charPool.size) } + .map(charPool::get) + .joinToString(""); + + assert(randomString.matches(Regex(ALPHANUMERIC_REGEX))); + assertEquals(STRING_LENGTH, randomString.length); + } + + @Test + fun generateRandomString_useApacheCommon_returnString() { + var randomString = RandomStringUtils.randomAlphanumeric(STRING_LENGTH); + + assert(randomString.matches(Regex(ALPHANUMERIC_REGEX))); + assertEquals(STRING_LENGTH, randomString.length); } } \ No newline at end of file From 261694815af5e644f8036846330109df126123a3 Mon Sep 17 00:00:00 2001 From: Ekaterina Galkina Date: Tue, 30 Oct 2018 19:22:35 +0500 Subject: [PATCH 018/119] BAEL-2276 --- .../PublishSubscibeChannelExample.java | 72 ++++++++++++++ .../RouteToRecipientsExample.java | 71 +++++++++++++ .../separateflows/SeparateFlowsExample.java | 99 +++++++++++++++++++ .../subflowchannel/FilterExample.java | 75 ++++++++++++++ .../subflowmapping/RouterExample.java | 70 +++++++++++++ 5 files changed, 387 insertions(+) create mode 100644 spring-integration/src/main/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscibeChannelExample.java create mode 100644 spring-integration/src/main/java/com/baeldung/subflows/routeToRecipients/RouteToRecipientsExample.java create mode 100644 spring-integration/src/main/java/com/baeldung/subflows/separateflows/SeparateFlowsExample.java create mode 100644 spring-integration/src/main/java/com/baeldung/subflows/subflowchannel/FilterExample.java create mode 100644 spring-integration/src/main/java/com/baeldung/subflows/subflowmapping/RouterExample.java diff --git a/spring-integration/src/main/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscibeChannelExample.java b/spring-integration/src/main/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscibeChannelExample.java new file mode 100644 index 0000000000..ad1535da6f --- /dev/null +++ b/spring-integration/src/main/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscibeChannelExample.java @@ -0,0 +1,72 @@ +package com.baeldung.subflows.publishsubscribechannel; + +import java.util.Arrays; +import java.util.Collection; + +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.integration.annotation.Gateway; +import org.springframework.integration.annotation.IntegrationComponentScan; +import org.springframework.integration.annotation.MessagingGateway; +import org.springframework.integration.channel.DirectChannel; +import org.springframework.integration.config.EnableIntegration; +import org.springframework.integration.dsl.IntegrationFlow; + +@EnableIntegration +@IntegrationComponentScan +public class PublishSubscibeChannelExample { + + @MessagingGateway + public interface I { + + @Gateway(requestChannel = "flow.input") + void flow(Collection is); + + } + + @Bean + DirectChannel multipleof3Channel() { + return new DirectChannel(); + } + + @Bean + DirectChannel remainderIs1Channel() { + return new DirectChannel(); + } + + @Bean + DirectChannel remainderIs2Channel() { + return new DirectChannel(); + } + + @Bean + public IntegrationFlow flow() { + return flow -> flow.split() + .publishSubscribeChannel(s -> + s.subscribe(f -> f. filter(p -> p % 3 == 0).channel("multipleof3Channel")) + .subscribe(f -> f. filter(p -> p % 3 == 1).channel("remainderIs1Channel")) + .subscribe(f -> f. filter(p -> p % 3 == 2).channel("remainderIs2Channel")) + ); + } + + public static void main(String[] args) { + final ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(PublishSubscibeChannelExample.class); + + DirectChannel multipleof3Channel = ctx.getBean("multipleof3Channel", DirectChannel.class); + multipleof3Channel.subscribe(x -> System.out.println("multipleof3Channel: " + x)); + + DirectChannel remainderIs1Channel = ctx.getBean("remainderIs1Channel", DirectChannel.class); + remainderIs1Channel.subscribe(x -> System.out.println("remainderIs1Channel: " + x)); + + DirectChannel remainderIs2Channel = ctx.getBean("remainderIs2Channel", DirectChannel.class); + remainderIs2Channel.subscribe(x -> System.out.println("remainderIs2Channel: " + x)); + + ctx.getBean(I.class) + .flow(Arrays.asList(1, 2, 3, 4, 5, 6)); + + ctx.close(); + + } + +} diff --git a/spring-integration/src/main/java/com/baeldung/subflows/routeToRecipients/RouteToRecipientsExample.java b/spring-integration/src/main/java/com/baeldung/subflows/routeToRecipients/RouteToRecipientsExample.java new file mode 100644 index 0000000000..c22072b1ff --- /dev/null +++ b/spring-integration/src/main/java/com/baeldung/subflows/routeToRecipients/RouteToRecipientsExample.java @@ -0,0 +1,71 @@ +package com.baeldung.subflows.routeToRecipients; + +import java.util.Arrays; +import java.util.Collection; + +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.integration.annotation.Gateway; +import org.springframework.integration.annotation.IntegrationComponentScan; +import org.springframework.integration.annotation.MessagingGateway; +import org.springframework.integration.channel.DirectChannel; +import org.springframework.integration.config.EnableIntegration; +import org.springframework.integration.dsl.IntegrationFlow; + +@EnableIntegration +@IntegrationComponentScan +public class RouteToRecipientsExample { + + @MessagingGateway + public interface I { + + @Gateway(requestChannel = "flow.input") + void flow(Collection is); + + } + + @Bean + DirectChannel multipleof3Channel() { + return new DirectChannel(); + } + + @Bean + DirectChannel remainderIs1Channel() { + return new DirectChannel(); + } + + @Bean + DirectChannel remainderIs2Channel() { + return new DirectChannel(); + } + + @Bean + public IntegrationFlow flow() { + return flow -> flow.split() + + .routeToRecipients(r -> r. recipient("multipleof3Channel", p -> p % 3 == 0)// filter + . recipient("remainderIs1Channel", p -> p % 3 == 1) + .recipientFlow(sf -> sf. filter(p -> p % 3 == 2) + .channel("remainderIs2Channel"))); + } + + public static void main(String[] args) { + final ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(RouteToRecipientsExample.class); + + DirectChannel multipleof3Channel = ctx.getBean("multipleof3Channel", DirectChannel.class); + multipleof3Channel.subscribe(x -> System.out.println("multipleof3Channel: " + x)); + + DirectChannel remainderIs1Channel = ctx.getBean("remainderIs1Channel", DirectChannel.class); + remainderIs1Channel.subscribe(x -> System.out.println("remainderIs1Channel: " + x)); + + DirectChannel remainderIs2Channel = ctx.getBean("remainderIs2Channel", DirectChannel.class); + remainderIs2Channel.subscribe(x -> System.out.println("remainderIs2Channel: " + x)); + + ctx.getBean(I.class) + .flow(Arrays.asList(1, 2, 3, 4, 5, 6)); + + ctx.close(); + + } +} \ No newline at end of file diff --git a/spring-integration/src/main/java/com/baeldung/subflows/separateflows/SeparateFlowsExample.java b/spring-integration/src/main/java/com/baeldung/subflows/separateflows/SeparateFlowsExample.java new file mode 100644 index 0000000000..ccd49affd0 --- /dev/null +++ b/spring-integration/src/main/java/com/baeldung/subflows/separateflows/SeparateFlowsExample.java @@ -0,0 +1,99 @@ +package com.baeldung.subflows.separateflows; + +import java.util.Arrays; +import java.util.Collection; + +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.integration.annotation.Gateway; +import org.springframework.integration.annotation.IntegrationComponentScan; +import org.springframework.integration.annotation.MessagingGateway; +import org.springframework.integration.channel.DirectChannel; +import org.springframework.integration.config.EnableIntegration; +import org.springframework.integration.dsl.IntegrationFlow; + +@EnableIntegration +@IntegrationComponentScan +public class SeparateFlowsExample { + + @MessagingGateway + public interface I { + + @Gateway(requestChannel = "multipleof3Flow.input") + void multipleof3(Collection is); + + @Gateway(requestChannel = "remainderIs1Flow.input") + void remainderIs1(Collection is); + + @Gateway(requestChannel = "remainderIs2Flow.input") + void remainderIs2(Collection is); + + } + + @Bean + DirectChannel multipleof3Channel() { + return new DirectChannel(); + } + + @Bean + DirectChannel remainderIs1Channel() { + return new DirectChannel(); + } + + @Bean + DirectChannel remainderIs2Channel() { + return new DirectChannel(); + } + + @Bean + public IntegrationFlow multipleof3Flow() { + return f -> f.split() + . filter(p -> p % 3 == 0) + .channel("multipleof3Channel"); + + } + + @Bean + public IntegrationFlow remainderIs1Flow() { + return f -> f.split() + . filter(p -> p % 3 == 1) + .channel("remainderIs1Channel"); + + } + + @Bean + public IntegrationFlow remainderIs2Flow() { + return f -> f.split() + . filter(p -> p % 3 == 2) + .channel("remainderIs2Channel"); + + } + + public static void main(String[] args) { + + final ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(SeparateFlowsExample.class); + + DirectChannel multipleof3Channel = ctx.getBean("multipleof3Channel", DirectChannel.class); + multipleof3Channel.subscribe(x -> System.out.println("multipleof3Channel: " + x)); + + DirectChannel remainderIs1Channel = ctx.getBean("remainderIs1Channel", DirectChannel.class); + remainderIs1Channel.subscribe(x -> System.out.println("remainderIs1Channel: " + x)); + + DirectChannel remainderIs2Channel = ctx.getBean("remainderIs2Channel", DirectChannel.class); + remainderIs2Channel.subscribe(x -> System.out.println("remainderIs2Channel: " + x)); + + ctx.getBean(I.class) + .multipleof3(Arrays.asList(1, 2, 3, 4, 5, 6)); + + ctx.getBean(I.class) + .remainderIs1(Arrays.asList(1, 2, 3, 4, 5, 6)); + + ctx.getBean(I.class) + .remainderIs2(Arrays.asList(1, 2, 3, 4, 5, 6)); + + ctx.close(); + + } + +} diff --git a/spring-integration/src/main/java/com/baeldung/subflows/subflowchannel/FilterExample.java b/spring-integration/src/main/java/com/baeldung/subflows/subflowchannel/FilterExample.java new file mode 100644 index 0000000000..f8034ab5bd --- /dev/null +++ b/spring-integration/src/main/java/com/baeldung/subflows/subflowchannel/FilterExample.java @@ -0,0 +1,75 @@ +package com.baeldung.subflows.subflowchannel; + +import java.util.Arrays; +import java.util.Collection; + +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.integration.annotation.Gateway; +import org.springframework.integration.annotation.IntegrationComponentScan; +import org.springframework.integration.annotation.MessagingGateway; +import org.springframework.integration.channel.DirectChannel; +import org.springframework.integration.config.EnableIntegration; +import org.springframework.integration.dsl.IntegrationFlow; + +@EnableIntegration +@IntegrationComponentScan +public class FilterExample { + + @MessagingGateway + public interface I { + + @Gateway(requestChannel = "flow.input") + void flow(Collection is); + + } + + @Bean + DirectChannel multipleof3Channel() { + return new DirectChannel(); + } + + @Bean + DirectChannel remainderIs1Channel() { + return new DirectChannel(); + } + + @Bean + DirectChannel remainderIs2Channel() { + return new DirectChannel(); + } + + @Bean + public IntegrationFlow flow() { + return flow -> flow.split() + + . filter(x -> x % 3 == 0, sf -> sf.discardFlow(subf -> subf + + . filter(x -> x % 3 == 1, ssf -> ssf.discardChannel("remainderIs2Channel")) + .channel("remainderIs1Channel") + + )) + + .channel("multipleof3Channel"); + } + + public static void main(String[] args) { + final ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(FilterExample.class); + + DirectChannel multipleof3Channel = ctx.getBean("multipleof3Channel", DirectChannel.class); + multipleof3Channel.subscribe(x -> System.out.println("multipleof3Channel: " + x)); + + DirectChannel remainderIs1Channel = ctx.getBean("remainderIs1Channel", DirectChannel.class); + remainderIs1Channel.subscribe(x -> System.out.println("remainderIs1Channel: " + x)); + + DirectChannel remainderIs2Channel = ctx.getBean("remainderIs2Channel", DirectChannel.class); + remainderIs2Channel.subscribe(x -> System.out.println("remainderIs2Channel: " + x)); + + ctx.getBean(I.class) + .flow(Arrays.asList(1, 2, 3, 4, 5, 6)); + + ctx.close(); + + } +} \ No newline at end of file diff --git a/spring-integration/src/main/java/com/baeldung/subflows/subflowmapping/RouterExample.java b/spring-integration/src/main/java/com/baeldung/subflows/subflowmapping/RouterExample.java new file mode 100644 index 0000000000..cbef3ca219 --- /dev/null +++ b/spring-integration/src/main/java/com/baeldung/subflows/subflowmapping/RouterExample.java @@ -0,0 +1,70 @@ +package com.baeldung.subflows.subflowmapping; + +import java.util.Arrays; +import java.util.Collection; + +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.integration.annotation.Gateway; +import org.springframework.integration.annotation.IntegrationComponentScan; +import org.springframework.integration.annotation.MessagingGateway; +import org.springframework.integration.channel.DirectChannel; +import org.springframework.integration.config.EnableIntegration; +import org.springframework.integration.dsl.IntegrationFlow; + +@EnableIntegration +@IntegrationComponentScan +public class RouterExample { + @MessagingGateway + public interface I { + + @Gateway(requestChannel = "flow.input") + void flow(Collection is); + + } + + @Bean + DirectChannel multipleof3Channel() { + return new DirectChannel(); + } + + @Bean + DirectChannel remainderIs1Channel() { + return new DirectChannel(); + } + + @Bean + DirectChannel remainderIs2Channel() { + return new DirectChannel(); + } + + @Bean + public IntegrationFlow flow() { + return f -> f.split() + . route(p -> p % 3, m -> m.channelMapping(0, "multipleof3Channel") + .subFlowMapping(1, sf -> sf .channel("remainderIs1Channel")) + .subFlowMapping(2, sf -> sf. handle((p,h)->p))) + .channel("remainderIs2Channel"); + } + + public static void main(String[] args) { + final ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(RouterExample.class); + + DirectChannel multipleof3Channel = ctx.getBean("multipleof3Channel", DirectChannel.class); + multipleof3Channel.subscribe(x -> System.out.println("multipleof3Channel: " + x)); + + DirectChannel remainderIs1Channel = ctx.getBean("remainderIs1Channel", DirectChannel.class); + remainderIs1Channel.subscribe(x -> System.out.println("remainderIs1Channel: " + x)); + + DirectChannel remainderIs2Channel = ctx.getBean("remainderIs2Channel", DirectChannel.class); + remainderIs2Channel.subscribe(x -> System.out.println("remainderIs2Channel: " + x)); + + ctx.getBean(I.class) + .flow(Arrays.asList(1, 2, 3, 4, 5, 6)); + + ctx.close(); + + } + +} From 5d87e46328fe28ea6255728b3d3b867a93154c73 Mon Sep 17 00:00:00 2001 From: Swapan Pramanick Date: Fri, 2 Nov 2018 03:27:05 +0530 Subject: [PATCH 019/119] BAEL-2221: using MockitoJunitRunner --- .../org/baeldung/web/service/EmployeeServiceUnitTest.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java b/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java index ee30c22e9f..23cd9a8fd2 100644 --- a/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java +++ b/spring-resttemplate/src/test/java/org/baeldung/web/service/EmployeeServiceUnitTest.java @@ -4,16 +4,19 @@ import org.baeldung.web.model.Employee; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.runners.MockitoJUnitRunner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; +@RunWith(MockitoJUnitRunner.class) public class EmployeeServiceUnitTest { private static final Logger logger = LoggerFactory.getLogger(EmployeeServiceUnitTest.class); @@ -24,11 +27,6 @@ public class EmployeeServiceUnitTest { @InjectMocks private EmployeeService empService = new EmployeeService(); - @Before - public void setup() { - MockitoAnnotations.initMocks(this); - } - @Test public void givenMockingIsDoneByMockito_whenGetIsCalled_shouldReturnMockedObject() throws Exception { Employee emp = new Employee("E001", "Eric Simmons"); From 9c434f2ad80e0bca8de3b2921557b4d3ece4cba1 Mon Sep 17 00:00:00 2001 From: fanatixan Date: Sat, 3 Nov 2018 18:11:38 +0100 Subject: [PATCH 020/119] bael-2190 --- .../manytomany/extracolumn/model/Course.java | 67 +++++++++++++ .../extracolumn/model/CourseRating.java | 75 +++++++++++++++ .../extracolumn/model/CourseRatingKey.java | 59 ++++++++++++ .../extracolumn/model/CourseRegistration.java | 94 +++++++++++++++++++ .../manytomany/extracolumn/model/Student.java | 74 +++++++++++++++ 5 files changed, 369 insertions(+) create mode 100644 persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/Course.java create mode 100644 persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRating.java create mode 100644 persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRatingKey.java create mode 100644 persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRegistration.java create mode 100644 persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/Student.java diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/Course.java b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/Course.java new file mode 100644 index 0000000000..4849165c57 --- /dev/null +++ b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/Course.java @@ -0,0 +1,67 @@ +package com.baeldung.manytomany.extracolumn.model; + +import java.util.Set; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.ManyToMany; +import javax.persistence.OneToMany; + +@Entity +public class Course { + + @Id + private Long id; + + @ManyToMany(mappedBy = "likedCourses") + private Set likes; + + @OneToMany(mappedBy = "course") + private Set ratings; + + @OneToMany(mappedBy = "course") + private Set registrations; + + // additional properties + + public Course() { + } + + public Long getId() { + return id; + } + + public Set getRatings() { + return ratings; + } + + public Set getRegistrations() { + return registrations; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((id == null) ? 0 : id.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Course other = (Course) obj; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + return true; + } + +} diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRating.java b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRating.java new file mode 100644 index 0000000000..1b6c9d8b2c --- /dev/null +++ b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRating.java @@ -0,0 +1,75 @@ +package com.baeldung.manytomany.extracolumn.model; + +import javax.persistence.EmbeddedId; +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.MapsId; + +@Entity +public class CourseRating { + + @EmbeddedId + private CourseRatingKey id; + + @ManyToOne + @MapsId("student_id") + @JoinColumn(name = "student_id") + private Student student; + + @ManyToOne + @MapsId("course_id") + @JoinColumn(name = "course_id") + private Course course; + + private int rating; + + public CourseRating() { + } + + public int getRating() { + return rating; + } + + public void setRating(int rating) { + this.rating = rating; + } + + public CourseRatingKey getId() { + return id; + } + + public Student getStudent() { + return student; + } + + public Course getCourse() { + return course; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((id == null) ? 0 : id.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + CourseRating other = (CourseRating) obj; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + return true; + } + +} diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRatingKey.java b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRatingKey.java new file mode 100644 index 0000000000..6638ae6968 --- /dev/null +++ b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRatingKey.java @@ -0,0 +1,59 @@ +package com.baeldung.manytomany.extracolumn.model; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Embeddable; + +@Embeddable +public class CourseRatingKey implements Serializable { + + @Column(name = "student_id") + private Long studentId; + + @Column(name = "course_id") + private Long courseId; + + public CourseRatingKey() { + } + + public Long getStudentId() { + return studentId; + } + + public Long getCourseId() { + return courseId; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((courseId == null) ? 0 : courseId.hashCode()); + result = prime * result + ((studentId == null) ? 0 : studentId.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + CourseRatingKey other = (CourseRatingKey) obj; + if (courseId == null) { + if (other.courseId != null) + return false; + } else if (!courseId.equals(other.courseId)) + return false; + if (studentId == null) { + if (other.studentId != null) + return false; + } else if (!studentId.equals(other.studentId)) + return false; + return true; + } + +} diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRegistration.java b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRegistration.java new file mode 100644 index 0000000000..225968dba4 --- /dev/null +++ b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRegistration.java @@ -0,0 +1,94 @@ +package com.baeldung.manytomany.extracolumn.model; + +import java.time.LocalDateTime; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; + +@Entity +public class CourseRegistration { + + @Id + private Long id; + + @ManyToOne + @JoinColumn(name = "student_id") + private Student student; + + @ManyToOne + @JoinColumn(name = "course_id") + private Course course; + + private LocalDateTime registeredAt; + + private int grade; + + // additional properties + + public CourseRegistration() { + } + + public Student getStudent() { + return student; + } + + public void setStudent(Student student) { + this.student = student; + } + + public Course getCourse() { + return course; + } + + public void setCourse(Course course) { + this.course = course; + } + + public LocalDateTime getRegisteredAt() { + return registeredAt; + } + + public void setRegisteredAt(LocalDateTime registeredAt) { + this.registeredAt = registeredAt; + } + + public int getGrade() { + return grade; + } + + public void setGrade(int grade) { + this.grade = grade; + } + + public Long getId() { + return id; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((id == null) ? 0 : id.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + CourseRegistration other = (CourseRegistration) obj; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + return true; + } + +} diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/Student.java b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/Student.java new file mode 100644 index 0000000000..6bc8271e7e --- /dev/null +++ b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/Student.java @@ -0,0 +1,74 @@ +package com.baeldung.manytomany.extracolumn.model; + +import java.util.Set; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import javax.persistence.OneToMany; + +@Entity +public class Student { + + @Id + private Long id; + + @ManyToMany + @JoinTable(name = "course_like", joinColumns = @JoinColumn(name = "student_id"), inverseJoinColumns = @JoinColumn(name = "course_id")) + private Set likedCourses; + + @OneToMany(mappedBy = "student") + private Set ratings; + + @OneToMany(mappedBy = "student") + private Set registrations; + + // additional properties + + public Student() { + } + + public Long getId() { + return id; + } + + public Set getLikedCourses() { + return likedCourses; + } + + public Set getRatings() { + return ratings; + } + + public Set getRegistrations() { + return registrations; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((id == null) ? 0 : id.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Student other = (Student) obj; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + return true; + } + +} From d2a4341d9763cf1c062b75b31cf597af8601aecc Mon Sep 17 00:00:00 2001 From: fanatixan Date: Sun, 4 Nov 2018 17:29:22 +0100 Subject: [PATCH 021/119] bael-2190 - JPA many-to-many: adding tests and changing package --- .../{extracolumn => }/model/Course.java | 6 ++- .../{extracolumn => }/model/CourseRating.java | 6 ++- .../model/CourseRatingKey.java | 2 +- .../model/CourseRegistration.java | 8 ++- .../{extracolumn => }/model/Student.java | 6 ++- .../manytomany/ManyToManyIntegrationTest.java | 24 +++++++++ .../ManyToManyTestConfiguration.java | 51 +++++++++++++++++++ .../src/test/resources/manytomany/db.sql | 44 ++++++++++++++++ .../test/resources/manytomany/test.properties | 6 +++ 9 files changed, 148 insertions(+), 5 deletions(-) rename persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/{extracolumn => }/model/Course.java (90%) rename persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/{extracolumn => }/model/CourseRating.java (90%) rename persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/{extracolumn => }/model/CourseRatingKey.java (96%) rename persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/{extracolumn => }/model/CourseRegistration.java (89%) rename persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/{extracolumn => }/model/Student.java (91%) create mode 100644 persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java create mode 100644 persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java create mode 100644 persistence-modules/spring-jpa/src/test/resources/manytomany/db.sql create mode 100644 persistence-modules/spring-jpa/src/test/resources/manytomany/test.properties diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/Course.java b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/Course.java similarity index 90% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/Course.java rename to persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/Course.java index 4849165c57..bdfb8e890f 100644 --- a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/Course.java +++ b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/Course.java @@ -1,16 +1,20 @@ -package com.baeldung.manytomany.extracolumn.model; +package com.baeldung.manytomany.model; import java.util.Set; +import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; +import javax.persistence.Table; @Entity +@Table(name = "course") public class Course { @Id + @Column(name = "id") private Long id; @ManyToMany(mappedBy = "likedCourses") diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRating.java b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRating.java similarity index 90% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRating.java rename to persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRating.java index 1b6c9d8b2c..4951f766bc 100644 --- a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRating.java +++ b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRating.java @@ -1,12 +1,15 @@ -package com.baeldung.manytomany.extracolumn.model; +package com.baeldung.manytomany.model; +import javax.persistence.Column; import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.MapsId; +import javax.persistence.Table; @Entity +@Table(name = "course_rating") public class CourseRating { @EmbeddedId @@ -22,6 +25,7 @@ public class CourseRating { @JoinColumn(name = "course_id") private Course course; + @Column(name = "rating") private int rating; public CourseRating() { diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRatingKey.java b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java similarity index 96% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRatingKey.java rename to persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java index 6638ae6968..4e7430ed92 100644 --- a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRatingKey.java +++ b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java @@ -1,4 +1,4 @@ -package com.baeldung.manytomany.extracolumn.model; +package com.baeldung.manytomany.model; import java.io.Serializable; diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRegistration.java b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java similarity index 89% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRegistration.java rename to persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java index 225968dba4..e1f30af883 100644 --- a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/CourseRegistration.java +++ b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java @@ -1,16 +1,20 @@ -package com.baeldung.manytomany.extracolumn.model; +package com.baeldung.manytomany.model; import java.time.LocalDateTime; +import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; +import javax.persistence.Table; @Entity +@Table(name = "course_registration") public class CourseRegistration { @Id + @Column(name = "id") private Long id; @ManyToOne @@ -21,8 +25,10 @@ public class CourseRegistration { @JoinColumn(name = "course_id") private Course course; + @Column(name = "registered_at") private LocalDateTime registeredAt; + @Column(name = "grade") private int grade; // additional properties diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/Student.java b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/Student.java similarity index 91% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/Student.java rename to persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/Student.java index 6bc8271e7e..00561593a6 100644 --- a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/extracolumn/model/Student.java +++ b/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/Student.java @@ -1,18 +1,22 @@ -package com.baeldung.manytomany.extracolumn.model; +package com.baeldung.manytomany.model; import java.util.Set; +import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; +import javax.persistence.Table; @Entity +@Table(name = "student") public class Student { @Id + @Column(name = "id") private Long id; @ManyToMany diff --git a/persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java b/persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java new file mode 100644 index 0000000000..5e4334f5d4 --- /dev/null +++ b/persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java @@ -0,0 +1,24 @@ +package com.baeldung.manytomany; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = ManyToManyTestConfiguration.class) +@DirtiesContext +public class ManyToManyIntegrationTest { + + @PersistenceContext + EntityManager entityManager; + + @Test + public void contextStarted() { + } + +} diff --git a/persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java b/persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java new file mode 100644 index 0000000000..f4635b563a --- /dev/null +++ b/persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java @@ -0,0 +1,51 @@ +package com.baeldung.manytomany; + +import java.util.HashMap; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; +import org.springframework.orm.jpa.JpaVendorAdapter; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; + +@Configuration +@PropertySource("classpath:/manytomany/test.properties") +public class ManyToManyTestConfiguration { + + @Bean + public DataSource dataSource() { + EmbeddedDatabaseBuilder dbBuilder = new EmbeddedDatabaseBuilder(); + return dbBuilder.setType(EmbeddedDatabaseType.H2) + .addScript("classpath:/manytomany/db.sql") + .build(); + } + + @Bean + public LocalContainerEntityManagerFactoryBean entityManagerFactory(@Value("${hibernate.hbm2ddl.auto}") String hbm2ddlType, @Value("${hibernate.dialect}") String dialect, @Value("${hibernate.show_sql}") boolean showSql) { + LocalContainerEntityManagerFactoryBean result = new LocalContainerEntityManagerFactoryBean(); + + result.setDataSource(dataSource()); + result.setPackagesToScan("com.baeldung.manytomany.model"); + result.setJpaVendorAdapter(jpaVendorAdapter()); + + Map jpaProperties = new HashMap<>(); + jpaProperties.put("hibernate.hbm2ddl.auto", hbm2ddlType); + jpaProperties.put("hibernate.dialect", dialect); + jpaProperties.put("hibernate.show_sql", showSql); + result.setJpaPropertyMap(jpaProperties); + + return result; + } + + public JpaVendorAdapter jpaVendorAdapter() { + return new HibernateJpaVendorAdapter(); + } + +} diff --git a/persistence-modules/spring-jpa/src/test/resources/manytomany/db.sql b/persistence-modules/spring-jpa/src/test/resources/manytomany/db.sql new file mode 100644 index 0000000000..02905e41ee --- /dev/null +++ b/persistence-modules/spring-jpa/src/test/resources/manytomany/db.sql @@ -0,0 +1,44 @@ +CREATE TABLE course ( + id bigint(20) NOT NULL, + PRIMARY KEY (id) +); + + +CREATE TABLE student ( + id bigint(20) NOT NULL, + PRIMARY KEY (id) +); + + +CREATE TABLE course_like ( + student_id bigint(20) NOT NULL, + course_id bigint(20) NOT NULL, + PRIMARY KEY (student_id, course_id), + CONSTRAINT fk_course_like__student FOREIGN KEY (student_id) REFERENCES student (id), + CONSTRAINT fk_course_like__course FOREIGN KEY (course_id) REFERENCES course (id) +); + + + +CREATE TABLE course_rating ( + course_id bigint(20) NOT NULL, + student_id bigint(20) NOT NULL, + rating int(11) NOT NULL, + PRIMARY KEY (course_id, student_id), + CONSTRAINT fk_course_rating__student FOREIGN KEY (student_id) REFERENCES student (id), + CONSTRAINT fk_course_rating__course FOREIGN KEY (course_id) REFERENCES course (id) +); + + + +CREATE TABLE course_registration ( + id bigint(20) NOT NULL, + grade int(11), + registered_at datetime NOT NULL, + course_id bigint(20) NOT NULL, + student_id bigint(20) NOT NULL, + PRIMARY KEY (id), + CONSTRAINT fk_course_registration__student FOREIGN KEY (student_id) REFERENCES student (id), + CONSTRAINT fk_course_registration__course FOREIGN KEY (course_id) REFERENCES course (id) +); + diff --git a/persistence-modules/spring-jpa/src/test/resources/manytomany/test.properties b/persistence-modules/spring-jpa/src/test/resources/manytomany/test.properties new file mode 100644 index 0000000000..9e4236a6c2 --- /dev/null +++ b/persistence-modules/spring-jpa/src/test/resources/manytomany/test.properties @@ -0,0 +1,6 @@ +jdbc.driverClassName=org.h2.Driver +jdbc.url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1 + +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.show_sql=true +hibernate.hbm2ddl.auto=validate From 754480d447173422a4dd3d0568987648ca0e72f0 Mon Sep 17 00:00:00 2001 From: Rahul Srivastava Date: Mon, 5 Nov 2018 13:17:39 +0530 Subject: [PATCH 022/119] Revert "Giving proper indentation" This reverts commit 0d91f704c289cd8d5cb8b37aaddcff105eb4d142. --- .../main/java/com/baeldung/hexagonal/architecture/Car.java | 2 +- .../com/baeldung/hexagonal/architecture/FordAdapter.java | 5 +++++ .../com/baeldung/hexagonal/architecture/HondaAdapter.java | 7 ++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java index ebc5f78193..79e5ddd061 100644 --- a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java +++ b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java @@ -5,7 +5,6 @@ import lombok.Data; @AllArgsConstructor @Data public class Car { - String manufacturerName; String fuleType; String modelNo; @@ -32,4 +31,5 @@ public class Car { public void enableChildLock() { //Enable child lock in the car } + } diff --git a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java index 7f4248c17e..75e83e5dce 100644 --- a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java +++ b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java @@ -8,21 +8,25 @@ public class FordAdapter implements ManufacturingPort { @Override public void manufacturingMethodology(Car car) { // Process for manufacturing ford car + } @Override public void manufacturingLocation(String location) { // Location at which ford manufacturing will take place + } @Override public void logoForTheCar(Car car) { // Put ford logo on the car + } @Override public void timeToMarketForTheCar(Car car) { // Find time to market for a particular ford car model + } @Override @@ -40,4 +44,5 @@ public class FordAdapter implements ManufacturingPort { public void fordEngineFuelTest(Car car) { //Do engine test for ford } + } diff --git a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java index d6773d9b6a..7b6bac1aa6 100644 --- a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java +++ b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java @@ -7,22 +7,26 @@ public class HondaAdapter implements ManufacturingPort { @Override public void manufacturingMethodology(Car car) { - // Process for manufacturing honda car + // Process for manufacturing honda car + } @Override public void manufacturingLocation(String location) { // Location at which honda manufacturing will take place + } @Override public void logoForTheCar(Car car) { // Put honda logo on the car + } @Override public void timeToMarketForTheCar(Car car) { // Find time to market for a particular honda car model + } @Override @@ -40,4 +44,5 @@ public class HondaAdapter implements ManufacturingPort { public void carCrashAndSafetyTest(Car car) { //Do car crash test got honda car } + } \ No newline at end of file From 3c4595757cb12526678bf3c4928e977ca9ade043 Mon Sep 17 00:00:00 2001 From: Rahul Srivastava Date: Mon, 5 Nov 2018 13:18:13 +0530 Subject: [PATCH 023/119] Revert "Hexagonal Architecture in Java" This reverts commit 9e74f7cd22fdd88826123e2b3f88010233f8c09d. --- .../baeldung/hexagonal/architecture/Car.java | 35 -------------- .../hexagonal/architecture/FordAdapter.java | 48 ------------------- .../hexagonal/architecture/HondaAdapter.java | 48 ------------------- .../architecture/ManufacturingPort.java | 14 ------ 4 files changed, 145 deletions(-) delete mode 100644 spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java delete mode 100644 spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java delete mode 100644 spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java delete mode 100644 spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/ManufacturingPort.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java deleted file mode 100644 index 79e5ddd061..0000000000 --- a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/Car.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.baeldung.hexagonal.architecture; -import lombok.AllArgsConstructor; -import lombok.Data; - -@AllArgsConstructor -@Data -public class Car { - String manufacturerName; - String fuleType; - String modelNo; - String yearOfManufacture; - String vehicleType; - int noOfGears; - - public void startCar() { - //Start the car - } - - public void stopCar() { - //Stop the car - } - - public void changeGear(int gearNo){ - //Change gear - } - - public void openBoot() { - //Open boot of the car - } - - public void enableChildLock() { - //Enable child lock in the car - } - -} diff --git a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java deleted file mode 100644 index 75e83e5dce..0000000000 --- a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/FordAdapter.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.baeldung.hexagonal.architecture; - -import java.util.List; -import java.util.Map; - -public class FordAdapter implements ManufacturingPort { - - @Override - public void manufacturingMethodology(Car car) { - // Process for manufacturing ford car - - } - - @Override - public void manufacturingLocation(String location) { - // Location at which ford manufacturing will take place - - } - - @Override - public void logoForTheCar(Car car) { - // Put ford logo on the car - - } - - @Override - public void timeToMarketForTheCar(Car car) { - // Find time to market for a particular ford car model - - } - - @Override - public List> totalManufacturingVolume() { - // Return car production volume of all ford manufacturing units - return null; - } - - @Override - public List listOfAllFactories() { - // Return list of all ford factories - return null; - } - - public void fordEngineFuelTest(Car car) { - //Do engine test for ford - } - -} diff --git a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java deleted file mode 100644 index 7b6bac1aa6..0000000000 --- a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/HondaAdapter.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.baeldung.hexagonal.architecture; - -import java.util.List; -import java.util.Map; - -public class HondaAdapter implements ManufacturingPort { - - @Override - public void manufacturingMethodology(Car car) { - // Process for manufacturing honda car - - } - - @Override - public void manufacturingLocation(String location) { - // Location at which honda manufacturing will take place - - } - - @Override - public void logoForTheCar(Car car) { - // Put honda logo on the car - - } - - @Override - public void timeToMarketForTheCar(Car car) { - // Find time to market for a particular honda car model - - } - - @Override - public List> totalManufacturingVolume() { - // Return car production volume of all honda manufacturing units - return null; - } - - @Override - public List listOfAllFactories() { - // Return list of all honda factories - return null; - } - - public void carCrashAndSafetyTest(Car car) { - //Do car crash test got honda car - } - -} \ No newline at end of file diff --git a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/ManufacturingPort.java b/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/ManufacturingPort.java deleted file mode 100644 index 666e69ac05..0000000000 --- a/spring-5-reactive/src/main/java/com/baeldung/hexagonal/architecture/ManufacturingPort.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.hexagonal.architecture; - -import java.util.List; -import java.util.Map; - -public interface ManufacturingPort { - - public void manufacturingMethodology(Car car); - public void manufacturingLocation(String location); - public void logoForTheCar(Car car); - public void timeToMarketForTheCar(Car car); - public List> totalManufacturingVolume(); - public List listOfAllFactories(); -} From b9b4cec7ae774e95620856d5675b05b07a18a79e Mon Sep 17 00:00:00 2001 From: Rahul Srivastava Date: Mon, 5 Nov 2018 13:29:42 +0530 Subject: [PATCH 024/119] Adding new line to a string in Java --- .../string/AddingNewLineToString.java | 55 +++++++++++++++++++ .../main/java/com/baeldung/string/page.html | 12 ++++ 2 files changed, 67 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/string/AddingNewLineToString.java create mode 100644 core-java/src/main/java/com/baeldung/string/page.html diff --git a/core-java/src/main/java/com/baeldung/string/AddingNewLineToString.java b/core-java/src/main/java/com/baeldung/string/AddingNewLineToString.java new file mode 100644 index 0000000000..e828af4cb7 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/string/AddingNewLineToString.java @@ -0,0 +1,55 @@ +package com.baeldung.string; + +public class AddingNewLineToString { + + public static void main(String[] args) { + String line1 = "Humpty Dumpty sat on a wall."; + String line2 = "Humpty Dumpty had a great fall."; + String para = ""; + + //1. Using "\n" + System.out.println("1. Using \\n"); + para = line1+"\n"+line2; + System.out.println(para); + + //2. Using "\r\n" + System.out.println("2. Using \\r\\n"); + para = line1+"\r\n"+line2; + System.out.println(para); + + //3. Using "\r" + System.out.println("3. Using \\r"); + para = line1+"\r"+line2; + System.out.println(para); + + //4. Using "\n\r" Note that this is not same as "\r\n" + // Using "\n\r" is equivalent to adding two lines + System.out.println("4. Using \\n\\r"); + para = line1+"\n\r"+line2; + System.out.println(para); + + //5. Using System.lineSeparator() + System.out.println("5. Using System.lineSeparator()"); + para = line1+System.lineSeparator()+line2; + System.out.println(para); + + //6. Using System.getProperty("line.separator") + System.out.println("6. Using System.getProperty(\"line.separator\")"); + para = line1+System.getProperty("line.separator")+line2; + System.out.println(para); + + //Line break for HTML using
+ System.out.println("Line break for HTML using
"); + para = line1+"
"+line2; + + //Line break for HTML when string is in + +
Humpty Dumpty sat on a wall.

Humpty Dumpty had a great fall
+
Humpty Dumpty sat on a wall.
Humpty Dumpty had a great fall
+
Humpty Dumpty sat on a wall.
Humpty Dumpty had a great fall
+

Humpty Dumpty sat on a wall.
Humpty Dumpty had a great fall

+ + From 1cad5abf8447ead5589978db78a07a61f06a6fd0 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Mon, 5 Nov 2018 15:37:48 +0530 Subject: [PATCH 025/119] BAEL-896 Working with dates in Kotlin -Moved snippets to test, now using assertions instead of println --- .../com/baeldung/kotlin/dates/CreateDate.kt | 31 ------------ .../com/baeldung/kotlin/dates/ExtractDate.kt | 24 ---------- .../com/baeldung/kotlin/dates/PeriodDate.kt | 44 ----------------- .../com/baeldung/kotlin/dates/PrintDate.kt | 26 ---------- .../kotlin/dates/CreateDateUnitTest.kt | 34 +++++++++++++ .../kotlin/dates/ExtractDateUnitTest.kt | 29 +++++++++++ .../kotlin/dates/FormatDateUnitTest.kt | 29 +++++++++++ .../kotlin/dates/PeriodDateUnitTest.kt | 48 +++++++++++++++++++ 8 files changed, 140 insertions(+), 125 deletions(-) delete mode 100644 kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/CreateDate.kt delete mode 100644 kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/ExtractDate.kt delete mode 100644 kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PeriodDate.kt delete mode 100644 kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PrintDate.kt create mode 100644 kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/CreateDateUnitTest.kt create mode 100644 kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/ExtractDateUnitTest.kt create mode 100644 kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/FormatDateUnitTest.kt create mode 100644 kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/PeriodDateUnitTest.kt diff --git a/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/CreateDate.kt b/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/CreateDate.kt deleted file mode 100644 index 78705fc151..0000000000 --- a/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/CreateDate.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.baeldung.kotlin.dates - -import java.time.LocalDate -import java.time.format.DateTimeFormatter - -fun createDateUsingParseMethodDefaultFormat() { - - var date = LocalDate.parse("2018-12-31") - println(date) -} - -fun createDateUsingParseMethodCustomFormat() { - - var formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy") - - var date = LocalDate.parse("31-12-2018", formatter) - - println(date) -} - -fun createDateUsingOfMethod() { - var date = LocalDate.of(2018, 12, 31) - println(date) - -} - -fun main(args: Array) { - - createDateUsingParseMethodCustomFormat() - createDateUsingOfMethod() -} \ No newline at end of file diff --git a/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/ExtractDate.kt b/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/ExtractDate.kt deleted file mode 100644 index f5291b63db..0000000000 --- a/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/ExtractDate.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.kotlin.dates - -import java.time.LocalDate - -fun extractingCommonComponents() { - var date = LocalDate.parse("2018-12-31") - - println(date.year) - println(date.month) - println(date.dayOfMonth) -} - -fun extractingEraDowDoy() { - var date = LocalDate.parse("2018-12-31") - - println(date.era) - println(date.dayOfWeek) - println(date.dayOfYear) -} - -fun main(args: Array) { - extractingCommonComponents() - extractingEraDowDoy() -} \ No newline at end of file diff --git a/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PeriodDate.kt b/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PeriodDate.kt deleted file mode 100644 index f8689c55be..0000000000 --- a/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PeriodDate.kt +++ /dev/null @@ -1,44 +0,0 @@ -package com.baeldung.kotlin.dates - -import java.time.LocalDate -import java.time.Period - -fun createAPeriod() { - var period = Period.of(1, 2, 3) - - println(period) -} - -fun addAPeriod() { - var period = Period.of(1, 2, 3) - - var date = LocalDate.of(2018, 6, 25) - var modifiedDate = date.plus(period) - - println(modifiedDate) -} - -fun subtractAPeriod() { - var period = Period.of(1, 2, 3) - - var date = LocalDate.of(2018, 6, 25) - var modifiedDate = date.minus(period) - - println(modifiedDate) -} - -fun getAPeriod() { - - var date1 = LocalDate.parse("2018-06-25") - var date2 = LocalDate.parse("2018-12-25") - - var period = Period.between(date1, date2) - println(period) -} - -fun main(args: Array) { - createAPeriod() - addAPeriod() - subtractAPeriod() - getAPeriod() -} \ No newline at end of file diff --git a/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PrintDate.kt b/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PrintDate.kt deleted file mode 100644 index 73380e3152..0000000000 --- a/kotlin-libraries/src/main/kotlin/com/baeldung/kotlin/dates/PrintDate.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.baeldung.kotlin.dates - -import java.time.LocalDate -import java.time.format.DateTimeFormatter - -fun printDateDefaultFormat() { - - var date = LocalDate.parse("2018-12-31") - println(date) -} - -fun printDateUsingCustomFormat() { - - var date = LocalDate.parse("2018-12-31") - - var formatter = DateTimeFormatter.ofPattern("dd-MMMM-yyyy") - var formattedDate = date.format(formatter) - println(formattedDate) -} - -fun main(args: Array) { - - printDateDefaultFormat() - - printDateUsingCustomFormat() -} \ No newline at end of file diff --git a/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/CreateDateUnitTest.kt b/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/CreateDateUnitTest.kt new file mode 100644 index 0000000000..d52a2f0f19 --- /dev/null +++ b/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/CreateDateUnitTest.kt @@ -0,0 +1,34 @@ +package com.baeldung.kotlin.dates + +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test +import java.time.LocalDate +import java.time.format.DateTimeFormatter + +class CreateDateUnitTest { + + @Test + fun givenString_whenDefaultFormat_thenCreated() { + + var date = LocalDate.parse("2018-12-31") + + assertThat(date).isEqualTo("2018-12-31") + } + + @Test + fun givenString_whenCustomFormat_thenCreated() { + + var formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy") + var date = LocalDate.parse("31-12-2018", formatter) + + assertThat(date).isEqualTo("2018-12-31") + } + + @Test + fun givenYMD_whenUsingOf_thenCreated() { + var date = LocalDate.of(2018, 12, 31) + + assertThat(date).isEqualTo("2018-12-31") + } + +} \ No newline at end of file diff --git a/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/ExtractDateUnitTest.kt b/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/ExtractDateUnitTest.kt new file mode 100644 index 0000000000..ef3841752b --- /dev/null +++ b/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/ExtractDateUnitTest.kt @@ -0,0 +1,29 @@ +package com.baeldung.kotlin.dates + +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test +import java.time.DayOfWeek +import java.time.LocalDate +import java.time.Month + +class ExtractDateUnitTest { + + @Test + fun givenDate_thenExtractedYMD() { + var date = LocalDate.parse("2018-12-31") + + assertThat(date.year).isEqualTo(2018) + assertThat(date.month).isEqualTo(Month.DECEMBER) + assertThat(date.dayOfMonth).isEqualTo(31) + } + + @Test + fun givenDate_thenExtractedEraDowDoy() { + var date = LocalDate.parse("2018-12-31") + + assertThat(date.era.toString()).isEqualTo("CE") + assertThat(date.dayOfWeek).isEqualTo(DayOfWeek.MONDAY) + assertThat(date.dayOfYear).isEqualTo(365) + } + +} \ No newline at end of file diff --git a/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/FormatDateUnitTest.kt b/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/FormatDateUnitTest.kt new file mode 100644 index 0000000000..11ff6ec9f0 --- /dev/null +++ b/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/FormatDateUnitTest.kt @@ -0,0 +1,29 @@ +package com.baeldung.kotlin.dates + +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test +import java.time.LocalDate +import java.time.format.DateTimeFormatter + +class FormatDateUnitTest { + + @Test + fun givenDate_whenDefaultFormat_thenFormattedString() { + + var date = LocalDate.parse("2018-12-31") + + assertThat(date.toString()).isEqualTo("2018-12-31") + } + + @Test + fun givenDate_whenCustomFormat_thenFormattedString() { + + var date = LocalDate.parse("2018-12-31") + + var formatter = DateTimeFormatter.ofPattern("dd-MMMM-yyyy") + var formattedDate = date.format(formatter) + + assertThat(formattedDate).isEqualTo("31-December-2018") + } + +} \ No newline at end of file diff --git a/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/PeriodDateUnitTest.kt b/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/PeriodDateUnitTest.kt new file mode 100644 index 0000000000..e6b66634d3 --- /dev/null +++ b/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/dates/PeriodDateUnitTest.kt @@ -0,0 +1,48 @@ +package com.baeldung.kotlin.dates + +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test +import java.time.LocalDate +import java.time.Period + +class PeriodDateUnitTest { + + @Test + fun givenYMD_thenCreatePeriod() { + var period = Period.of(1, 2, 3) + + assertThat(period.toString()).isEqualTo("P1Y2M3D") + } + + @Test + fun givenPeriod_whenAdd_thenModifiedDate() { + var period = Period.of(1, 2, 3) + + var date = LocalDate.of(2018, 6, 25) + var modifiedDate = date.plus(period) + + assertThat(modifiedDate).isEqualTo("2019-08-28") + } + + @Test + fun givenPeriod_whenSubtracted_thenModifiedDate() { + var period = Period.of(1, 2, 3) + + var date = LocalDate.of(2018, 6, 25) + var modifiedDate = date.minus(period) + + assertThat(modifiedDate).isEqualTo("2017-04-22") + } + + @Test + fun givenTwoDate_whenUsingBetween_thenDiffOfDates() { + + var date1 = LocalDate.parse("2018-06-25") + var date2 = LocalDate.parse("2018-12-25") + + var period = Period.between(date1, date2) + + assertThat(period.toString()).isEqualTo("P6M") + } + +} \ No newline at end of file From cc6af7ae4b70808e8e516f5b3771f1ace1c9f92b Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Mon, 5 Nov 2018 23:39:13 +0530 Subject: [PATCH 026/119] BAEL-10181 Fix tutorial-build-second | Issue with spring-mvc-kotlin -Upgraded kotlin libraries --- parent-kotlin/pom.xml | 44 +++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/parent-kotlin/pom.xml b/parent-kotlin/pom.xml index 0a04da7dc2..f8283bd920 100644 --- a/parent-kotlin/pom.xml +++ b/parent-kotlin/pom.xml @@ -13,29 +13,29 @@ 1.0.0-SNAPSHOT - - - jcenter - http://jcenter.bintray.com - - - kotlin-ktor - https://dl.bintray.com/kotlin/ktor/ - - - kotlin-eap - http://dl.bintray.com/kotlin/kotlin-eap - - - - + + + jcenter + http://jcenter.bintray.com + + + kotlin-ktor + https://dl.bintray.com/kotlin/ktor/ + + + kotlin-eap + http://dl.bintray.com/kotlin/kotlin-eap + + + + kotlin-eap - http://dl.bintray.com/kotlin/kotlin-eap + http://dl.bintray.com/kotlin/kotlin-eap - - + + org.springframework.boot @@ -202,9 +202,9 @@ - 1.3.0-rc-146 - 0.26.1-eap13 - 0.9.3 + 1.3.0 + 1.0.0 + 0.9.5 3.11.0 1.2.0 From da1a2cb3598d860cc7522712ad2ac79e592e012f Mon Sep 17 00:00:00 2001 From: Loredana Date: Mon, 5 Nov 2018 21:33:19 +0200 Subject: [PATCH 027/119] rename package, add java init --- .../java/com/baeldung/AppInitializer.java | 33 +++++++++++++++++++ .../controller/SecuredResourceController.java | 2 +- .../security/CustomAccessDeniedHandler.java | 2 +- .../CustomAuthenticationFailureHandler.java | 2 +- .../security/CustomLogoutSuccessHandler.java | 2 +- .../RefererAuthenticationSuccessHandler.java | 2 +- .../spring/ChannelSecSecurityConfig.java | 5 +-- .../baeldung/spring/MvcConfig.java | 2 +- .../spring/RedirectionSecurityConfig.java | 2 +- .../baeldung/spring/SecSecurityConfig.java | 9 ++--- .../webapp/WEB-INF/{web.xml => web-old.xml} | 2 +- .../SpringContextIntegrationTest.java | 2 +- .../baeldung/security/FormLoginUnitTest.java | 5 +-- .../RedirectionSecurityIntegrationTest.java | 2 +- 14 files changed, 54 insertions(+), 18 deletions(-) create mode 100644 spring-security-mvc-login/src/main/java/com/baeldung/AppInitializer.java rename spring-security-mvc-login/src/main/java/{org => com}/baeldung/controller/SecuredResourceController.java (93%) rename spring-security-mvc-login/src/main/java/{org => com}/baeldung/security/CustomAccessDeniedHandler.java (97%) rename spring-security-mvc-login/src/main/java/{org => com}/baeldung/security/CustomAuthenticationFailureHandler.java (96%) rename spring-security-mvc-login/src/main/java/{org => com}/baeldung/security/CustomLogoutSuccessHandler.java (96%) rename spring-security-mvc-login/src/main/java/{org => com}/baeldung/security/RefererAuthenticationSuccessHandler.java (92%) rename spring-security-mvc-login/src/main/java/{org => com}/baeldung/spring/ChannelSecSecurityConfig.java (96%) rename spring-security-mvc-login/src/main/java/{org => com}/baeldung/spring/MvcConfig.java (97%) rename spring-security-mvc-login/src/main/java/{org => com}/baeldung/spring/RedirectionSecurityConfig.java (97%) rename spring-security-mvc-login/src/main/java/{org => com}/baeldung/spring/SecSecurityConfig.java (94%) rename spring-security-mvc-login/src/main/webapp/WEB-INF/{web.xml => web-old.xml} (96%) rename spring-security-mvc-login/src/test/java/{org => com}/baeldung/SpringContextIntegrationTest.java (95%) rename spring-security-mvc-login/src/test/java/{org => com}/baeldung/security/FormLoginUnitTest.java (96%) rename spring-security-mvc-login/src/test/java/{org => com}/baeldung/security/RedirectionSecurityIntegrationTest.java (99%) diff --git a/spring-security-mvc-login/src/main/java/com/baeldung/AppInitializer.java b/spring-security-mvc-login/src/main/java/com/baeldung/AppInitializer.java new file mode 100644 index 0000000000..4f38d190eb --- /dev/null +++ b/spring-security-mvc-login/src/main/java/com/baeldung/AppInitializer.java @@ -0,0 +1,33 @@ +package com.baeldung; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.ContextLoaderListener; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.context.support.GenericWebApplicationContext; +import org.springframework.web.filter.DelegatingFilterProxy; +import org.springframework.web.servlet.DispatcherServlet; + +public class AppInitializer implements WebApplicationInitializer { + + @Override + public void onStartup(final ServletContext sc) throws ServletException { + + AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); + + root.scan("com.baeldung"); + sc.addListener(new ContextLoaderListener(root)); + + ServletRegistration.Dynamic appServlet = sc.addServlet("mvc", new DispatcherServlet(new GenericWebApplicationContext())); + appServlet.setLoadOnStartup(1); + appServlet.addMapping("/"); + + sc.addFilter("securityFilter", new DelegatingFilterProxy("springSecurityFilterChain")) + .addMappingForUrlPatterns(null, false, "/*"); + + } + +} diff --git a/spring-security-mvc-login/src/main/java/org/baeldung/controller/SecuredResourceController.java b/spring-security-mvc-login/src/main/java/com/baeldung/controller/SecuredResourceController.java similarity index 93% rename from spring-security-mvc-login/src/main/java/org/baeldung/controller/SecuredResourceController.java rename to spring-security-mvc-login/src/main/java/com/baeldung/controller/SecuredResourceController.java index 4b68eee983..a458a5aeac 100644 --- a/spring-security-mvc-login/src/main/java/org/baeldung/controller/SecuredResourceController.java +++ b/spring-security-mvc-login/src/main/java/com/baeldung/controller/SecuredResourceController.java @@ -1,4 +1,4 @@ -package org.baeldung.controller; +package com.baeldung.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/spring-security-mvc-login/src/main/java/org/baeldung/security/CustomAccessDeniedHandler.java b/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomAccessDeniedHandler.java similarity index 97% rename from spring-security-mvc-login/src/main/java/org/baeldung/security/CustomAccessDeniedHandler.java rename to spring-security-mvc-login/src/main/java/com/baeldung/security/CustomAccessDeniedHandler.java index 64698072bc..9d9fa81dc0 100644 --- a/spring-security-mvc-login/src/main/java/org/baeldung/security/CustomAccessDeniedHandler.java +++ b/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomAccessDeniedHandler.java @@ -1,4 +1,4 @@ -package org.baeldung.security; +package com.baeldung.security; import java.io.IOException; diff --git a/spring-security-mvc-login/src/main/java/org/baeldung/security/CustomAuthenticationFailureHandler.java b/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomAuthenticationFailureHandler.java similarity index 96% rename from spring-security-mvc-login/src/main/java/org/baeldung/security/CustomAuthenticationFailureHandler.java rename to spring-security-mvc-login/src/main/java/com/baeldung/security/CustomAuthenticationFailureHandler.java index 5eddf3883e..410d3f1ce9 100644 --- a/spring-security-mvc-login/src/main/java/org/baeldung/security/CustomAuthenticationFailureHandler.java +++ b/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomAuthenticationFailureHandler.java @@ -1,4 +1,4 @@ -package org.baeldung.security; +package com.baeldung.security; import org.springframework.http.HttpStatus; import org.springframework.security.core.AuthenticationException; diff --git a/spring-security-mvc-login/src/main/java/org/baeldung/security/CustomLogoutSuccessHandler.java b/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomLogoutSuccessHandler.java similarity index 96% rename from spring-security-mvc-login/src/main/java/org/baeldung/security/CustomLogoutSuccessHandler.java rename to spring-security-mvc-login/src/main/java/com/baeldung/security/CustomLogoutSuccessHandler.java index 7360b4e03f..7949eee69a 100644 --- a/spring-security-mvc-login/src/main/java/org/baeldung/security/CustomLogoutSuccessHandler.java +++ b/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomLogoutSuccessHandler.java @@ -1,4 +1,4 @@ -package org.baeldung.security; +package com.baeldung.security; import java.io.IOException; diff --git a/spring-security-mvc-login/src/main/java/org/baeldung/security/RefererAuthenticationSuccessHandler.java b/spring-security-mvc-login/src/main/java/com/baeldung/security/RefererAuthenticationSuccessHandler.java similarity index 92% rename from spring-security-mvc-login/src/main/java/org/baeldung/security/RefererAuthenticationSuccessHandler.java rename to spring-security-mvc-login/src/main/java/com/baeldung/security/RefererAuthenticationSuccessHandler.java index 5b025d9fd1..05a2463699 100644 --- a/spring-security-mvc-login/src/main/java/org/baeldung/security/RefererAuthenticationSuccessHandler.java +++ b/spring-security-mvc-login/src/main/java/com/baeldung/security/RefererAuthenticationSuccessHandler.java @@ -1,4 +1,4 @@ -package org.baeldung.security; +package com.baeldung.security; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler; diff --git a/spring-security-mvc-login/src/main/java/org/baeldung/spring/ChannelSecSecurityConfig.java b/spring-security-mvc-login/src/main/java/com/baeldung/spring/ChannelSecSecurityConfig.java similarity index 96% rename from spring-security-mvc-login/src/main/java/org/baeldung/spring/ChannelSecSecurityConfig.java rename to spring-security-mvc-login/src/main/java/com/baeldung/spring/ChannelSecSecurityConfig.java index 4f736360b9..e9a6a9e120 100644 --- a/spring-security-mvc-login/src/main/java/org/baeldung/spring/ChannelSecSecurityConfig.java +++ b/spring-security-mvc-login/src/main/java/com/baeldung/spring/ChannelSecSecurityConfig.java @@ -1,6 +1,5 @@ -package org.baeldung.spring; +package com.baeldung.spring; -import org.baeldung.security.CustomLogoutSuccessHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @@ -10,6 +9,8 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; +import com.baeldung.security.CustomLogoutSuccessHandler; + @Configuration // @ImportResource({ "classpath:channelWebSecurityConfig.xml" }) @EnableWebSecurity diff --git a/spring-security-mvc-login/src/main/java/org/baeldung/spring/MvcConfig.java b/spring-security-mvc-login/src/main/java/com/baeldung/spring/MvcConfig.java similarity index 97% rename from spring-security-mvc-login/src/main/java/org/baeldung/spring/MvcConfig.java rename to spring-security-mvc-login/src/main/java/com/baeldung/spring/MvcConfig.java index b529048685..a9c7e0cf15 100644 --- a/spring-security-mvc-login/src/main/java/org/baeldung/spring/MvcConfig.java +++ b/spring-security-mvc-login/src/main/java/com/baeldung/spring/MvcConfig.java @@ -1,4 +1,4 @@ -package org.baeldung.spring; +package com.baeldung.spring; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; diff --git a/spring-security-mvc-login/src/main/java/org/baeldung/spring/RedirectionSecurityConfig.java b/spring-security-mvc-login/src/main/java/com/baeldung/spring/RedirectionSecurityConfig.java similarity index 97% rename from spring-security-mvc-login/src/main/java/org/baeldung/spring/RedirectionSecurityConfig.java rename to spring-security-mvc-login/src/main/java/com/baeldung/spring/RedirectionSecurityConfig.java index 1472a1f89c..3516438a6e 100644 --- a/spring-security-mvc-login/src/main/java/org/baeldung/spring/RedirectionSecurityConfig.java +++ b/spring-security-mvc-login/src/main/java/com/baeldung/spring/RedirectionSecurityConfig.java @@ -1,4 +1,4 @@ -package org.baeldung.spring; +package com.baeldung.spring; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; diff --git a/spring-security-mvc-login/src/main/java/org/baeldung/spring/SecSecurityConfig.java b/spring-security-mvc-login/src/main/java/com/baeldung/spring/SecSecurityConfig.java similarity index 94% rename from spring-security-mvc-login/src/main/java/org/baeldung/spring/SecSecurityConfig.java rename to spring-security-mvc-login/src/main/java/com/baeldung/spring/SecSecurityConfig.java index 97ce6b5bc2..08a83f8633 100644 --- a/spring-security-mvc-login/src/main/java/org/baeldung/spring/SecSecurityConfig.java +++ b/spring-security-mvc-login/src/main/java/com/baeldung/spring/SecSecurityConfig.java @@ -1,8 +1,5 @@ -package org.baeldung.spring; +package com.baeldung.spring; -import org.baeldung.security.CustomAccessDeniedHandler; -import org.baeldung.security.CustomAuthenticationFailureHandler; -import org.baeldung.security.CustomLogoutSuccessHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @@ -16,6 +13,10 @@ import org.springframework.security.web.access.AccessDeniedHandler; import org.springframework.security.web.authentication.AuthenticationFailureHandler; import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; +import com.baeldung.security.CustomAccessDeniedHandler; +import com.baeldung.security.CustomAuthenticationFailureHandler; +import com.baeldung.security.CustomLogoutSuccessHandler; + @Configuration // @ImportResource({ "classpath:webSecurityConfig.xml" }) @EnableWebSecurity diff --git a/spring-security-mvc-login/src/main/webapp/WEB-INF/web.xml b/spring-security-mvc-login/src/main/webapp/WEB-INF/web-old.xml similarity index 96% rename from spring-security-mvc-login/src/main/webapp/WEB-INF/web.xml rename to spring-security-mvc-login/src/main/webapp/WEB-INF/web-old.xml index eef48ec9b3..bc6f310147 100644 --- a/spring-security-mvc-login/src/main/webapp/WEB-INF/web.xml +++ b/spring-security-mvc-login/src/main/webapp/WEB-INF/web-old.xml @@ -15,7 +15,7 @@ contextConfigLocation - org.baeldung.spring + com.baeldung.spring diff --git a/spring-security-mvc-login/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-mvc-login/src/test/java/com/baeldung/SpringContextIntegrationTest.java similarity index 95% rename from spring-security-mvc-login/src/test/java/org/baeldung/SpringContextIntegrationTest.java rename to spring-security-mvc-login/src/test/java/com/baeldung/SpringContextIntegrationTest.java index 1d7f9ae497..20de02d5c5 100644 --- a/spring-security-mvc-login/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ b/spring-security-mvc-login/src/test/java/com/baeldung/SpringContextIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/spring-security-mvc-login/src/test/java/org/baeldung/security/FormLoginUnitTest.java b/spring-security-mvc-login/src/test/java/com/baeldung/security/FormLoginUnitTest.java similarity index 96% rename from spring-security-mvc-login/src/test/java/org/baeldung/security/FormLoginUnitTest.java rename to spring-security-mvc-login/src/test/java/com/baeldung/security/FormLoginUnitTest.java index 4b3a091e6c..b7d959bf36 100644 --- a/spring-security-mvc-login/src/test/java/org/baeldung/security/FormLoginUnitTest.java +++ b/spring-security-mvc-login/src/test/java/com/baeldung/security/FormLoginUnitTest.java @@ -1,6 +1,5 @@ -package org.baeldung.security; +package com.baeldung.security; -import org.baeldung.spring.SecSecurityConfig; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -13,6 +12,8 @@ import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; +import com.baeldung.spring.SecSecurityConfig; + import javax.servlet.Filter; import static org.junit.Assert.assertTrue; diff --git a/spring-security-mvc-login/src/test/java/org/baeldung/security/RedirectionSecurityIntegrationTest.java b/spring-security-mvc-login/src/test/java/com/baeldung/security/RedirectionSecurityIntegrationTest.java similarity index 99% rename from spring-security-mvc-login/src/test/java/org/baeldung/security/RedirectionSecurityIntegrationTest.java rename to spring-security-mvc-login/src/test/java/com/baeldung/security/RedirectionSecurityIntegrationTest.java index 2b7a8ce5b9..1235e2e69f 100644 --- a/spring-security-mvc-login/src/test/java/org/baeldung/security/RedirectionSecurityIntegrationTest.java +++ b/spring-security-mvc-login/src/test/java/com/baeldung/security/RedirectionSecurityIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung.security; +package com.baeldung.security; import org.junit.Before; import org.junit.Test; From 6f9e1fd10374914bd45656a483113f8764dee6e0 Mon Sep 17 00:00:00 2001 From: Kumar Chandrakant Date: Thu, 8 Nov 2018 15:13:12 +0530 Subject: [PATCH 028/119] BAEL-2300: Adding files for the tutorial on character encoding. --- .../encoding/CharacterEncodingExamples.java | 32 ++++++++++ .../CharacterEncodingExamplesUnitTest.java | 61 +++++++++++++++++++ core-java/src/test/resources/encoding.txt | 1 + 3 files changed, 94 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/encoding/CharacterEncodingExamples.java create mode 100644 core-java/src/test/java/com/baeldung/encoding/CharacterEncodingExamplesUnitTest.java create mode 100644 core-java/src/test/resources/encoding.txt diff --git a/core-java/src/main/java/com/baeldung/encoding/CharacterEncodingExamples.java b/core-java/src/main/java/com/baeldung/encoding/CharacterEncodingExamples.java new file mode 100644 index 0000000000..bdd92e37f6 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/encoding/CharacterEncodingExamples.java @@ -0,0 +1,32 @@ +package com.baeldung.encoding; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; + +public class CharacterEncodingExamples { + + static String readFile(String filePath, String encoding) throws IOException { + File file = new File(filePath); + StringBuffer buffer = new StringBuffer(); + try (InputStreamReader isr = new InputStreamReader(new FileInputStream(file), encoding)) { + int data; + while ((data = isr.read()) != -1) { + buffer.append((char) data); + } + } + return buffer.toString(); + } + + static String convertToBinary(String input, String encoding) throws UnsupportedEncodingException { + byte[] bytes = input.getBytes(encoding); + StringBuffer buffer = new StringBuffer(); + for (int b : bytes) { + buffer.append(Integer.toBinaryString((b + 256) % 256)); + buffer.append(" "); + } + return buffer.toString(); + } +} diff --git a/core-java/src/test/java/com/baeldung/encoding/CharacterEncodingExamplesUnitTest.java b/core-java/src/test/java/com/baeldung/encoding/CharacterEncodingExamplesUnitTest.java new file mode 100644 index 0000000000..95b3605d95 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/encoding/CharacterEncodingExamplesUnitTest.java @@ -0,0 +1,61 @@ +package com.baeldung.encoding; + +import java.io.IOException; + +import org.junit.Assert; +import org.junit.Test; + +public class CharacterEncodingExamplesUnitTest { + + @Test + public void givenTextFile_whenCalledWithEncodingASCII_thenProduceIncorrectResult() throws IOException { + Assert.assertEquals( + CharacterEncodingExamples.readFile( + "src/test/resources/encoding.txt", "US-ASCII"), + "The fa��ade pattern is a software-design pattern commonly used with object-oriented programming."); + } + + @Test + public void givenTextFile_whenCalledWithEncodingUTF8_thenProduceCorrectResult() throws IOException { + Assert.assertEquals( + CharacterEncodingExamples.readFile( + "src/test/resources/encoding.txt", "UTF-8"), + "The façade pattern is a software-design pattern commonly used with object-oriented programming."); + } + + @Test + public void givenCharacterA_whenConvertedtoBinaryWithEncodingASCII_thenProduceResult() throws IOException { + Assert.assertEquals( + CharacterEncodingExamples.convertToBinary("A", "US-ASCII"), + "1000001 "); + } + + @Test + public void givenCharacterA_whenConvertedtoBinaryWithEncodingUTF8_thenProduceResult() throws IOException { + Assert.assertEquals( + CharacterEncodingExamples.convertToBinary("A", "UTF-8"), + "1000001 "); + } + + @Test + public void givenCharacterCh_whenConvertedtoBinaryWithEncodingBig5_thenProduceResult() throws IOException { + Assert.assertEquals( + CharacterEncodingExamples.convertToBinary("語", "Big5"), + "10111011 1111001 "); + } + + @Test + public void givenCharacterCh_whenConvertedtoBinaryWithEncodingUTF8_thenProduceResult() throws IOException { + Assert.assertEquals( + CharacterEncodingExamples.convertToBinary("語", "UTF-8"), + "11101000 10101010 10011110 "); + } + + @Test + public void givenCharacterCh_whenConvertedtoBinaryWithEncodingUTF32_thenProduceResult() throws IOException { + Assert.assertEquals( + CharacterEncodingExamples.convertToBinary("語", "UTF-32"), + "0 0 10001010 10011110 "); + } + +} diff --git a/core-java/src/test/resources/encoding.txt b/core-java/src/test/resources/encoding.txt new file mode 100644 index 0000000000..e1cf027df0 --- /dev/null +++ b/core-java/src/test/resources/encoding.txt @@ -0,0 +1 @@ +The façade pattern is a software-design pattern commonly used with object-oriented programming. \ No newline at end of file From 6dd09ae35d94275b2515e419c79e10c71d87ad6b Mon Sep 17 00:00:00 2001 From: Rahul Srivastava Date: Thu, 8 Nov 2018 15:39:06 +0530 Subject: [PATCH 029/119] New line in Java for HTML and Changing HTML file --- .../string/AddingNewLineToString.java | 48 ++++++++++++------- .../main/java/com/baeldung/string/page.html | 29 +++++++++-- 2 files changed, 55 insertions(+), 22 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/string/AddingNewLineToString.java b/core-java/src/main/java/com/baeldung/string/AddingNewLineToString.java index e828af4cb7..0b3fd2ca92 100644 --- a/core-java/src/main/java/com/baeldung/string/AddingNewLineToString.java +++ b/core-java/src/main/java/com/baeldung/string/AddingNewLineToString.java @@ -7,49 +7,63 @@ public class AddingNewLineToString { String line2 = "Humpty Dumpty had a great fall."; String para = ""; + System.out.println("***New Line in a String in Java***"); //1. Using "\n" System.out.println("1. Using \\n"); - para = line1+"\n"+line2; + para = line1 + "\n" + line2; System.out.println(para); //2. Using "\r\n" System.out.println("2. Using \\r\\n"); - para = line1+"\r\n"+line2; + para = line1 + "\r\n" + line2; System.out.println(para); //3. Using "\r" System.out.println("3. Using \\r"); - para = line1+"\r"+line2; + para = line1 + "\r" + line2; System.out.println(para); //4. Using "\n\r" Note that this is not same as "\r\n" // Using "\n\r" is equivalent to adding two lines System.out.println("4. Using \\n\\r"); - para = line1+"\n\r"+line2; + para = line1 + "\n\r" + line2; System.out.println(para); //5. Using System.lineSeparator() System.out.println("5. Using System.lineSeparator()"); - para = line1+System.lineSeparator()+line2; + para = line1 + System.lineSeparator() + line2; System.out.println(para); //6. Using System.getProperty("line.separator") System.out.println("6. Using System.getProperty(\"line.separator\")"); - para = line1+System.getProperty("line.separator")+line2; + para = line1 + System.getProperty("line.separator") + line2; System.out.println(para); - //Line break for HTML using
- System.out.println("Line break for HTML using
"); - para = line1+"
"+line2; + System.out.println("***HTML to rendered in a browser***"); + //1. Line break for HTML using
+ System.out.println("1. Line break for HTML using
"); + para = line1 + "
" + line2; + System.out.println(para); - //Line break for HTML when string is in -
Humpty Dumpty sat on a wall.

Humpty Dumpty had a great fall
-
Humpty Dumpty sat on a wall.
Humpty Dumpty had a great fall
-
Humpty Dumpty sat on a wall.
Humpty Dumpty had a great fall
+ + +
+
Humpty Dumpty sat on a wall.
Humpty Dumpty had a great fall.
+
Humpty Dumpty sat on a wall.
Humpty Dumpty had a great fall.
+
Humpty Dumpty sat on a wall.
Humpty Dumpty had a great fall.
+
Humpty Dumpty sat on a wall.

Humpty Dumpty had a great fall.
+
Humpty Dumpty sat on a wall.
+Humpty Dumpty had a great fall
+

Humpty Dumpty sat on a wall.
Humpty Dumpty had a great fall

+

Humpty Dumpty sat on a wall. Humpty Dumpty had a great fall

+

Humpty Dumpty sat on a wall. Humpty Dumpty had a great fall

+

Humpty Dumpty sat on a wall. Humpty Dumpty had a great fall

+

Humpty Dumpty sat on a wall. +Humpty Dumpty had a great fall

- + \ No newline at end of file From 2b581cb3f6dcc0a31653b31bfbf1091bb001ce9c Mon Sep 17 00:00:00 2001 From: Laurentiu Delcea Date: Thu, 8 Nov 2018 21:37:35 +0200 Subject: [PATCH 030/119] BAEL-1962 Convert ZonedDateTime for MongoDB interactions (#5640) --- .../spring-data-mongodb/pom.xml | 2 +- .../java/com/baeldung/config/MongoConfig.java | 6 ++- .../main/java/com/baeldung/model/Action.java | 51 +++++++++++++++++++ .../baeldung/repository/ActionRepository.java | 6 +++ .../converter/ZonedDateTimeReadConverter.java | 14 +++++ .../ZonedDateTimeWriteConverter.java | 13 +++++ .../repository/ActionRepositoryLiveTest.java | 50 ++++++++++++++++++ 7 files changed, 140 insertions(+), 2 deletions(-) create mode 100644 persistence-modules/spring-data-mongodb/src/main/java/com/baeldung/model/Action.java create mode 100644 persistence-modules/spring-data-mongodb/src/main/java/com/baeldung/repository/ActionRepository.java create mode 100644 persistence-modules/spring-data-mongodb/src/main/java/converter/ZonedDateTimeReadConverter.java create mode 100644 persistence-modules/spring-data-mongodb/src/main/java/converter/ZonedDateTimeWriteConverter.java create mode 100644 persistence-modules/spring-data-mongodb/src/test/java/com/baeldung/repository/ActionRepositoryLiveTest.java diff --git a/persistence-modules/spring-data-mongodb/pom.xml b/persistence-modules/spring-data-mongodb/pom.xml index 466acf5a43..76ec5a96a6 100644 --- a/persistence-modules/spring-data-mongodb/pom.xml +++ b/persistence-modules/spring-data-mongodb/pom.xml @@ -109,7 +109,7 @@ - 2.1.0.RELEASE + 2.1.2.RELEASE 4.1.4 1.1.3 5.1.0.RELEASE diff --git a/persistence-modules/spring-data-mongodb/src/main/java/com/baeldung/config/MongoConfig.java b/persistence-modules/spring-data-mongodb/src/main/java/com/baeldung/config/MongoConfig.java index f1048fa145..9fa90acf86 100644 --- a/persistence-modules/spring-data-mongodb/src/main/java/com/baeldung/config/MongoConfig.java +++ b/persistence-modules/spring-data-mongodb/src/main/java/com/baeldung/config/MongoConfig.java @@ -3,6 +3,8 @@ package com.baeldung.config; import java.util.ArrayList; import java.util.List; +import converter.ZonedDateTimeReadConverter; +import converter.ZonedDateTimeWriteConverter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.converter.Converter; @@ -52,6 +54,8 @@ public class MongoConfig extends AbstractMongoConfiguration { @Override public MongoCustomConversions customConversions() { converters.add(new UserWriterConverter()); + converters.add(new ZonedDateTimeReadConverter()); + converters.add(new ZonedDateTimeWriteConverter()); return new MongoCustomConversions(converters); } @@ -64,5 +68,5 @@ public class MongoConfig extends AbstractMongoConfiguration { MongoTransactionManager transactionManager(MongoDbFactory dbFactory) { return new MongoTransactionManager(dbFactory); } - + } diff --git a/persistence-modules/spring-data-mongodb/src/main/java/com/baeldung/model/Action.java b/persistence-modules/spring-data-mongodb/src/main/java/com/baeldung/model/Action.java new file mode 100644 index 0000000000..aa480dbdf7 --- /dev/null +++ b/persistence-modules/spring-data-mongodb/src/main/java/com/baeldung/model/Action.java @@ -0,0 +1,51 @@ +package com.baeldung.model; + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.time.ZonedDateTime; + +@Document +public class Action { + + @Id + private String id; + + private String description; + private ZonedDateTime time; + + public Action(String id, String description, ZonedDateTime time) { + this.id = id; + this.description = description; + this.time = time; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public ZonedDateTime getTime() { + return time; + } + + public void setTime(ZonedDateTime time) { + this.time = time; + } + + @Override + public String toString() { + return "Action{id='" + id + "', description='" + description + "', time=" + time + '}'; + } +} diff --git a/persistence-modules/spring-data-mongodb/src/main/java/com/baeldung/repository/ActionRepository.java b/persistence-modules/spring-data-mongodb/src/main/java/com/baeldung/repository/ActionRepository.java new file mode 100644 index 0000000000..bdca490fe6 --- /dev/null +++ b/persistence-modules/spring-data-mongodb/src/main/java/com/baeldung/repository/ActionRepository.java @@ -0,0 +1,6 @@ +package com.baeldung.repository; + +import com.baeldung.model.Action; +import org.springframework.data.mongodb.repository.MongoRepository; + +public interface ActionRepository extends MongoRepository { } \ No newline at end of file diff --git a/persistence-modules/spring-data-mongodb/src/main/java/converter/ZonedDateTimeReadConverter.java b/persistence-modules/spring-data-mongodb/src/main/java/converter/ZonedDateTimeReadConverter.java new file mode 100644 index 0000000000..a2d847957b --- /dev/null +++ b/persistence-modules/spring-data-mongodb/src/main/java/converter/ZonedDateTimeReadConverter.java @@ -0,0 +1,14 @@ +package converter; + +import org.springframework.core.convert.converter.Converter; + +import java.time.ZoneOffset; +import java.time.ZonedDateTime; +import java.util.Date; + +public class ZonedDateTimeReadConverter implements Converter { + @Override + public ZonedDateTime convert(Date date) { + return date.toInstant().atZone(ZoneOffset.UTC); + } +} \ No newline at end of file diff --git a/persistence-modules/spring-data-mongodb/src/main/java/converter/ZonedDateTimeWriteConverter.java b/persistence-modules/spring-data-mongodb/src/main/java/converter/ZonedDateTimeWriteConverter.java new file mode 100644 index 0000000000..e13ac2d130 --- /dev/null +++ b/persistence-modules/spring-data-mongodb/src/main/java/converter/ZonedDateTimeWriteConverter.java @@ -0,0 +1,13 @@ +package converter; + +import org.springframework.core.convert.converter.Converter; + +import java.time.ZonedDateTime; +import java.util.Date; + +public class ZonedDateTimeWriteConverter implements Converter { + @Override + public Date convert(ZonedDateTime zonedDateTime) { + return Date.from(zonedDateTime.toInstant()); + } +} \ No newline at end of file diff --git a/persistence-modules/spring-data-mongodb/src/test/java/com/baeldung/repository/ActionRepositoryLiveTest.java b/persistence-modules/spring-data-mongodb/src/test/java/com/baeldung/repository/ActionRepositoryLiveTest.java new file mode 100644 index 0000000000..096015ca0a --- /dev/null +++ b/persistence-modules/spring-data-mongodb/src/test/java/com/baeldung/repository/ActionRepositoryLiveTest.java @@ -0,0 +1,50 @@ +package com.baeldung.repository; + +import com.baeldung.config.MongoConfig; +import com.baeldung.model.Action; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoOperations; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import java.time.ZoneOffset; +import java.time.ZonedDateTime; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = MongoConfig.class) +public class ActionRepositoryLiveTest { + + @Autowired + private MongoOperations mongoOps; + + @Autowired + private ActionRepository actionRepository; + + @Before + public void setup() { + if (!mongoOps.collectionExists(Action.class)) { + mongoOps.createCollection(Action.class); + } + } + + @Test + public void givenSavedAction_TimeIsRetrievedCorrectly() { + String id = "testId"; + ZonedDateTime now = ZonedDateTime.now(ZoneOffset.UTC); + + actionRepository.save(new Action(id, "click-action", now)); + Action savedAction = actionRepository.findById(id).get(); + + Assert.assertEquals(now.withNano(0), savedAction.getTime().withNano(0)); + } + + @After + public void tearDown() { + mongoOps.dropCollection(Action.class); + } +} \ No newline at end of file From 23143a0c175074a6a9f4e9705374e6b6b9b38903 Mon Sep 17 00:00:00 2001 From: charlesgonzales <39999268+charlesgonzales@users.noreply.github.com> Date: Fri, 9 Nov 2018 04:23:23 +0800 Subject: [PATCH 031/119] Bi-monthly test fix - BAEL-10195 (#5626) * Update README.md * Update README.md * Create README.md * Update README.md * Update README.md * Update README.md * Update README.md * Create README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Create README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.MD --- algorithms-sorting/README.md | 2 +- apache-pulsar/README.md | 3 +++ core-java-collections/README.md | 4 ++++ core-java-io/README.md | 1 + core-java/README.md | 2 ++ core-kotlin/README.md | 7 ++++++- core-scala/README.md | 3 +++ gradle/README.md | 1 + jackson/README.md | 1 + java-dates/README.md | 1 + java-strings/README.md | 1 + jersey/README.md | 1 + jib/README.md | 3 +++ json/README.md | 3 ++- libraries-data/README.md | 2 ++ libraries/README.md | 1 + maven/README.md | 1 + persistence-modules/spring-data-redis/README.md | 1 + spring-5-reactive/README.md | 3 ++- spring-mvc-simple/README.md | 1 + spring-security-mvc-boot/README.MD | 1 + 21 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 apache-pulsar/README.md create mode 100644 core-scala/README.md create mode 100644 jib/README.md diff --git a/algorithms-sorting/README.md b/algorithms-sorting/README.md index f88b93e25e..36460293b0 100644 --- a/algorithms-sorting/README.md +++ b/algorithms-sorting/README.md @@ -4,4 +4,4 @@ - [Merge Sort in Java](https://www.baeldung.com/java-merge-sort) - [Quicksort Algorithm Implementation in Java](https://www.baeldung.com/java-quicksort) - [Insertion Sort in Java](https://www.baeldung.com/java-insertion-sort) - +- [Heap Sort in Java](https://www.baeldung.com/java-heap-sort) diff --git a/apache-pulsar/README.md b/apache-pulsar/README.md new file mode 100644 index 0000000000..2970bc3d88 --- /dev/null +++ b/apache-pulsar/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Introduction to Apache Pulsar](https://www.baeldung.com/apache-pulsar) diff --git a/core-java-collections/README.md b/core-java-collections/README.md index d0aaaa7182..fbc8144954 100644 --- a/core-java-collections/README.md +++ b/core-java-collections/README.md @@ -39,3 +39,7 @@ - [Operating on and Removing an Item from Stream](https://www.baeldung.com/java-use-remove-item-stream) - [An Introduction to Synchronized Java Collections](https://www.baeldung.com/java-synchronized-collections) - [Guide to EnumSet](https://www.baeldung.com/java-enumset) +- [Removing Elements from Java Collections](https://www.baeldung.com/java-collection-remove-elements) +- [Converting a Collection to ArrayList in Java](https://www.baeldung.com/java-convert-collection-arraylist) +- [Java 8 Streams: Find Items From One List Based On Values From Another List](https://www.baeldung.com/java-streams-find-list-items) +- [Combining Different Types of Collections in Java](https://www.baeldung.com/java-combine-collections) diff --git a/core-java-io/README.md b/core-java-io/README.md index ae4c267b8a..c81e466b57 100644 --- a/core-java-io/README.md +++ b/core-java-io/README.md @@ -33,3 +33,4 @@ - [Initialize a HashMap in Java](https://www.baeldung.com/java-initialize-hashmap) - [Read a File into an ArrayList](https://www.baeldung.com/java-file-to-arraylist) - [Guide to Java OutputStream](https://www.baeldung.com/java-outputstream) +- [Reading a CSV File into an Array](https://www.baeldung.com/java-csv-file-array) diff --git a/core-java/README.md b/core-java/README.md index 856cc58097..10fbdb87a7 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -157,4 +157,6 @@ - [Ternary Operator In Java](https://www.baeldung.com/java-ternary-operator) - [Merging java.util.Properties Objects](https://www.baeldung.com/java-merging-properties) - [Understanding Memory Leaks in Java](https://www.baeldung.com/java-memory-leaks) +- [Arrays in Java: A Reference Guide](https://www.baeldung.com/java-arrays-guide) +- [A Guide to SimpleDateFormat](https://www.baeldung.com/java-simple-date-format) - [SSL Handshake Failures](https://www.baeldung.com/java-ssl-handshake-failures) diff --git a/core-kotlin/README.md b/core-kotlin/README.md index ab9e96c2e1..1b04b71228 100644 --- a/core-kotlin/README.md +++ b/core-kotlin/README.md @@ -40,5 +40,10 @@ - [Converting Kotlin Data Class from JSON using GSON](https://www.baeldung.com/kotlin-json-convert-data-class) - [Concatenate Strings in Kotlin](https://www.baeldung.com/kotlin-concatenate-strings) - [Kotlin return, break, continue Keywords](https://www.baeldung.com/kotlin-return-break-continue) -- [Mapping of Data Objects in Kotlin](https://www.baeldung.com/kotlin-data-objects-mapping) +- [Mapping of Data Objects in Kotlin](https://www.baeldung.com/kotlin-data-objects) - [Initializing Arrays in Kotlin](https://www.baeldung.com/kotlin-initialize-array) +- [Threads vs Coroutines in Kotlin](https://www.baeldung.com/kotlin-threads-coroutines) +- [Guide to Kotlin Interfaces](https://www.baeldung.com/kotlin-interfaces) +- [Guide to Sorting in Kotlin](https://www.baeldung.com/kotlin-sort) +- [Dependency Injection for Kotlin with Injekt](https://www.baeldung.com/kotlin-dependency-injection-with-injekt) +- [Implementing a Binary Tree in Kotlin](https://www.baeldung.com/kotlin-binary-tree) diff --git a/core-scala/README.md b/core-scala/README.md new file mode 100644 index 0000000000..eed344193f --- /dev/null +++ b/core-scala/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Introduction to Scala](https://www.baeldung.com/scala-intro) diff --git a/gradle/README.md b/gradle/README.md index 229466dfec..a1f5c74c57 100644 --- a/gradle/README.md +++ b/gradle/README.md @@ -4,3 +4,4 @@ - [Creating a Fat Jar in Gradle](http://www.baeldung.com/gradle-fat-jar) - [A Custom Task in Gradle](http://www.baeldung.com/gradle-custom-task) - [Kotlin Dependency Injection with Kodein](http://www.baeldung.com/kotlin-kodein-dependency-injection) +- [Using JUnit 5 with Gradle](https://www.baeldung.com/junit-5-gradle) diff --git a/jackson/README.md b/jackson/README.md index a05c95de94..04e88d0ea1 100644 --- a/jackson/README.md +++ b/jackson/README.md @@ -36,3 +36,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Jackson – Change Name of Field](http://www.baeldung.com/jackson-name-of-property) - [Serialize Only Fields that meet a Custom Criteria with Jackson](http://www.baeldung.com/jackson-serialize-field-custom-criteria) - [Mapping Nested Values with Jackson](http://www.baeldung.com/jackson-nested-values) +- [Convert XML to JSON Using Jackson](https://www.baeldung.com/jackson-convert-xml-json) diff --git a/java-dates/README.md b/java-dates/README.md index f99bfeb861..66046b16a6 100644 --- a/java-dates/README.md +++ b/java-dates/README.md @@ -23,3 +23,4 @@ - [Increment Date in Java](http://www.baeldung.com/java-increment-date) - [Add Hours To a Date In Java](http://www.baeldung.com/java-add-hours-date) - [Guide to DateTimeFormatter](https://www.baeldung.com/java-datetimeformatter) +- [Format ZonedDateTime to String](https://www.baeldung.com/java-format-zoned-datetime-string) diff --git a/java-strings/README.md b/java-strings/README.md index a653087401..1b24a2b821 100644 --- a/java-strings/README.md +++ b/java-strings/README.md @@ -35,3 +35,4 @@ - [String Not Empty Test Assertions in Java](https://www.baeldung.com/java-assert-string-not-empty) - [String Performance Hints](https://www.baeldung.com/java-string-performance) - [Using indexOf to Find All Occurrences of a Word in a String](https://www.baeldung.com/java-indexOf-find-string-occurrences) +- [Java Base64 Encoding and Decoding](https://www.baeldung.com/java-base64-encode-and-decode) diff --git a/jersey/README.md b/jersey/README.md index c548a79c6d..1dd871b3e8 100644 --- a/jersey/README.md +++ b/jersey/README.md @@ -2,3 +2,4 @@ - [Jersey MVC Support](https://www.baeldung.com/jersey-mvc) - [Bean Validation in Jersey](https://www.baeldung.com/jersey-bean-validation) - [Set a Response Body in JAX-RS](https://www.baeldung.com/jax-rs-response) +- [Exploring the Jersey Test Framework](https://www.baeldung.com/jersey-test) diff --git a/jib/README.md b/jib/README.md new file mode 100644 index 0000000000..82bd2fed42 --- /dev/null +++ b/jib/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Dockerizing Java Apps using Jib](https://www.baeldung.com/jib-dockerizing) diff --git a/json/README.md b/json/README.md index e0679bc60b..2e253a4ae9 100644 --- a/json/README.md +++ b/json/README.md @@ -9,4 +9,5 @@ - [Introduction to JsonPath](http://www.baeldung.com/guide-to-jayway-jsonpath) - [Introduction to JSON-Java (org.json)](http://www.baeldung.com/java-org-json) - [Overview of JSON Pointer](https://www.baeldung.com/json-pointer) -- [Introduction to the JSON Binding API (JSR 367) in Java](http://www.baeldung.com/java-json-binding-api) \ No newline at end of file +- [Introduction to the JSON Binding API (JSR 367) in Java](http://www.baeldung.com/java-json-binding-api) +- [Get a Value by Key in a JSONArray](https://www.baeldung.com/java-jsonarray-get-value-by-key) diff --git a/libraries-data/README.md b/libraries-data/README.md index 63ee5f9947..7e40a4a2e2 100644 --- a/libraries-data/README.md +++ b/libraries-data/README.md @@ -12,3 +12,5 @@ - [Guide to JMapper](https://www.baeldung.com/jmapper) - [A Guide to Apache Crunch](https://www.baeldung.com/apache-crunch) - [Building a Data Pipeline with Flink and Kafka](https://www.baeldung.com/kafka-flink-data-pipeline) +- [Intro to Apache Storm](https://www.baeldung.com/apache-storm) +- [Guide to Ebean ORM](https://www.baeldung.com/ebean-orm) diff --git a/libraries/README.md b/libraries/README.md index fcf687d806..851e3a3d17 100644 --- a/libraries/README.md +++ b/libraries/README.md @@ -83,6 +83,7 @@ - [Guide to JMapper](http://www.baeldung.com/jmapper) - [An Introduction to Apache Commons Lang 3](https://www.baeldung.com/java-commons-lang-3) - [Exactly Once Processing in Kafka](https://www.baeldung.com/kafka-exactly-once) +- [An Introduction to SuanShu](https://www.baeldung.com/suanshu) The libraries module contains examples related to small libraries that are relatively easy to use and does not require any separate module of its own. diff --git a/maven/README.md b/maven/README.md index 970250d142..1c0e50f95a 100644 --- a/maven/README.md +++ b/maven/README.md @@ -13,3 +13,4 @@ - [Apache Maven Standard Directory Layout](https://www.baeldung.com/maven-directory-structure) - [Apache Maven Tutorial](https://www.baeldung.com/maven) - [Use the Latest Version of a Dependency in Maven](https://www.baeldung.com/maven-dependency-latest-version) +- [Multi-Module Project with Maven](https://www.baeldung.com/maven-multi-module) diff --git a/persistence-modules/spring-data-redis/README.md b/persistence-modules/spring-data-redis/README.md index da44920e16..a20f5052f0 100644 --- a/persistence-modules/spring-data-redis/README.md +++ b/persistence-modules/spring-data-redis/README.md @@ -3,6 +3,7 @@ ### Relevant Articles: - [Introduction to Spring Data Redis](http://www.baeldung.com/spring-data-redis-tutorial) - [PubSub Messaging with Spring Data Redis](http://www.baeldung.com/spring-data-redis-pub-sub) +- [An Introduction to Spring Data Redis Reactive](https://www.baeldung.com/spring-data-redis-reactive) ### Build the Project with Tests Running ``` diff --git a/spring-5-reactive/README.md b/spring-5-reactive/README.md index 1431554882..267925b798 100644 --- a/spring-5-reactive/README.md +++ b/spring-5-reactive/README.md @@ -14,4 +14,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Spring Webflux and CORS](http://www.baeldung.com/spring-webflux-cors) - [Handling Errors in Spring WebFlux](http://www.baeldung.com/spring-webflux-errors) - [Server-Sent Events in Spring](https://www.baeldung.com/spring-server-sent-events) -- [A Guide to Spring Session Reactive Support: WebSession](https://www.baeldung.com/a-guide-to-spring-session-reactive-support-websession/) \ No newline at end of file +- [A Guide to Spring Session Reactive Support: WebSession](https://www.baeldung.com/spring-session-reactive) +- [Validation for Functional Endpoints in Spring 5](https://www.baeldung.com/spring-functional-endpoints-validation) diff --git a/spring-mvc-simple/README.md b/spring-mvc-simple/README.md index 39053534fa..a9b002afd7 100644 --- a/spring-mvc-simple/README.md +++ b/spring-mvc-simple/README.md @@ -6,3 +6,4 @@ - [Servlet Redirect vs Forward](http://www.baeldung.com/servlet-redirect-forward) - [Apache Tiles Integration with Spring MVC](http://www.baeldung.com/spring-mvc-apache-tiles) - [Guide to Spring Email](http://www.baeldung.com/spring-email) +- [Request Method Not Supported (405) in Spring](https://www.baeldung.com/spring-request-method-not-supported-405) diff --git a/spring-security-mvc-boot/README.MD b/spring-security-mvc-boot/README.MD index 6f01bfdc65..20036283a3 100644 --- a/spring-security-mvc-boot/README.MD +++ b/spring-security-mvc-boot/README.MD @@ -12,3 +12,4 @@ The "REST With Spring" Classes: http://github.learnspringsecurity.com - [Spring Data with Spring Security](https://www.baeldung.com/spring-data-security) - [Spring Security – Whitelist IP Range](https://www.baeldung.com/spring-security-whitelist-ip-range) - [Find the Registered Spring Security Filters](https://www.baeldung.com/spring-security-registered-filters) +- [HTTPS using Self-Signed Certificate in Spring Boot](https://www.baeldung.com/spring-boot-https-self-signed-certificate) From 6a352be9778f6220030f3b6c0163eba2374bb52b Mon Sep 17 00:00:00 2001 From: cdjole Date: Fri, 9 Nov 2018 01:07:59 +0100 Subject: [PATCH 032/119] Calculate circle area. (#5644) --- .../java/com/baeldung/area/circle/Circle.java | 30 ++++++++++++++++ .../com/baeldung/area/circle/CircleArea.java | 36 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/area/circle/Circle.java create mode 100644 core-java/src/main/java/com/baeldung/area/circle/CircleArea.java diff --git a/core-java/src/main/java/com/baeldung/area/circle/Circle.java b/core-java/src/main/java/com/baeldung/area/circle/Circle.java new file mode 100644 index 0000000000..595bc3d2e7 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/area/circle/Circle.java @@ -0,0 +1,30 @@ +package com.baeldung.area.circle; + +public class Circle { + + private double radius; + + public Circle(double radius) { + this.radius = radius; + } + + public double getRadius() { + return radius; + } + + public void setRadius(double radius) { + this.radius = radius; + } + + public double getArea() { + return calculateArea(); + } + + private double calculateArea() { + return radius * radius * Math.PI; + } + + public String toString() { + return "The area of the circle [radius = " + radius + "]: " + calculateArea(); + } +} diff --git a/core-java/src/main/java/com/baeldung/area/circle/CircleArea.java b/core-java/src/main/java/com/baeldung/area/circle/CircleArea.java new file mode 100644 index 0000000000..4d78637af6 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/area/circle/CircleArea.java @@ -0,0 +1,36 @@ +package com.baeldung.area.circle; + +import java.util.InputMismatchException; +import java.util.Scanner; + +public class CircleArea { + + public static void main(String[] args) { + if (args.length > 0) { + try { + double radius = Double.parseDouble(args[0]); + calculateArea(radius); + } catch (NumberFormatException nfe) { + System.out.println("Invalid value for radius"); + System.exit(0); + } + } + + try (Scanner scanner = new Scanner(System.in)) { + System.out.println("Please enter radius value: "); + double radius = scanner.nextDouble(); + calculateArea(radius); + } catch (InputMismatchException e) { + System.out.println("Invalid value for radius"); + System.exit(0); + } + + Circle circle = new Circle(7); + System.out.println(circle); + } + + private static void calculateArea(double radius) { + double area = radius * radius * Math.PI; + System.out.println("The area of the circle [radius = " + radius + "]: " + area); + } +} From 4590bb37f16f1c10229772431510abf5f6da039b Mon Sep 17 00:00:00 2001 From: Rahul Srivastava Date: Fri, 9 Nov 2018 11:01:57 +0530 Subject: [PATCH 033/119] Deleting html file --- .../main/java/com/baeldung/string/page.html | 31 ------------------- 1 file changed, 31 deletions(-) delete mode 100644 core-java/src/main/java/com/baeldung/string/page.html diff --git a/core-java/src/main/java/com/baeldung/string/page.html b/core-java/src/main/java/com/baeldung/string/page.html deleted file mode 100644 index fc39ee0057..0000000000 --- a/core-java/src/main/java/com/baeldung/string/page.html +++ /dev/null @@ -1,31 +0,0 @@ - - -Humpty Dumpty sat on a wall.
Humpty Dumpty had a great fall.
-Humpty Dumpty sat on a wall. Humpty Dumpty had a great fall.
-Humpty Dumpty sat on a wall. Humpty Dumpty had a great fall.
-Humpty Dumpty sat on a wall. Humpty Dumpty had a great fall.
-Humpty Dumpty sat on a wall. -Humpty Dumpty had a great fall. -
- - - - - -
-
Humpty Dumpty sat on a wall.
Humpty Dumpty had a great fall.
-
Humpty Dumpty sat on a wall.
Humpty Dumpty had a great fall.
-
Humpty Dumpty sat on a wall.
Humpty Dumpty had a great fall.
-
Humpty Dumpty sat on a wall.

Humpty Dumpty had a great fall.
-
Humpty Dumpty sat on a wall.
-Humpty Dumpty had a great fall
-
-

Humpty Dumpty sat on a wall.
Humpty Dumpty had a great fall

-

Humpty Dumpty sat on a wall. Humpty Dumpty had a great fall

-

Humpty Dumpty sat on a wall. Humpty Dumpty had a great fall

-

Humpty Dumpty sat on a wall. Humpty Dumpty had a great fall

-

Humpty Dumpty sat on a wall. -Humpty Dumpty had a great fall

- - \ No newline at end of file From 064113f939a4a3176ffc74ce98badb161c10b76a Mon Sep 17 00:00:00 2001 From: charlesgonzales <39999268+charlesgonzales@users.noreply.github.com> Date: Fri, 9 Nov 2018 17:46:30 +0800 Subject: [PATCH 034/119] Add/fix links Team_BAEL-10195 (#5647) * Update README.md * Update README.md --- lombok/README.md | 2 +- persistence-modules/hibernate5/README.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lombok/README.md b/lombok/README.md index 34ec569e89..bd6282fd18 100644 --- a/lombok/README.md +++ b/lombok/README.md @@ -4,4 +4,4 @@ - [Using Lombok’s @Getter for Boolean Fields](https://www.baeldung.com/lombok-getter-boolean) - [Lombok @Builder with Inheritance](https://www.baeldung.com/lombok-builder-inheritance) - [Lombok Builder with Default Value](https://www.baeldung.com/lombok-builder-default-value) -- [Lombok Builder with Custom Setter](https://www.baeldung.com/lombok-builder-with-custom-setter) +- [Lombok Builder with Custom Setter](https://www.baeldung.com/lombok-builder-custom-setter) diff --git a/persistence-modules/hibernate5/README.md b/persistence-modules/hibernate5/README.md index 7f52531076..a94379b5cb 100644 --- a/persistence-modules/hibernate5/README.md +++ b/persistence-modules/hibernate5/README.md @@ -18,3 +18,4 @@ - [@JoinColumn Annotation Explained](https://www.baeldung.com/jpa-join-column) - [Hibernate 5 Naming Strategy Configuration](https://www.baeldung.com/hibernate-naming-strategy) - [Proxy in Hibernate load() Method](https://www.baeldung.com/hibernate-proxy-load-method) +- [Custom Types in Hibernate](https://www.baeldung.com/hibernate-custom-types) From 8e6fff4fc88b2cb9100018b2cb5a14f40f64e78b Mon Sep 17 00:00:00 2001 From: Paul Date: Fri, 9 Nov 2018 16:35:44 +0300 Subject: [PATCH 035/119] BAEL-1596 Spring Events (#5605) * Annotation-driven event listener + generic events * update examples + add tests * add article link * add more tests for Spring Events --- spring-all/README.md | 9 ++-- .../AnnotationDrivenEventListener.java | 46 +++++++++++++++++++ .../synchronous/ContextRefreshedListener.java | 7 +++ .../CustomSpringEventPublisher.java | 12 +++++ .../synchronous/GenericSpringAppEvent.java | 18 ++++++++ .../synchronous/GenericSpringEvent.java | 21 +++++++++ .../GenericSpringEventListener.java | 22 +++++++++ .../GenericStringSpringAppEvent.java | 9 ++++ .../synchronous/GenericStringSpringEvent.java | 9 ++++ ...ntextRefreshedListenerIntegrationTest.java | 9 +++- ...enericAppEventListenerIntegrationTest.java | 28 +++++++++++ ...nousCustomSpringEventsIntegrationTest.java | 29 +++++++++++- 12 files changed, 214 insertions(+), 5 deletions(-) create mode 100644 spring-all/src/main/java/org/baeldung/springevents/synchronous/AnnotationDrivenEventListener.java create mode 100644 spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringAppEvent.java create mode 100644 spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEvent.java create mode 100644 spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEventListener.java create mode 100644 spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringAppEvent.java create mode 100644 spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringEvent.java create mode 100644 spring-all/src/test/java/org/baeldung/springevents/synchronous/GenericAppEventListenerIntegrationTest.java diff --git a/spring-all/README.md b/spring-all/README.md index ded5e26285..34e5c3435e 100644 --- a/spring-all/README.md +++ b/spring-all/README.md @@ -4,10 +4,12 @@ This project is used to replicate Spring Exceptions only. -###The Course +### The Course + The "REST With Spring" Classes: http://bit.ly/restwithspring - -### Relevant articles: + +### Relevant articles: + - [Guide to Spring @Autowired](http://www.baeldung.com/spring-autowire) - [Properties with Spring](http://www.baeldung.com/properties-with-spring) - checkout the `org.baeldung.properties` package for all scenarios of properties injection and usage - [Spring Profiles](http://www.baeldung.com/spring-profiles) @@ -30,3 +32,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Spring Web Contexts](http://www.baeldung.com/spring-web-contexts) - [Spring Cache – Creating a Custom KeyGenerator](http://www.baeldung.com/spring-cache-custom-keygenerator) - [Spring @Primary Annotation](http://www.baeldung.com/spring-primary) +- [Spring Events](https://www.baeldung.com/spring-events) diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/AnnotationDrivenEventListener.java b/spring-all/src/main/java/org/baeldung/springevents/synchronous/AnnotationDrivenEventListener.java new file mode 100644 index 0000000000..f750c40a6e --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/springevents/synchronous/AnnotationDrivenEventListener.java @@ -0,0 +1,46 @@ +package org.baeldung.springevents.synchronous; + +import org.springframework.context.event.ContextStartedEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; +import org.springframework.transaction.event.TransactionPhase; +import org.springframework.transaction.event.TransactionalEventListener; + +@Component +public class AnnotationDrivenEventListener { + + // for tests + private boolean hitContextStartedHandler = false; + private boolean hitSuccessfulEventHandler = false; + private boolean hitCustomEventHandler = false; + + @EventListener + public void handleContextStart(final ContextStartedEvent cse) { + System.out.println("Handling context started event."); + hitContextStartedHandler = true; + } + + @EventListener(condition = "#event.success") + public void handleSuccessful(final GenericSpringEvent event) { + System.out.println("Handling generic event (conditional): " + event.getWhat()); + hitSuccessfulEventHandler = true; + } + + @TransactionalEventListener(phase = TransactionPhase.BEFORE_COMMIT) + public void handleCustom(final CustomSpringEvent event) { + System.out.println("Handling event inside a transaction BEFORE COMMIT."); + hitCustomEventHandler = true; + } + + boolean isHitContextStartedHandler() { + return hitContextStartedHandler; + } + + boolean isHitSuccessfulEventHandler() { + return hitSuccessfulEventHandler; + } + + boolean isHitCustomEventHandler() { + return hitCustomEventHandler; + } +} diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/ContextRefreshedListener.java b/spring-all/src/main/java/org/baeldung/springevents/synchronous/ContextRefreshedListener.java index 052437e555..9f8b2e6e83 100644 --- a/spring-all/src/main/java/org/baeldung/springevents/synchronous/ContextRefreshedListener.java +++ b/spring-all/src/main/java/org/baeldung/springevents/synchronous/ContextRefreshedListener.java @@ -7,9 +7,16 @@ import org.springframework.stereotype.Component; @Component public class ContextRefreshedListener implements ApplicationListener { + // for tests + private boolean hitContextRefreshedHandler = false; + @Override public void onApplicationEvent(final ContextRefreshedEvent cse) { System.out.println("Handling context re-freshed event. "); + hitContextRefreshedHandler = true; } + boolean isHitContextRefreshedHandler() { + return hitContextRefreshedHandler; + } } \ No newline at end of file diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventPublisher.java b/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventPublisher.java index 4569de1d5e..3182090d5d 100644 --- a/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventPublisher.java +++ b/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventPublisher.java @@ -16,4 +16,16 @@ public class CustomSpringEventPublisher { applicationEventPublisher.publishEvent(customSpringEvent); } + public void publishGenericEvent(final String message, boolean success) { + System.out.println("Publishing generic event."); + final GenericSpringEvent genericSpringEvent = new GenericStringSpringEvent(message, success); + applicationEventPublisher.publishEvent(genericSpringEvent); + } + + public void publishGenericAppEvent(final String message) { + System.out.println("Publishing generic event."); + final GenericSpringAppEvent genericSpringEvent = new GenericStringSpringAppEvent(this, message); + applicationEventPublisher.publishEvent(genericSpringEvent); + } + } diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringAppEvent.java b/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringAppEvent.java new file mode 100644 index 0000000000..6804312189 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringAppEvent.java @@ -0,0 +1,18 @@ +package org.baeldung.springevents.synchronous; + +import org.springframework.context.ApplicationEvent; + +public class GenericSpringAppEvent extends ApplicationEvent { + + private final T what; + + public GenericSpringAppEvent(final Object source, final T what) { + super(source); + this.what = what; + } + + public T getWhat() { + return what; + } + +} diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEvent.java b/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEvent.java new file mode 100644 index 0000000000..ce2c223fec --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEvent.java @@ -0,0 +1,21 @@ +package org.baeldung.springevents.synchronous; + +public class GenericSpringEvent { + + private final T what; + protected final boolean success; + + public GenericSpringEvent(final T what, final boolean success) { + this.what = what; + this.success = success; + } + + public T getWhat() { + return what; + } + + public boolean isSuccess() { + return success; + } + +} diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEventListener.java b/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEventListener.java new file mode 100644 index 0000000000..1f5e3e7068 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEventListener.java @@ -0,0 +1,22 @@ +package org.baeldung.springevents.synchronous; + +import org.springframework.context.ApplicationListener; +import org.springframework.lang.NonNull; +import org.springframework.stereotype.Component; + +@Component +public class GenericSpringEventListener implements ApplicationListener> { + + // for testing + private boolean hitEventHandler = false; + + @Override + public void onApplicationEvent(@NonNull final GenericSpringAppEvent event) { + System.out.println("Received spring generic event - " + event.getWhat()); + hitEventHandler = true; + } + + boolean isHitEventHandler() { + return hitEventHandler; + } +} \ No newline at end of file diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringAppEvent.java b/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringAppEvent.java new file mode 100644 index 0000000000..fd214696e7 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringAppEvent.java @@ -0,0 +1,9 @@ +package org.baeldung.springevents.synchronous; + +class GenericStringSpringAppEvent extends GenericSpringAppEvent { + + GenericStringSpringAppEvent(final Object source, final String what) { + super(source, what); + } + +} diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringEvent.java b/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringEvent.java new file mode 100644 index 0000000000..dd4e4e3ed4 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringEvent.java @@ -0,0 +1,9 @@ +package org.baeldung.springevents.synchronous; + +public class GenericStringSpringEvent extends GenericSpringEvent { + + GenericStringSpringEvent(final String what, final boolean success) { + super(what, success); + } + +} diff --git a/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerIntegrationTest.java b/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerIntegrationTest.java index ac8758bbf6..e8e6f91b06 100644 --- a/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerIntegrationTest.java +++ b/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerIntegrationTest.java @@ -3,16 +3,23 @@ package org.baeldung.springevents.synchronous; import org.baeldung.springevents.synchronous.SynchronousSpringEventsConfig; import org.junit.Test; import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; +import static org.springframework.util.Assert.isTrue; + @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { SynchronousSpringEventsConfig.class }, loader = AnnotationConfigContextLoader.class) public class ContextRefreshedListenerIntegrationTest { + @Autowired + private ContextRefreshedListener listener; + @Test - public void testContextRefreshedListener() throws InterruptedException { + public void testContextRefreshedListener() { System.out.println("Test context re-freshed listener."); + isTrue(listener.isHitContextRefreshedHandler(), "Refresh should be called once"); } } \ No newline at end of file diff --git a/spring-all/src/test/java/org/baeldung/springevents/synchronous/GenericAppEventListenerIntegrationTest.java b/spring-all/src/test/java/org/baeldung/springevents/synchronous/GenericAppEventListenerIntegrationTest.java new file mode 100644 index 0000000000..f183314b6d --- /dev/null +++ b/spring-all/src/test/java/org/baeldung/springevents/synchronous/GenericAppEventListenerIntegrationTest.java @@ -0,0 +1,28 @@ +package org.baeldung.springevents.synchronous; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import static org.springframework.util.Assert.isTrue; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { SynchronousSpringEventsConfig.class }, loader = AnnotationConfigContextLoader.class) +public class GenericAppEventListenerIntegrationTest { + + @Autowired + private CustomSpringEventPublisher publisher; + @Autowired + private GenericSpringEventListener listener; + + @Test + public void testGenericSpringEvent() { + isTrue(!listener.isHitEventHandler(), "The initial value should be false"); + publisher.publishGenericAppEvent("Hello world!!!"); + isTrue(listener.isHitEventHandler(), "Now the value should be changed to true"); + } + +} \ No newline at end of file diff --git a/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java b/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java index f9783f57dc..b169cfec36 100644 --- a/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java +++ b/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java @@ -1,5 +1,6 @@ package org.baeldung.springevents.synchronous; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -7,16 +8,42 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; +import static org.springframework.util.Assert.isTrue; + @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { SynchronousSpringEventsConfig.class }, loader = AnnotationConfigContextLoader.class) public class SynchronousCustomSpringEventsIntegrationTest { @Autowired private CustomSpringEventPublisher publisher; + @Autowired + private AnnotationDrivenEventListener listener; @Test - public void testCustomSpringEvents() throws InterruptedException { + public void testCustomSpringEvents() { + isTrue(!listener.isHitCustomEventHandler(), "The value should be false"); publisher.publishEvent("Hello world!!"); System.out.println("Done publishing synchronous custom event. "); + isTrue(listener.isHitCustomEventHandler(), "Now the value should be changed to true"); + } + + @Test + public void testGenericSpringEvent() { + isTrue(!listener.isHitSuccessfulEventHandler(), "The initial value should be false"); + publisher.publishGenericEvent("Hello world!!!", true); + isTrue(listener.isHitSuccessfulEventHandler(), "Now the value should be changed to true"); + } + + @Test + public void testGenericSpringEventNotProcessed() { + isTrue(!listener.isHitSuccessfulEventHandler(), "The initial value should be false"); + publisher.publishGenericEvent("Hello world!!!", false); + isTrue(!listener.isHitSuccessfulEventHandler(), "The value should still be false"); + } + + @Ignore("fix me") + @Test + public void testContextStartedEvent() { + isTrue(listener.isHitContextStartedHandler(), "Start should be called once"); } } From 2d872af165e3eec9d0b4a2b0274a10bbfa8a3186 Mon Sep 17 00:00:00 2001 From: cdjole Date: Fri, 9 Nov 2018 19:25:50 +0100 Subject: [PATCH 036/119] Circle class update. (#5648) --- core-java/src/main/java/com/baeldung/area/circle/Circle.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/area/circle/Circle.java b/core-java/src/main/java/com/baeldung/area/circle/Circle.java index 595bc3d2e7..40eed079e4 100644 --- a/core-java/src/main/java/com/baeldung/area/circle/Circle.java +++ b/core-java/src/main/java/com/baeldung/area/circle/Circle.java @@ -16,10 +16,6 @@ public class Circle { this.radius = radius; } - public double getArea() { - return calculateArea(); - } - private double calculateArea() { return radius * radius * Math.PI; } From 61ffac2c77c1f20878893898ce7e19cb11c99db3 Mon Sep 17 00:00:00 2001 From: Marcos Lopez Gonzalez Date: Fri, 9 Nov 2018 20:54:10 +0100 Subject: [PATCH 037/119] jpa cast error --- .../baeldung/jpa/stringcast/DummyEntity.java | 44 ++++++++++++++ .../jpa/stringcast/QueryExecutor.java | 41 +++++++++++++ .../main/resources/META-INF/persistence.xml | 15 +++++ .../jpa/stringcast/SpringCastTest.java | 58 +++++++++++++++++++ .../src/test/resources/persistence.xml | 35 +++++++++++ 5 files changed, 193 insertions(+) create mode 100644 persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/DummyEntity.java create mode 100644 persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/QueryExecutor.java create mode 100644 persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTest.java diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/DummyEntity.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/DummyEntity.java new file mode 100644 index 0000000000..12b57ff112 --- /dev/null +++ b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/DummyEntity.java @@ -0,0 +1,44 @@ +package com.baeldung.jpa.stringcast; + +import javax.persistence.*; + +@SqlResultSetMapping(name = "textQueryMapping", classes = { + @ConstructorResult(targetClass = DummyEntity.class, columns = { + @ColumnResult(name = "text") + }) +}) +@Entity +@Table(name = "dummy") +public class DummyEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String text; + + public DummyEntity() { + + } + + public DummyEntity(String text) { + this.text = text; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + +} diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/QueryExecutor.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/QueryExecutor.java new file mode 100644 index 0000000000..6f1e2ee5ca --- /dev/null +++ b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/QueryExecutor.java @@ -0,0 +1,41 @@ +package com.baeldung.jpa.stringcast; + +import com.sun.istack.internal.Nullable; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class QueryExecutor { + + public static List executeNativeQueryNoCastCheck(String statement, EntityManager em) { + Query query = em.createNativeQuery(statement); + return query.getResultList(); + } + + public static List executeNativeQueryWithCastCheck(String statement, EntityManager em) { + Query query = em.createNativeQuery(statement); + List results = query.getResultList(); + + if (results.isEmpty()) { + return new ArrayList<>(); + } + + if (results.get(0) instanceof String) { + return ((List) results) + .stream() + .map(s -> new String[] { s }) + .collect(Collectors.toList()); + } else { + return (List) results; + } + } + + public static List executeNativeQueryGeneric(String statement, String mapping, EntityManager em) { + Query query = em.createNativeQuery(statement, mapping); + return query.getResultList(); + } + +} diff --git a/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml index 3d881673b2..6345e7f364 100644 --- a/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml +++ b/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml @@ -20,6 +20,21 @@
+ + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.stringcast.DummyEntity + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTest.java b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTest.java new file mode 100644 index 0000000000..f66bd5d4e4 --- /dev/null +++ b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTest.java @@ -0,0 +1,58 @@ +package com.baeldung.jpa.stringcast; + +import org.junit.BeforeClass; +import org.junit.Test; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.EntityTransaction; +import javax.persistence.Persistence; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +public class SpringCastTest { + + private static EntityManager em; + private static EntityManagerFactory emFactory; + + @BeforeClass + public static void setup() { + emFactory = Persistence.createEntityManagerFactory("jpa-h2"); + em = emFactory.createEntityManager(); + + // insert an object into the db + DummyEntity dummyEntity = new DummyEntity(); + dummyEntity.setText("text"); + + EntityTransaction tr = em.getTransaction(); + tr.begin(); + em.persist(dummyEntity); + tr.commit(); + } + + @Test(expected = ClassCastException.class) + public void givenExecutorNoCastCheck_whenQueryReturnsOneColumn_thenClassCastThrown() { + List results = QueryExecutor.executeNativeQueryNoCastCheck("select text from dummy", em); + + // fails + for (String[] row : results) { + // do nothing + } + } + + @Test + public void givenExecutorWithCastCheck_whenQueryReturnsOneColumn_thenNoClassCastThrown() { + List results = QueryExecutor.executeNativeQueryWithCastCheck("select text from dummy", em); + assertEquals("text", results.get(0)[0]); + } + + @Test + public void givenExecutorGeneric_whenQueryReturnsOneColumn_thenNoClassCastThrown() { + List results = QueryExecutor.executeNativeQueryGeneric("select text from dummy", "textQueryMapping", em); + assertEquals("text", results + .get(0) + .getText()); + } + +} diff --git a/persistence-modules/java-jpa/src/test/resources/persistence.xml b/persistence-modules/java-jpa/src/test/resources/persistence.xml index d94221b54f..f65f2c7c62 100644 --- a/persistence-modules/java-jpa/src/test/resources/persistence.xml +++ b/persistence-modules/java-jpa/src/test/resources/persistence.xml @@ -17,5 +17,40 @@
+ + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.stringcast.DummyEntity + + + + + + + + + + + + + + + + com.baeldung.jpa.stringcast.DummyEntity + + + + + + + + + + + + + + + From 1d26380c072d4694fd8ac194befb1f7571bef858 Mon Sep 17 00:00:00 2001 From: Marcos Lopez Gonzalez Date: Fri, 9 Nov 2018 20:55:36 +0100 Subject: [PATCH 038/119] format --- .../test/java/com/baeldung/jpa/stringcast/SpringCastTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTest.java b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTest.java index f66bd5d4e4..ffe8da9bec 100644 --- a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTest.java +++ b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTest.java @@ -50,9 +50,7 @@ public class SpringCastTest { @Test public void givenExecutorGeneric_whenQueryReturnsOneColumn_thenNoClassCastThrown() { List results = QueryExecutor.executeNativeQueryGeneric("select text from dummy", "textQueryMapping", em); - assertEquals("text", results - .get(0) - .getText()); + assertEquals("text", results.get(0).getText()); } } From 792d6f6cc4de6165d76528bec62346d97d70f01f Mon Sep 17 00:00:00 2001 From: geroza Date: Fri, 9 Nov 2018 16:18:03 -0200 Subject: [PATCH 039/119] First commit to migrate the following articles from core-java: * to core-java-lang: * https://www.baeldung.com/java-reflection * https://www.baeldung.com/java-generics * https://www.baeldung.com/java-eclipse-equals-and-hashcode * https://www.baeldung.com/java-chained-exceptions * https://www.baeldung.com/java-primitive-conversions //to package * https://www.baeldung.com/java-method-reflection * https://www.baeldung.com/java-enum-iteration * https://www.baeldung.com/java-reflection-change-annotation-params * https://www.baeldung.com/java-dynamic-proxies * https://www.baeldung.com/java-double-brace-initialization * https://www.baeldung.com/java-hashcode * https://www.baeldung.com/java-diamond-operator * https://www.baeldung.com/java-static (?https://github.com/eugenp/tutorials/pull/3392) * https://www.baeldung.com/java-comparator-comparable * https://www.baeldung.com/java-continue-and-break * https://www.baeldung.com/java-initialization * https://www.baeldung.com/java-nested-classes * https://www.baeldung.com/java-loops * https://www.baeldung.com/java-varargs --- core-java-lang/.gitignore | 25 + core-java-lang/pom.xml | 547 ++++++++++++++++++ .../baeldung/breakcontinue/BreakContinue.java | 1 + .../chainedexception/LogWithChain.java | 0 .../chainedexception/LogWithoutChain.java | 0 .../GirlFriendOfManagerUpsetException.java | 0 .../exceptions/ManagerUpsetException.java | 0 .../exceptions/NoLeaveGrantedException.java | 0 .../exceptions/TeamLeadUpsetException.java | 0 .../java/com/baeldung/comparable/Player.java | 0 .../com/baeldung/comparable/PlayerSorter.java | 0 .../java/com/baeldung/comparator/Player.java | 0 .../comparator/PlayerAgeComparator.java | 0 .../baeldung/comparator/PlayerAgeSorter.java | 0 .../comparator/PlayerRankingComparator.java | 0 .../comparator/PlayerRankingSorter.java | 0 .../DynamicInvocationHandler.java | 0 .../TimingDynamicInvocationHandler.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 .../java/com/baeldung/generics/Building.java | 0 .../java/com/baeldung/generics/Generics.java | 0 .../java/com/baeldung/generics/House.java | 0 .../com/baeldung/hashcode/entities/User.java | 0 .../baeldung/initializationguide/User.java | 0 .../com/baeldung/java/reflection/Animal.java | 0 .../com/baeldung/java/reflection/Bird.java | 0 .../java/reflection/DynamicGreeter.java | 0 .../com/baeldung/java/reflection/Eating.java | 0 .../com/baeldung/java/reflection/Goat.java | 0 .../com/baeldung/java/reflection/Greeter.java | 0 .../java/reflection/GreetingAnnotation.java | 0 .../baeldung/java/reflection/Greetings.java | 0 .../baeldung/java/reflection/Locomotion.java | 0 .../baeldung/java/reflection/Operations.java | 0 .../com/baeldung/java/reflection/Person.java | 0 .../com/baeldung/loops/InfiniteLoops.java | 0 .../java/com/baeldung/loops/LoopsInJava.java | 0 .../java/com/baeldung/staticdemo/Car.java | 0 .../com/baeldung/staticdemo/Singleton.java | 0 .../com/baeldung/staticdemo/StaticBlock.java | 0 .../breakcontinue/BreakContinueUnitTest.java | 0 .../comparable/ComparableUnitTest.java | 0 .../comparator/ComparatorUnitTest.java | 0 .../comparator/Java8ComparatorUnitTest.java | 0 .../DynamicProxyIntegrationTest.java | 0 .../entities/ComplexClassUnitTest.java | 2 +- .../entities/PrimitiveClassUnitTest.java | 4 +- .../entities/SquareClassUnitTest.java | 2 +- .../baeldung/generics/GenericsUnitTest.java | 0 .../application/ApplicationUnitTest.java | 0 .../hashcode/entities/UserUnitTest.java | 0 .../initializationguide/UserUnitTest.java | 0 .../java/com}/baeldung/java/diamond/Car.java | 2 +- .../java/diamond/DiamondOperatorUnitTest.java | 2 +- .../com}/baeldung/java/diamond/Diesel.java | 2 +- .../com}/baeldung/java/diamond/Engine.java | 2 +- .../com}/baeldung/java/diamond/Vehicle.java | 2 +- .../java/doublebrace/DoubleBraceUnitTest.java | 0 .../java/enumiteration/DaysOfWeekEnum.java | 0 .../enumiteration/EnumIterationExamples.java | 0 .../java/reflection/OperationsUnitTest.java | 0 .../java/reflection/ReflectionUnitTest.java | 0 .../com/baeldung/loops/WhenUsingLoops.java | 0 .../baeldung/nestedclass/AnonymousInner.java | 0 .../com/baeldung/nestedclass/Enclosing.java | 0 .../baeldung/nestedclass/NewEnclosing.java | 0 .../com/baeldung/nestedclass/NewOuter.java | 0 .../java/com/baeldung/nestedclass/Outer.java | 0 .../PrimitiveConversionsJUnitTest.java | 2 +- .../staticdemo/CarIntegrationTest.java | 0 .../staticdemo/SingletonIntegrationTest.java | 0 .../StaticBlockIntegrationTest.java | 0 .../baeldung/varargs/FormatterUnitTest.java | 0 .../equalshashcode/entities/ComplexClass.java | 63 -- .../entities/PrimitiveClass.java | 54 -- .../equalshashcode/entities/Rectangle.java | 58 -- .../equalshashcode/entities/Shape.java | 7 - .../equalshashcode/entities/Square.java | 58 -- .../operations/MoreOperationsUnitTest.java | 38 -- pom.xml | 1 + 84 files changed, 583 insertions(+), 289 deletions(-) create mode 100644 core-java-lang/.gitignore create mode 100644 core-java-lang/pom.xml rename {core-java => core-java-lang}/src/main/java/com/baeldung/breakcontinue/BreakContinue.java (99%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/chainedexception/LogWithChain.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/chainedexception/LogWithoutChain.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/chainedexception/exceptions/ManagerUpsetException.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/chainedexception/exceptions/NoLeaveGrantedException.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/chainedexception/exceptions/TeamLeadUpsetException.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/comparable/Player.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/comparable/PlayerSorter.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/comparator/Player.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/comparator/PlayerAgeComparator.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/comparator/PlayerAgeSorter.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/comparator/PlayerRankingComparator.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/comparator/PlayerRankingSorter.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/dynamicproxy/DynamicInvocationHandler.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/dynamicproxy/TimingDynamicInvocationHandler.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/equalshashcode/entities/Shape.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/equalshashcode/entities/Square.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/generics/Building.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/generics/Generics.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/generics/House.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/hashcode/entities/User.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/initializationguide/User.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/java/reflection/Animal.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/java/reflection/Bird.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/java/reflection/DynamicGreeter.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/java/reflection/Eating.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/java/reflection/Goat.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/java/reflection/Greeter.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/java/reflection/GreetingAnnotation.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/java/reflection/Greetings.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/java/reflection/Locomotion.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/java/reflection/Operations.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/java/reflection/Person.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/loops/InfiniteLoops.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/loops/LoopsInJava.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/staticdemo/Car.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/staticdemo/Singleton.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/staticdemo/StaticBlock.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/breakcontinue/BreakContinueUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/comparable/ComparableUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/comparator/ComparatorUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/comparator/Java8ComparatorUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/dynamicproxy/DynamicProxyIntegrationTest.java (100%) rename {core-java/src/test/java/org => core-java-lang/src/test/java/com}/baeldung/equalshashcode/entities/ComplexClassUnitTest.java (95%) rename {core-java/src/test/java/org => core-java-lang/src/test/java/com}/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java (85%) rename {core-java/src/test/java/org => core-java-lang/src/test/java/com}/baeldung/equalshashcode/entities/SquareClassUnitTest.java (93%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/generics/GenericsUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/initializationguide/UserUnitTest.java (100%) rename {core-java/src/test/java/org => core-java-lang/src/test/java/com}/baeldung/java/diamond/Car.java (64%) rename {core-java/src/test/java/org => core-java-lang/src/test/java/com}/baeldung/java/diamond/DiamondOperatorUnitTest.java (88%) rename {core-java/src/test/java/org => core-java-lang/src/test/java/com}/baeldung/java/diamond/Diesel.java (78%) rename {core-java/src/test/java/org => core-java-lang/src/test/java/com}/baeldung/java/diamond/Engine.java (56%) rename {core-java/src/test/java/org => core-java-lang/src/test/java/com}/baeldung/java/diamond/Vehicle.java (58%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/java/doublebrace/DoubleBraceUnitTest.java (100%) rename {core-java/src/main => core-java-lang/src/test}/java/com/baeldung/java/enumiteration/DaysOfWeekEnum.java (100%) rename {core-java/src/main => core-java-lang/src/test}/java/com/baeldung/java/enumiteration/EnumIterationExamples.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/java/reflection/OperationsUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/java/reflection/ReflectionUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/loops/WhenUsingLoops.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/nestedclass/AnonymousInner.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/nestedclass/Enclosing.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/nestedclass/NewEnclosing.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/nestedclass/NewOuter.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/nestedclass/Outer.java (100%) rename {core-java/src/test/java/com/baeldung => core-java-lang/src/test/java/com/baeldung/primitiveconversion}/PrimitiveConversionsJUnitTest.java (99%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/staticdemo/CarIntegrationTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/staticdemo/SingletonIntegrationTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/staticdemo/StaticBlockIntegrationTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/varargs/FormatterUnitTest.java (100%) delete mode 100644 core-java/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java delete mode 100644 core-java/src/main/java/org/baeldung/equalshashcode/entities/PrimitiveClass.java delete mode 100644 core-java/src/main/java/org/baeldung/equalshashcode/entities/Rectangle.java delete mode 100644 core-java/src/main/java/org/baeldung/equalshashcode/entities/Shape.java delete mode 100644 core-java/src/main/java/org/baeldung/equalshashcode/entities/Square.java delete mode 100644 core-java/src/test/java/com/baeldung/java/reflection/operations/MoreOperationsUnitTest.java diff --git a/core-java-lang/.gitignore b/core-java-lang/.gitignore new file mode 100644 index 0000000000..374c8bf907 --- /dev/null +++ b/core-java-lang/.gitignore @@ -0,0 +1,25 @@ +*.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 +backup-pom.xml +/bin/ +/temp + +#IntelliJ specific +.idea/ +*.iml \ No newline at end of file diff --git a/core-java-lang/pom.xml b/core-java-lang/pom.xml new file mode 100644 index 0000000000..b13b279a03 --- /dev/null +++ b/core-java-lang/pom.xml @@ -0,0 +1,547 @@ + + 4.0.0 + com.baeldung + core-java-lang + 0.1.0-SNAPSHOT + jar + core-java-lang + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../parent-java + + + + + commons-io + commons-io + ${commons-io.version} + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + org.bouncycastle + bcprov-jdk15on + ${bouncycastle.version} + + + org.unix4j + unix4j-command + ${unix4j.version} + + + com.googlecode.grep4j + grep4j + ${grep4j.version} + + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.google.code.gson + gson + ${gson.version} + + + + log4j + log4j + ${log4j.version} + + + org.slf4j + log4j-over-slf4j + ${org.slf4j.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + + commons-codec + commons-codec + ${commons-codec.version} + + + org.javamoney + moneta + ${javamoney.moneta.version} + + + org.owasp.esapi + esapi + ${esapi.version} + + + com.sun.messaging.mq + fscontext + ${fscontext.version} + + + com.codepoetics + protonpack + ${protonpack.version} + + + one.util + streamex + ${streamex.version} + + + io.vavr + vavr + ${vavr.version} + + + org.openjdk.jmh + jmh-core + ${jmh-core.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-generator-annprocess.version} + + + org.springframework + spring-web + ${springframework.spring-web.version} + + + com.h2database + h2 + ${h2database.version} + + + javax.mail + mail + ${javax.mail.version} + + + + org.apache.tika + tika-core + ${tika.version} + + + net.sf.jmimemagic + jmimemagic + ${jmime-magic.version} + + + + org.javassist + javassist + ${javaassist.version} + + + com.sun + tools + 1.8.0 + system + ${java.home}/../lib/tools.jar + + + + + core-java-lang + + + src/main/resources + true + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*LiveTest.java + **/*IntegrationTest.java + **/*IntTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java + + true + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-dependencies + prepare-package + + copy-dependencies + + + ${project.build.directory}/libs + + + + + + + org.apache.maven.plugins + maven-jar-plugin + ${maven-jar-plugin.version} + + + + true + libs/ + org.baeldung.executable.ExecutableMavenJar + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + package + + single + + + ${project.basedir} + + + org.baeldung.executable.ExecutableMavenJar + + + + jar-with-dependencies + + + + + + + + org.apache.maven.plugins + maven-shade-plugin + ${maven-shade-plugin.version} + + + + shade + + + true + + + org.baeldung.executable.ExecutableMavenJar + + + + + + + + + com.jolira + onejar-maven-plugin + ${onejar-maven-plugin.version} + + + + org.baeldung.executable.ExecutableMavenJar + true + ${project.build.finalName}-onejar.${project.packaging} + + + one-jar + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot-maven-plugin.version} + + + + repackage + + + spring-boot + org.baeldung.executable.ExecutableMavenJar + + + + + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + + java + com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed + + -Xmx300m + -XX:+UseParallelGC + -classpath + + com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + 1.8 + 1.8 + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*ManualTest.java + + + **/*IntegrationTest.java + **/*IntTest.java + + + + + + + json + + + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + + + run-benchmarks + + none + + exec + + + test + java + + -classpath + + org.openjdk.jmh.Main + .* + + + + + + + + + + + + buildAgentLoader + + + + org.apache.maven.plugins + maven-jar-plugin + + + package + + jar + + + agentLoader + target/classes + + + true + + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + + + + com/baeldung/instrumentation/application/AgentLoader.class + com/baeldung/instrumentation/application/Launcher.class + + + + + + + + + + buildApplication + + + + org.apache.maven.plugins + maven-jar-plugin + + + package + + jar + + + application + target/classes + + + true + + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + + + + com/baeldung/instrumentation/application/MyAtm.class + com/baeldung/instrumentation/application/MyAtmApplication.class + com/baeldung/instrumentation/application/Launcher.class + + + + + + + + + + buildAgent + + + + org.apache.maven.plugins + maven-jar-plugin + + + package + + jar + + + agent + target/classes + + + true + + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + + + + com/baeldung/instrumentation/agent/AtmTransformer.class + com/baeldung/instrumentation/agent/MyInstrumentationAgent.class + + + + + + + + + + + + + + 2.8.5 + 2.8.2 + + + 3.5 + 1.55 + 1.10 + 2.5 + 3.6.1 + 1.0.3 + 0.4 + 1.8.7 + 1.16.12 + 4.6-b01 + 1.13 + 0.6.5 + 0.9.0 + + + 3.10.0 + + + 2.21.0 + 4.3.4.RELEASE + + 1.1 + 1.4.197 + 2.1.0.1 + 1.19 + + 1.19 + 3.0.0-M1 + 1.5.0-b01 + 3.0.2 + 1.4.4 + 3.1.1 + 2.0.3.RELEASE + 1.6.0 + 61.1 + + 1.18 + 0.1.5 + + 3.21.0-GA + + + diff --git a/core-java/src/main/java/com/baeldung/breakcontinue/BreakContinue.java b/core-java-lang/src/main/java/com/baeldung/breakcontinue/BreakContinue.java similarity index 99% rename from core-java/src/main/java/com/baeldung/breakcontinue/BreakContinue.java rename to core-java-lang/src/main/java/com/baeldung/breakcontinue/BreakContinue.java index ce85b487c1..23bb531273 100644 --- a/core-java/src/main/java/com/baeldung/breakcontinue/BreakContinue.java +++ b/core-java-lang/src/main/java/com/baeldung/breakcontinue/BreakContinue.java @@ -11,6 +11,7 @@ import java.util.Map.Entry; * @author Santosh * */ + public class BreakContinue { public static int unlabeledBreak() { diff --git a/core-java/src/main/java/com/baeldung/chainedexception/LogWithChain.java b/core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithChain.java similarity index 100% rename from core-java/src/main/java/com/baeldung/chainedexception/LogWithChain.java rename to core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithChain.java diff --git a/core-java/src/main/java/com/baeldung/chainedexception/LogWithoutChain.java b/core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithoutChain.java similarity index 100% rename from core-java/src/main/java/com/baeldung/chainedexception/LogWithoutChain.java rename to core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithoutChain.java diff --git a/core-java/src/main/java/com/baeldung/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java b/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java similarity index 100% rename from core-java/src/main/java/com/baeldung/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java rename to core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java diff --git a/core-java/src/main/java/com/baeldung/chainedexception/exceptions/ManagerUpsetException.java b/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/ManagerUpsetException.java similarity index 100% rename from core-java/src/main/java/com/baeldung/chainedexception/exceptions/ManagerUpsetException.java rename to core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/ManagerUpsetException.java diff --git a/core-java/src/main/java/com/baeldung/chainedexception/exceptions/NoLeaveGrantedException.java b/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/NoLeaveGrantedException.java similarity index 100% rename from core-java/src/main/java/com/baeldung/chainedexception/exceptions/NoLeaveGrantedException.java rename to core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/NoLeaveGrantedException.java diff --git a/core-java/src/main/java/com/baeldung/chainedexception/exceptions/TeamLeadUpsetException.java b/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/TeamLeadUpsetException.java similarity index 100% rename from core-java/src/main/java/com/baeldung/chainedexception/exceptions/TeamLeadUpsetException.java rename to core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/TeamLeadUpsetException.java diff --git a/core-java/src/main/java/com/baeldung/comparable/Player.java b/core-java-lang/src/main/java/com/baeldung/comparable/Player.java similarity index 100% rename from core-java/src/main/java/com/baeldung/comparable/Player.java rename to core-java-lang/src/main/java/com/baeldung/comparable/Player.java diff --git a/core-java/src/main/java/com/baeldung/comparable/PlayerSorter.java b/core-java-lang/src/main/java/com/baeldung/comparable/PlayerSorter.java similarity index 100% rename from core-java/src/main/java/com/baeldung/comparable/PlayerSorter.java rename to core-java-lang/src/main/java/com/baeldung/comparable/PlayerSorter.java diff --git a/core-java/src/main/java/com/baeldung/comparator/Player.java b/core-java-lang/src/main/java/com/baeldung/comparator/Player.java similarity index 100% rename from core-java/src/main/java/com/baeldung/comparator/Player.java rename to core-java-lang/src/main/java/com/baeldung/comparator/Player.java diff --git a/core-java/src/main/java/com/baeldung/comparator/PlayerAgeComparator.java b/core-java-lang/src/main/java/com/baeldung/comparator/PlayerAgeComparator.java similarity index 100% rename from core-java/src/main/java/com/baeldung/comparator/PlayerAgeComparator.java rename to core-java-lang/src/main/java/com/baeldung/comparator/PlayerAgeComparator.java diff --git a/core-java/src/main/java/com/baeldung/comparator/PlayerAgeSorter.java b/core-java-lang/src/main/java/com/baeldung/comparator/PlayerAgeSorter.java similarity index 100% rename from core-java/src/main/java/com/baeldung/comparator/PlayerAgeSorter.java rename to core-java-lang/src/main/java/com/baeldung/comparator/PlayerAgeSorter.java diff --git a/core-java/src/main/java/com/baeldung/comparator/PlayerRankingComparator.java b/core-java-lang/src/main/java/com/baeldung/comparator/PlayerRankingComparator.java similarity index 100% rename from core-java/src/main/java/com/baeldung/comparator/PlayerRankingComparator.java rename to core-java-lang/src/main/java/com/baeldung/comparator/PlayerRankingComparator.java diff --git a/core-java/src/main/java/com/baeldung/comparator/PlayerRankingSorter.java b/core-java-lang/src/main/java/com/baeldung/comparator/PlayerRankingSorter.java similarity index 100% rename from core-java/src/main/java/com/baeldung/comparator/PlayerRankingSorter.java rename to core-java-lang/src/main/java/com/baeldung/comparator/PlayerRankingSorter.java diff --git a/core-java/src/main/java/com/baeldung/dynamicproxy/DynamicInvocationHandler.java b/core-java-lang/src/main/java/com/baeldung/dynamicproxy/DynamicInvocationHandler.java similarity index 100% rename from core-java/src/main/java/com/baeldung/dynamicproxy/DynamicInvocationHandler.java rename to core-java-lang/src/main/java/com/baeldung/dynamicproxy/DynamicInvocationHandler.java diff --git a/core-java/src/main/java/com/baeldung/dynamicproxy/TimingDynamicInvocationHandler.java b/core-java-lang/src/main/java/com/baeldung/dynamicproxy/TimingDynamicInvocationHandler.java similarity index 100% rename from core-java/src/main/java/com/baeldung/dynamicproxy/TimingDynamicInvocationHandler.java rename to core-java-lang/src/main/java/com/baeldung/dynamicproxy/TimingDynamicInvocationHandler.java diff --git a/core-java/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java b/core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java similarity index 100% rename from core-java/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java rename to core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java diff --git a/core-java/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java b/core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java similarity index 100% rename from core-java/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java rename to core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java diff --git a/core-java/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java b/core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java similarity index 100% rename from core-java/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java rename to core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java diff --git a/core-java/src/main/java/com/baeldung/equalshashcode/entities/Shape.java b/core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/Shape.java similarity index 100% rename from core-java/src/main/java/com/baeldung/equalshashcode/entities/Shape.java rename to core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/Shape.java diff --git a/core-java/src/main/java/com/baeldung/equalshashcode/entities/Square.java b/core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/Square.java similarity index 100% rename from core-java/src/main/java/com/baeldung/equalshashcode/entities/Square.java rename to core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/Square.java diff --git a/core-java/src/main/java/com/baeldung/generics/Building.java b/core-java-lang/src/main/java/com/baeldung/generics/Building.java similarity index 100% rename from core-java/src/main/java/com/baeldung/generics/Building.java rename to core-java-lang/src/main/java/com/baeldung/generics/Building.java diff --git a/core-java/src/main/java/com/baeldung/generics/Generics.java b/core-java-lang/src/main/java/com/baeldung/generics/Generics.java similarity index 100% rename from core-java/src/main/java/com/baeldung/generics/Generics.java rename to core-java-lang/src/main/java/com/baeldung/generics/Generics.java diff --git a/core-java/src/main/java/com/baeldung/generics/House.java b/core-java-lang/src/main/java/com/baeldung/generics/House.java similarity index 100% rename from core-java/src/main/java/com/baeldung/generics/House.java rename to core-java-lang/src/main/java/com/baeldung/generics/House.java diff --git a/core-java/src/main/java/com/baeldung/hashcode/entities/User.java b/core-java-lang/src/main/java/com/baeldung/hashcode/entities/User.java similarity index 100% rename from core-java/src/main/java/com/baeldung/hashcode/entities/User.java rename to core-java-lang/src/main/java/com/baeldung/hashcode/entities/User.java diff --git a/core-java/src/main/java/com/baeldung/initializationguide/User.java b/core-java-lang/src/main/java/com/baeldung/initializationguide/User.java similarity index 100% rename from core-java/src/main/java/com/baeldung/initializationguide/User.java rename to core-java-lang/src/main/java/com/baeldung/initializationguide/User.java diff --git a/core-java/src/main/java/com/baeldung/java/reflection/Animal.java b/core-java-lang/src/main/java/com/baeldung/java/reflection/Animal.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/reflection/Animal.java rename to core-java-lang/src/main/java/com/baeldung/java/reflection/Animal.java diff --git a/core-java/src/main/java/com/baeldung/java/reflection/Bird.java b/core-java-lang/src/main/java/com/baeldung/java/reflection/Bird.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/reflection/Bird.java rename to core-java-lang/src/main/java/com/baeldung/java/reflection/Bird.java diff --git a/core-java/src/main/java/com/baeldung/java/reflection/DynamicGreeter.java b/core-java-lang/src/main/java/com/baeldung/java/reflection/DynamicGreeter.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/reflection/DynamicGreeter.java rename to core-java-lang/src/main/java/com/baeldung/java/reflection/DynamicGreeter.java diff --git a/core-java/src/main/java/com/baeldung/java/reflection/Eating.java b/core-java-lang/src/main/java/com/baeldung/java/reflection/Eating.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/reflection/Eating.java rename to core-java-lang/src/main/java/com/baeldung/java/reflection/Eating.java diff --git a/core-java/src/main/java/com/baeldung/java/reflection/Goat.java b/core-java-lang/src/main/java/com/baeldung/java/reflection/Goat.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/reflection/Goat.java rename to core-java-lang/src/main/java/com/baeldung/java/reflection/Goat.java diff --git a/core-java/src/main/java/com/baeldung/java/reflection/Greeter.java b/core-java-lang/src/main/java/com/baeldung/java/reflection/Greeter.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/reflection/Greeter.java rename to core-java-lang/src/main/java/com/baeldung/java/reflection/Greeter.java diff --git a/core-java/src/main/java/com/baeldung/java/reflection/GreetingAnnotation.java b/core-java-lang/src/main/java/com/baeldung/java/reflection/GreetingAnnotation.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/reflection/GreetingAnnotation.java rename to core-java-lang/src/main/java/com/baeldung/java/reflection/GreetingAnnotation.java diff --git a/core-java/src/main/java/com/baeldung/java/reflection/Greetings.java b/core-java-lang/src/main/java/com/baeldung/java/reflection/Greetings.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/reflection/Greetings.java rename to core-java-lang/src/main/java/com/baeldung/java/reflection/Greetings.java diff --git a/core-java/src/main/java/com/baeldung/java/reflection/Locomotion.java b/core-java-lang/src/main/java/com/baeldung/java/reflection/Locomotion.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/reflection/Locomotion.java rename to core-java-lang/src/main/java/com/baeldung/java/reflection/Locomotion.java diff --git a/core-java/src/main/java/com/baeldung/java/reflection/Operations.java b/core-java-lang/src/main/java/com/baeldung/java/reflection/Operations.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/reflection/Operations.java rename to core-java-lang/src/main/java/com/baeldung/java/reflection/Operations.java diff --git a/core-java/src/main/java/com/baeldung/java/reflection/Person.java b/core-java-lang/src/main/java/com/baeldung/java/reflection/Person.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/reflection/Person.java rename to core-java-lang/src/main/java/com/baeldung/java/reflection/Person.java diff --git a/core-java/src/main/java/com/baeldung/loops/InfiniteLoops.java b/core-java-lang/src/main/java/com/baeldung/loops/InfiniteLoops.java similarity index 100% rename from core-java/src/main/java/com/baeldung/loops/InfiniteLoops.java rename to core-java-lang/src/main/java/com/baeldung/loops/InfiniteLoops.java diff --git a/core-java/src/main/java/com/baeldung/loops/LoopsInJava.java b/core-java-lang/src/main/java/com/baeldung/loops/LoopsInJava.java similarity index 100% rename from core-java/src/main/java/com/baeldung/loops/LoopsInJava.java rename to core-java-lang/src/main/java/com/baeldung/loops/LoopsInJava.java diff --git a/core-java/src/main/java/com/baeldung/staticdemo/Car.java b/core-java-lang/src/main/java/com/baeldung/staticdemo/Car.java similarity index 100% rename from core-java/src/main/java/com/baeldung/staticdemo/Car.java rename to core-java-lang/src/main/java/com/baeldung/staticdemo/Car.java diff --git a/core-java/src/main/java/com/baeldung/staticdemo/Singleton.java b/core-java-lang/src/main/java/com/baeldung/staticdemo/Singleton.java similarity index 100% rename from core-java/src/main/java/com/baeldung/staticdemo/Singleton.java rename to core-java-lang/src/main/java/com/baeldung/staticdemo/Singleton.java diff --git a/core-java/src/main/java/com/baeldung/staticdemo/StaticBlock.java b/core-java-lang/src/main/java/com/baeldung/staticdemo/StaticBlock.java similarity index 100% rename from core-java/src/main/java/com/baeldung/staticdemo/StaticBlock.java rename to core-java-lang/src/main/java/com/baeldung/staticdemo/StaticBlock.java diff --git a/core-java/src/test/java/com/baeldung/breakcontinue/BreakContinueUnitTest.java b/core-java-lang/src/test/java/com/baeldung/breakcontinue/BreakContinueUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/breakcontinue/BreakContinueUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/breakcontinue/BreakContinueUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/comparable/ComparableUnitTest.java b/core-java-lang/src/test/java/com/baeldung/comparable/ComparableUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/comparable/ComparableUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/comparable/ComparableUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/comparator/ComparatorUnitTest.java b/core-java-lang/src/test/java/com/baeldung/comparator/ComparatorUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/comparator/ComparatorUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/comparator/ComparatorUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/comparator/Java8ComparatorUnitTest.java b/core-java-lang/src/test/java/com/baeldung/comparator/Java8ComparatorUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/comparator/Java8ComparatorUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/comparator/Java8ComparatorUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/dynamicproxy/DynamicProxyIntegrationTest.java b/core-java-lang/src/test/java/com/baeldung/dynamicproxy/DynamicProxyIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/dynamicproxy/DynamicProxyIntegrationTest.java rename to core-java-lang/src/test/java/com/baeldung/dynamicproxy/DynamicProxyIntegrationTest.java diff --git a/core-java/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassUnitTest.java b/core-java-lang/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java similarity index 95% rename from core-java/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java index 680a6d57b5..0cb4ace0ab 100644 --- a/core-java/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassUnitTest.java +++ b/core-java-lang/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.equalshashcode.entities; +package com.baeldung.equalshashcode.entities; import java.util.ArrayList; import java.util.HashSet; diff --git a/core-java/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java b/core-java-lang/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java similarity index 85% rename from core-java/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java index f4e9f2b99f..457d7a2b5e 100644 --- a/core-java/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java +++ b/core-java-lang/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java @@ -1,10 +1,8 @@ -package org.baeldung.equalshashcode.entities; +package com.baeldung.equalshashcode.entities; import org.junit.Assert; import org.junit.Test; -import com.baeldung.equalshashcode.entities.PrimitiveClass; - public class PrimitiveClassUnitTest { @Test diff --git a/core-java/src/test/java/org/baeldung/equalshashcode/entities/SquareClassUnitTest.java b/core-java-lang/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java similarity index 93% rename from core-java/src/test/java/org/baeldung/equalshashcode/entities/SquareClassUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java index 5c860bd62d..a25e8bd486 100644 --- a/core-java/src/test/java/org/baeldung/equalshashcode/entities/SquareClassUnitTest.java +++ b/core-java-lang/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.equalshashcode.entities; +package com.baeldung.equalshashcode.entities; import java.awt.Color; diff --git a/core-java/src/test/java/com/baeldung/generics/GenericsUnitTest.java b/core-java-lang/src/test/java/com/baeldung/generics/GenericsUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/generics/GenericsUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/generics/GenericsUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java b/core-java-lang/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java b/core-java-lang/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/initializationguide/UserUnitTest.java b/core-java-lang/src/test/java/com/baeldung/initializationguide/UserUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/initializationguide/UserUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/initializationguide/UserUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/diamond/Car.java b/core-java-lang/src/test/java/com/baeldung/java/diamond/Car.java similarity index 64% rename from core-java/src/test/java/org/baeldung/java/diamond/Car.java rename to core-java-lang/src/test/java/com/baeldung/java/diamond/Car.java index 9f923e0f3b..a680c4e670 100644 --- a/core-java/src/test/java/org/baeldung/java/diamond/Car.java +++ b/core-java-lang/src/test/java/com/baeldung/java/diamond/Car.java @@ -1,4 +1,4 @@ -package org.baeldung.java.diamond; +package com.baeldung.java.diamond; public class Car implements Vehicle { diff --git a/core-java/src/test/java/org/baeldung/java/diamond/DiamondOperatorUnitTest.java b/core-java-lang/src/test/java/com/baeldung/java/diamond/DiamondOperatorUnitTest.java similarity index 88% rename from core-java/src/test/java/org/baeldung/java/diamond/DiamondOperatorUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/java/diamond/DiamondOperatorUnitTest.java index f6c7f7162f..ee5f639926 100644 --- a/core-java/src/test/java/org/baeldung/java/diamond/DiamondOperatorUnitTest.java +++ b/core-java-lang/src/test/java/com/baeldung/java/diamond/DiamondOperatorUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.java.diamond; +package com.baeldung.java.diamond; import static org.junit.Assert.assertNotNull; diff --git a/core-java/src/test/java/org/baeldung/java/diamond/Diesel.java b/core-java-lang/src/test/java/com/baeldung/java/diamond/Diesel.java similarity index 78% rename from core-java/src/test/java/org/baeldung/java/diamond/Diesel.java rename to core-java-lang/src/test/java/com/baeldung/java/diamond/Diesel.java index dc4256cdae..90eb7d9340 100644 --- a/core-java/src/test/java/org/baeldung/java/diamond/Diesel.java +++ b/core-java-lang/src/test/java/com/baeldung/java/diamond/Diesel.java @@ -1,4 +1,4 @@ -package org.baeldung.java.diamond; +package com.baeldung.java.diamond; public class Diesel implements Engine { diff --git a/core-java/src/test/java/org/baeldung/java/diamond/Engine.java b/core-java-lang/src/test/java/com/baeldung/java/diamond/Engine.java similarity index 56% rename from core-java/src/test/java/org/baeldung/java/diamond/Engine.java rename to core-java-lang/src/test/java/com/baeldung/java/diamond/Engine.java index c18a8f64b5..746baf3254 100644 --- a/core-java/src/test/java/org/baeldung/java/diamond/Engine.java +++ b/core-java-lang/src/test/java/com/baeldung/java/diamond/Engine.java @@ -1,4 +1,4 @@ -package org.baeldung.java.diamond; +package com.baeldung.java.diamond; public interface Engine { diff --git a/core-java/src/test/java/org/baeldung/java/diamond/Vehicle.java b/core-java-lang/src/test/java/com/baeldung/java/diamond/Vehicle.java similarity index 58% rename from core-java/src/test/java/org/baeldung/java/diamond/Vehicle.java rename to core-java-lang/src/test/java/com/baeldung/java/diamond/Vehicle.java index f61cf59620..8395cdd970 100644 --- a/core-java/src/test/java/org/baeldung/java/diamond/Vehicle.java +++ b/core-java-lang/src/test/java/com/baeldung/java/diamond/Vehicle.java @@ -1,4 +1,4 @@ -package org.baeldung.java.diamond; +package com.baeldung.java.diamond; public interface Vehicle { diff --git a/core-java/src/test/java/com/baeldung/java/doublebrace/DoubleBraceUnitTest.java b/core-java-lang/src/test/java/com/baeldung/java/doublebrace/DoubleBraceUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/doublebrace/DoubleBraceUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/java/doublebrace/DoubleBraceUnitTest.java diff --git a/core-java/src/main/java/com/baeldung/java/enumiteration/DaysOfWeekEnum.java b/core-java-lang/src/test/java/com/baeldung/java/enumiteration/DaysOfWeekEnum.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/enumiteration/DaysOfWeekEnum.java rename to core-java-lang/src/test/java/com/baeldung/java/enumiteration/DaysOfWeekEnum.java diff --git a/core-java/src/main/java/com/baeldung/java/enumiteration/EnumIterationExamples.java b/core-java-lang/src/test/java/com/baeldung/java/enumiteration/EnumIterationExamples.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/enumiteration/EnumIterationExamples.java rename to core-java-lang/src/test/java/com/baeldung/java/enumiteration/EnumIterationExamples.java diff --git a/core-java/src/test/java/com/baeldung/java/reflection/OperationsUnitTest.java b/core-java-lang/src/test/java/com/baeldung/java/reflection/OperationsUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/reflection/OperationsUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/java/reflection/OperationsUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java/reflection/ReflectionUnitTest.java b/core-java-lang/src/test/java/com/baeldung/java/reflection/ReflectionUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/reflection/ReflectionUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/java/reflection/ReflectionUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/loops/WhenUsingLoops.java b/core-java-lang/src/test/java/com/baeldung/loops/WhenUsingLoops.java similarity index 100% rename from core-java/src/test/java/com/baeldung/loops/WhenUsingLoops.java rename to core-java-lang/src/test/java/com/baeldung/loops/WhenUsingLoops.java diff --git a/core-java/src/test/java/com/baeldung/nestedclass/AnonymousInner.java b/core-java-lang/src/test/java/com/baeldung/nestedclass/AnonymousInner.java similarity index 100% rename from core-java/src/test/java/com/baeldung/nestedclass/AnonymousInner.java rename to core-java-lang/src/test/java/com/baeldung/nestedclass/AnonymousInner.java diff --git a/core-java/src/test/java/com/baeldung/nestedclass/Enclosing.java b/core-java-lang/src/test/java/com/baeldung/nestedclass/Enclosing.java similarity index 100% rename from core-java/src/test/java/com/baeldung/nestedclass/Enclosing.java rename to core-java-lang/src/test/java/com/baeldung/nestedclass/Enclosing.java diff --git a/core-java/src/test/java/com/baeldung/nestedclass/NewEnclosing.java b/core-java-lang/src/test/java/com/baeldung/nestedclass/NewEnclosing.java similarity index 100% rename from core-java/src/test/java/com/baeldung/nestedclass/NewEnclosing.java rename to core-java-lang/src/test/java/com/baeldung/nestedclass/NewEnclosing.java diff --git a/core-java/src/test/java/com/baeldung/nestedclass/NewOuter.java b/core-java-lang/src/test/java/com/baeldung/nestedclass/NewOuter.java similarity index 100% rename from core-java/src/test/java/com/baeldung/nestedclass/NewOuter.java rename to core-java-lang/src/test/java/com/baeldung/nestedclass/NewOuter.java diff --git a/core-java/src/test/java/com/baeldung/nestedclass/Outer.java b/core-java-lang/src/test/java/com/baeldung/nestedclass/Outer.java similarity index 100% rename from core-java/src/test/java/com/baeldung/nestedclass/Outer.java rename to core-java-lang/src/test/java/com/baeldung/nestedclass/Outer.java diff --git a/core-java/src/test/java/com/baeldung/PrimitiveConversionsJUnitTest.java b/core-java-lang/src/test/java/com/baeldung/primitiveconversion/PrimitiveConversionsJUnitTest.java similarity index 99% rename from core-java/src/test/java/com/baeldung/PrimitiveConversionsJUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/primitiveconversion/PrimitiveConversionsJUnitTest.java index 69a6c18dfd..cb83f4a5ed 100644 --- a/core-java/src/test/java/com/baeldung/PrimitiveConversionsJUnitTest.java +++ b/core-java-lang/src/test/java/com/baeldung/primitiveconversion/PrimitiveConversionsJUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.primitiveconversion; import org.junit.Test; import org.slf4j.Logger; diff --git a/core-java/src/test/java/com/baeldung/staticdemo/CarIntegrationTest.java b/core-java-lang/src/test/java/com/baeldung/staticdemo/CarIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/staticdemo/CarIntegrationTest.java rename to core-java-lang/src/test/java/com/baeldung/staticdemo/CarIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/staticdemo/SingletonIntegrationTest.java b/core-java-lang/src/test/java/com/baeldung/staticdemo/SingletonIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/staticdemo/SingletonIntegrationTest.java rename to core-java-lang/src/test/java/com/baeldung/staticdemo/SingletonIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/staticdemo/StaticBlockIntegrationTest.java b/core-java-lang/src/test/java/com/baeldung/staticdemo/StaticBlockIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/staticdemo/StaticBlockIntegrationTest.java rename to core-java-lang/src/test/java/com/baeldung/staticdemo/StaticBlockIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/varargs/FormatterUnitTest.java b/core-java-lang/src/test/java/com/baeldung/varargs/FormatterUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/varargs/FormatterUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/varargs/FormatterUnitTest.java diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java b/core-java/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java deleted file mode 100644 index 6329f41252..0000000000 --- a/core-java/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java +++ /dev/null @@ -1,63 +0,0 @@ -package org.baeldung.equalshashcode.entities; - -import java.util.List; -import java.util.Set; - -public class ComplexClass { - - private List genericList; - private Set integerSet; - - public ComplexClass(List genericArrayList, Set integerHashSet) { - super(); - this.genericList = genericArrayList; - this.integerSet = integerHashSet; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((genericList == null) ? 0 : genericList.hashCode()); - result = prime * result + ((integerSet == null) ? 0 : integerSet.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (!(obj instanceof ComplexClass)) - return false; - ComplexClass other = (ComplexClass) obj; - if (genericList == null) { - if (other.genericList != null) - return false; - } else if (!genericList.equals(other.genericList)) - return false; - if (integerSet == null) { - if (other.integerSet != null) - return false; - } else if (!integerSet.equals(other.integerSet)) - return false; - return true; - } - - protected List getGenericList() { - return genericList; - } - - protected void setGenericArrayList(List genericList) { - this.genericList = genericList; - } - - protected Set getIntegerSet() { - return integerSet; - } - - protected void setIntegerSet(Set integerSet) { - this.integerSet = integerSet; - } -} diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/PrimitiveClass.java b/core-java/src/main/java/org/baeldung/equalshashcode/entities/PrimitiveClass.java deleted file mode 100644 index ebe005688c..0000000000 --- a/core-java/src/main/java/org/baeldung/equalshashcode/entities/PrimitiveClass.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.baeldung.equalshashcode.entities; - -public class PrimitiveClass { - - private boolean primitiveBoolean; - private int primitiveInt; - - public PrimitiveClass(boolean primitiveBoolean, int primitiveInt) { - super(); - this.primitiveBoolean = primitiveBoolean; - this.primitiveInt = primitiveInt; - } - - protected boolean isPrimitiveBoolean() { - return primitiveBoolean; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + (primitiveBoolean ? 1231 : 1237); - result = prime * result + primitiveInt; - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - PrimitiveClass other = (PrimitiveClass) obj; - if (primitiveBoolean != other.primitiveBoolean) - return false; - if (primitiveInt != other.primitiveInt) - return false; - return true; - } - - protected void setPrimitiveBoolean(boolean primitiveBoolean) { - this.primitiveBoolean = primitiveBoolean; - } - - protected int getPrimitiveInt() { - return primitiveInt; - } - - protected void setPrimitiveInt(int primitiveInt) { - this.primitiveInt = primitiveInt; - } -} diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/Rectangle.java b/core-java/src/main/java/org/baeldung/equalshashcode/entities/Rectangle.java deleted file mode 100644 index 5e38eb6088..0000000000 --- a/core-java/src/main/java/org/baeldung/equalshashcode/entities/Rectangle.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.baeldung.equalshashcode.entities; - -public class Rectangle extends Shape { - private double width; - private double length; - - Rectangle(double width, double length) { - this.width = width; - this.length = length; - } - - @Override - public double area() { - return width * length; - } - - @Override - public double perimeter() { - return 2 * (width + length); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - long temp; - temp = Double.doubleToLongBits(length); - result = prime * result + (int) (temp ^ (temp >>> 32)); - temp = Double.doubleToLongBits(width); - result = prime * result + (int) (temp ^ (temp >>> 32)); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Rectangle other = (Rectangle) obj; - if (Double.doubleToLongBits(length) != Double.doubleToLongBits(other.length)) - return false; - if (Double.doubleToLongBits(width) != Double.doubleToLongBits(other.width)) - return false; - return true; - } - - protected double getWidth() { - return width; - } - - protected double getLength() { - return length; - } - -} \ No newline at end of file diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/Shape.java b/core-java/src/main/java/org/baeldung/equalshashcode/entities/Shape.java deleted file mode 100644 index 3bfc81da8f..0000000000 --- a/core-java/src/main/java/org/baeldung/equalshashcode/entities/Shape.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.baeldung.equalshashcode.entities; - -public abstract class Shape { - public abstract double area(); - - public abstract double perimeter(); -} diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/Square.java b/core-java/src/main/java/org/baeldung/equalshashcode/entities/Square.java deleted file mode 100644 index f11e34f0ba..0000000000 --- a/core-java/src/main/java/org/baeldung/equalshashcode/entities/Square.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.baeldung.equalshashcode.entities; - -import java.awt.Color; - -public class Square extends Rectangle { - - Color color; - - public Square(double width, Color color) { - super(width, width); - this.color = color; - } - - /* (non-Javadoc) - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + ((color == null) ? 0 : color.hashCode()); - return result; - } - - /* (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof Square)) { - return false; - } - Square other = (Square) obj; - if (color == null) { - if (other.color != null) { - return false; - } - } else if (!color.equals(other.color)) { - return false; - } - return true; - } - - protected Color getColor() { - return color; - } - - protected void setColor(Color color) { - this.color = color; - } - -} diff --git a/core-java/src/test/java/com/baeldung/java/reflection/operations/MoreOperationsUnitTest.java b/core-java/src/test/java/com/baeldung/java/reflection/operations/MoreOperationsUnitTest.java deleted file mode 100644 index 2fe0a54664..0000000000 --- a/core-java/src/test/java/com/baeldung/java/reflection/operations/MoreOperationsUnitTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.baeldung.java.reflection.operations; - -import com.baeldung.java.reflection.*; -import static org.hamcrest.CoreMatchers.equalTo; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import org.junit.Test; -import static org.junit.Assert.assertThat; - -public class MoreOperationsUnitTest { - - public MoreOperationsUnitTest() { - } - - @Test(expected = IllegalAccessException.class) - public void givenObject_whenInvokeProtectedMethod_thenFail() throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { - Method maxProtectedMethod = Operations.class.getDeclaredMethod("protectedMax", int.class, int.class); - - Operations operationsInstance = new Operations(); - Integer result = (Integer) maxProtectedMethod.invoke(operationsInstance, 2, 4); - - assertThat(result, equalTo(4)); - } - - @Test - public void givenObject_whenInvokeProtectedMethod_thenCorrect() throws Exception { - Method maxProtectedMethod = Operations.class.getDeclaredMethod("protectedMax", int.class, int.class); - maxProtectedMethod.setAccessible(true); - - Operations operationsInstance = new Operations(); - Integer result = (Integer) maxProtectedMethod.invoke(operationsInstance, 2, 4); - - assertThat(result, equalTo(4)); - } - -} diff --git a/pom.xml b/pom.xml index aa79dae1d5..f974e4c743 100644 --- a/pom.xml +++ b/pom.xml @@ -356,6 +356,7 @@ java-strings core-java + core-java-lang core-java-collections java-collections-conversions java-collections-maps From 64a22eec3155a000e15fad0065440e2b9851ec41 Mon Sep 17 00:00:00 2001 From: geroza Date: Sat, 10 Nov 2018 00:37:39 -0200 Subject: [PATCH 040/119] 2 - Second commit for articles: * to core-java-lang: * https://www.baeldung.com/java-inner-interfaces * https://www.baeldung.com/java-polymorphism * https://www.baeldung.com/java-recursion * https://www.baeldung.com/java-finalize * https://www.baeldung.com/java-method-overload-override * https://www.baeldung.com/java-deep-copy * https://www.baeldung.com/java-inheritance * https://www.baeldung.com/java-type-casting * https://www.baeldung.com/java-final * https://www.baeldung.com/a-guide-to-java-enums --- .../src/main/java/com/baeldung/casting/Animal.java | 0 .../src/main/java/com/baeldung/casting/AnimalFeeder.java | 0 .../src/main/java/com/baeldung/casting/AnimalFeederGeneric.java | 0 .../src/main/java/com/baeldung/casting/Cat.java | 0 .../src/main/java/com/baeldung/casting/Dog.java | 0 .../src/main/java/com/baeldung/casting/Mew.java | 0 .../src/main/java/com/baeldung/deepcopy/Address.java | 0 .../src/main/java/com/baeldung/deepcopy/User.java | 0 .../src/main/java/com/baeldung/enums/Pizza.java | 0 .../src/main/java/com/baeldung/enums/PizzaDeliveryStrategy.java | 0 .../java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java | 0 .../src/main/java/com/baeldung/enums/README.md | 0 .../src/main/java/com/baeldung/finalize/CloseableResource.java | 0 .../src/main/java/com/baeldung/finalize/Finalizable.java | 0 .../src/main/java/com/baeldung/finalkeyword/BlackCat.java | 0 .../src/main/java/com/baeldung/finalkeyword/BlackDog.java | 0 .../src/main/java/com/baeldung/finalkeyword/Cat.java | 0 .../src/main/java/com/baeldung/finalkeyword/Dog.java | 0 .../src/main/java/com/baeldung/inheritance/ArmoredCar.java | 0 .../src/main/java/com/baeldung/inheritance/BMW.java | 0 .../src/main/java/com/baeldung/inheritance/Car.java | 0 .../src/main/java/com/baeldung/inheritance/Employee.java | 0 .../src/main/java/com/baeldung/inheritance/Floatable.java | 0 .../src/main/java/com/baeldung/inheritance/Flyable.java | 0 .../src/main/java/com/baeldung/inheritance/SpaceCar.java | 0 .../src/main/java/com/baeldung/inheritance/SpaceTraveller.java | 0 .../java/com/baeldung/interfaces/CommaSeparatedCustomers.java | 0 .../src/main/java/com/baeldung/interfaces/Customer.java | 0 .../methodoverloadingoverriding/application/Application.java | 0 .../java/com/baeldung/methodoverloadingoverriding/model/Car.java | 0 .../com/baeldung/methodoverloadingoverriding/model/Vehicle.java | 0 .../com/baeldung/methodoverloadingoverriding/util/Multiplier.java | 0 .../src/main/java/com/baeldung/polymorphism/FileManager.java | 0 .../src/main/java/com/baeldung/polymorphism/GenericFile.java | 0 .../src/main/java/com/baeldung/polymorphism/ImageFile.java | 0 .../src/main/java/com/baeldung/polymorphism/TextFile.java | 0 .../src/main/java/com/baeldung/recursion/BinaryNode.java | 0 .../src/main/java/com/baeldung/recursion/RecursionExample.java | 0 .../src/test/java/com/baeldung/casting/CastingUnitTest.java | 0 .../src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java | 0 .../src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java | 0 .../src/test/java/com/baeldung/enums/PizzaUnitTest.java | 0 .../src/test/java/com/baeldung/finalize/FinalizeUnitTest.java | 0 .../src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java | 0 .../src/test/java/com/baeldung/inheritance/AppUnitTest.java | 0 .../test/java/com/baeldung/interfaces/InnerInterfaceUnitTest.java | 0 .../test/MethodOverloadingUnitTest.java | 0 .../test/MethodOverridingUnitTest.java | 0 .../test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java | 0 .../java/com/baeldung/recursion/RecursionExampleUnitTest.java | 0 50 files changed, 0 insertions(+), 0 deletions(-) rename {core-java => core-java-lang}/src/main/java/com/baeldung/casting/Animal.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/casting/AnimalFeeder.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/casting/AnimalFeederGeneric.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/casting/Cat.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/casting/Dog.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/casting/Mew.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/deepcopy/Address.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/deepcopy/User.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/enums/Pizza.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/enums/PizzaDeliveryStrategy.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/enums/README.md (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/finalize/CloseableResource.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/finalize/Finalizable.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/finalkeyword/BlackCat.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/finalkeyword/BlackDog.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/finalkeyword/Cat.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/finalkeyword/Dog.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritance/ArmoredCar.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritance/BMW.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritance/Car.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritance/Employee.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritance/Floatable.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritance/Flyable.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritance/SpaceCar.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritance/SpaceTraveller.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/interfaces/CommaSeparatedCustomers.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/interfaces/Customer.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/methodoverloadingoverriding/application/Application.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/methodoverloadingoverriding/model/Car.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/methodoverloadingoverriding/model/Vehicle.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/methodoverloadingoverriding/util/Multiplier.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/polymorphism/FileManager.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/polymorphism/GenericFile.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/polymorphism/ImageFile.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/polymorphism/TextFile.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/recursion/BinaryNode.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/recursion/RecursionExample.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/casting/CastingUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/enums/PizzaUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/finalize/FinalizeUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/inheritance/AppUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/interfaces/InnerInterfaceUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/recursion/RecursionExampleUnitTest.java (100%) diff --git a/core-java/src/main/java/com/baeldung/casting/Animal.java b/core-java-lang/src/main/java/com/baeldung/casting/Animal.java similarity index 100% rename from core-java/src/main/java/com/baeldung/casting/Animal.java rename to core-java-lang/src/main/java/com/baeldung/casting/Animal.java diff --git a/core-java/src/main/java/com/baeldung/casting/AnimalFeeder.java b/core-java-lang/src/main/java/com/baeldung/casting/AnimalFeeder.java similarity index 100% rename from core-java/src/main/java/com/baeldung/casting/AnimalFeeder.java rename to core-java-lang/src/main/java/com/baeldung/casting/AnimalFeeder.java diff --git a/core-java/src/main/java/com/baeldung/casting/AnimalFeederGeneric.java b/core-java-lang/src/main/java/com/baeldung/casting/AnimalFeederGeneric.java similarity index 100% rename from core-java/src/main/java/com/baeldung/casting/AnimalFeederGeneric.java rename to core-java-lang/src/main/java/com/baeldung/casting/AnimalFeederGeneric.java diff --git a/core-java/src/main/java/com/baeldung/casting/Cat.java b/core-java-lang/src/main/java/com/baeldung/casting/Cat.java similarity index 100% rename from core-java/src/main/java/com/baeldung/casting/Cat.java rename to core-java-lang/src/main/java/com/baeldung/casting/Cat.java diff --git a/core-java/src/main/java/com/baeldung/casting/Dog.java b/core-java-lang/src/main/java/com/baeldung/casting/Dog.java similarity index 100% rename from core-java/src/main/java/com/baeldung/casting/Dog.java rename to core-java-lang/src/main/java/com/baeldung/casting/Dog.java diff --git a/core-java/src/main/java/com/baeldung/casting/Mew.java b/core-java-lang/src/main/java/com/baeldung/casting/Mew.java similarity index 100% rename from core-java/src/main/java/com/baeldung/casting/Mew.java rename to core-java-lang/src/main/java/com/baeldung/casting/Mew.java diff --git a/core-java/src/main/java/com/baeldung/deepcopy/Address.java b/core-java-lang/src/main/java/com/baeldung/deepcopy/Address.java similarity index 100% rename from core-java/src/main/java/com/baeldung/deepcopy/Address.java rename to core-java-lang/src/main/java/com/baeldung/deepcopy/Address.java diff --git a/core-java/src/main/java/com/baeldung/deepcopy/User.java b/core-java-lang/src/main/java/com/baeldung/deepcopy/User.java similarity index 100% rename from core-java/src/main/java/com/baeldung/deepcopy/User.java rename to core-java-lang/src/main/java/com/baeldung/deepcopy/User.java diff --git a/core-java/src/main/java/com/baeldung/enums/Pizza.java b/core-java-lang/src/main/java/com/baeldung/enums/Pizza.java similarity index 100% rename from core-java/src/main/java/com/baeldung/enums/Pizza.java rename to core-java-lang/src/main/java/com/baeldung/enums/Pizza.java diff --git a/core-java/src/main/java/com/baeldung/enums/PizzaDeliveryStrategy.java b/core-java-lang/src/main/java/com/baeldung/enums/PizzaDeliveryStrategy.java similarity index 100% rename from core-java/src/main/java/com/baeldung/enums/PizzaDeliveryStrategy.java rename to core-java-lang/src/main/java/com/baeldung/enums/PizzaDeliveryStrategy.java diff --git a/core-java/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java b/core-java-lang/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java similarity index 100% rename from core-java/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java rename to core-java-lang/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java diff --git a/core-java/src/main/java/com/baeldung/enums/README.md b/core-java-lang/src/main/java/com/baeldung/enums/README.md similarity index 100% rename from core-java/src/main/java/com/baeldung/enums/README.md rename to core-java-lang/src/main/java/com/baeldung/enums/README.md diff --git a/core-java/src/main/java/com/baeldung/finalize/CloseableResource.java b/core-java-lang/src/main/java/com/baeldung/finalize/CloseableResource.java similarity index 100% rename from core-java/src/main/java/com/baeldung/finalize/CloseableResource.java rename to core-java-lang/src/main/java/com/baeldung/finalize/CloseableResource.java diff --git a/core-java/src/main/java/com/baeldung/finalize/Finalizable.java b/core-java-lang/src/main/java/com/baeldung/finalize/Finalizable.java similarity index 100% rename from core-java/src/main/java/com/baeldung/finalize/Finalizable.java rename to core-java-lang/src/main/java/com/baeldung/finalize/Finalizable.java diff --git a/core-java/src/main/java/com/baeldung/finalkeyword/BlackCat.java b/core-java-lang/src/main/java/com/baeldung/finalkeyword/BlackCat.java similarity index 100% rename from core-java/src/main/java/com/baeldung/finalkeyword/BlackCat.java rename to core-java-lang/src/main/java/com/baeldung/finalkeyword/BlackCat.java diff --git a/core-java/src/main/java/com/baeldung/finalkeyword/BlackDog.java b/core-java-lang/src/main/java/com/baeldung/finalkeyword/BlackDog.java similarity index 100% rename from core-java/src/main/java/com/baeldung/finalkeyword/BlackDog.java rename to core-java-lang/src/main/java/com/baeldung/finalkeyword/BlackDog.java diff --git a/core-java/src/main/java/com/baeldung/finalkeyword/Cat.java b/core-java-lang/src/main/java/com/baeldung/finalkeyword/Cat.java similarity index 100% rename from core-java/src/main/java/com/baeldung/finalkeyword/Cat.java rename to core-java-lang/src/main/java/com/baeldung/finalkeyword/Cat.java diff --git a/core-java/src/main/java/com/baeldung/finalkeyword/Dog.java b/core-java-lang/src/main/java/com/baeldung/finalkeyword/Dog.java similarity index 100% rename from core-java/src/main/java/com/baeldung/finalkeyword/Dog.java rename to core-java-lang/src/main/java/com/baeldung/finalkeyword/Dog.java diff --git a/core-java/src/main/java/com/baeldung/inheritance/ArmoredCar.java b/core-java-lang/src/main/java/com/baeldung/inheritance/ArmoredCar.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritance/ArmoredCar.java rename to core-java-lang/src/main/java/com/baeldung/inheritance/ArmoredCar.java diff --git a/core-java/src/main/java/com/baeldung/inheritance/BMW.java b/core-java-lang/src/main/java/com/baeldung/inheritance/BMW.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritance/BMW.java rename to core-java-lang/src/main/java/com/baeldung/inheritance/BMW.java diff --git a/core-java/src/main/java/com/baeldung/inheritance/Car.java b/core-java-lang/src/main/java/com/baeldung/inheritance/Car.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritance/Car.java rename to core-java-lang/src/main/java/com/baeldung/inheritance/Car.java diff --git a/core-java/src/main/java/com/baeldung/inheritance/Employee.java b/core-java-lang/src/main/java/com/baeldung/inheritance/Employee.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritance/Employee.java rename to core-java-lang/src/main/java/com/baeldung/inheritance/Employee.java diff --git a/core-java/src/main/java/com/baeldung/inheritance/Floatable.java b/core-java-lang/src/main/java/com/baeldung/inheritance/Floatable.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritance/Floatable.java rename to core-java-lang/src/main/java/com/baeldung/inheritance/Floatable.java diff --git a/core-java/src/main/java/com/baeldung/inheritance/Flyable.java b/core-java-lang/src/main/java/com/baeldung/inheritance/Flyable.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritance/Flyable.java rename to core-java-lang/src/main/java/com/baeldung/inheritance/Flyable.java diff --git a/core-java/src/main/java/com/baeldung/inheritance/SpaceCar.java b/core-java-lang/src/main/java/com/baeldung/inheritance/SpaceCar.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritance/SpaceCar.java rename to core-java-lang/src/main/java/com/baeldung/inheritance/SpaceCar.java diff --git a/core-java/src/main/java/com/baeldung/inheritance/SpaceTraveller.java b/core-java-lang/src/main/java/com/baeldung/inheritance/SpaceTraveller.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritance/SpaceTraveller.java rename to core-java-lang/src/main/java/com/baeldung/inheritance/SpaceTraveller.java diff --git a/core-java/src/main/java/com/baeldung/interfaces/CommaSeparatedCustomers.java b/core-java-lang/src/main/java/com/baeldung/interfaces/CommaSeparatedCustomers.java similarity index 100% rename from core-java/src/main/java/com/baeldung/interfaces/CommaSeparatedCustomers.java rename to core-java-lang/src/main/java/com/baeldung/interfaces/CommaSeparatedCustomers.java diff --git a/core-java/src/main/java/com/baeldung/interfaces/Customer.java b/core-java-lang/src/main/java/com/baeldung/interfaces/Customer.java similarity index 100% rename from core-java/src/main/java/com/baeldung/interfaces/Customer.java rename to core-java-lang/src/main/java/com/baeldung/interfaces/Customer.java diff --git a/core-java/src/main/java/com/baeldung/methodoverloadingoverriding/application/Application.java b/core-java-lang/src/main/java/com/baeldung/methodoverloadingoverriding/application/Application.java similarity index 100% rename from core-java/src/main/java/com/baeldung/methodoverloadingoverriding/application/Application.java rename to core-java-lang/src/main/java/com/baeldung/methodoverloadingoverriding/application/Application.java diff --git a/core-java/src/main/java/com/baeldung/methodoverloadingoverriding/model/Car.java b/core-java-lang/src/main/java/com/baeldung/methodoverloadingoverriding/model/Car.java similarity index 100% rename from core-java/src/main/java/com/baeldung/methodoverloadingoverriding/model/Car.java rename to core-java-lang/src/main/java/com/baeldung/methodoverloadingoverriding/model/Car.java diff --git a/core-java/src/main/java/com/baeldung/methodoverloadingoverriding/model/Vehicle.java b/core-java-lang/src/main/java/com/baeldung/methodoverloadingoverriding/model/Vehicle.java similarity index 100% rename from core-java/src/main/java/com/baeldung/methodoverloadingoverriding/model/Vehicle.java rename to core-java-lang/src/main/java/com/baeldung/methodoverloadingoverriding/model/Vehicle.java diff --git a/core-java/src/main/java/com/baeldung/methodoverloadingoverriding/util/Multiplier.java b/core-java-lang/src/main/java/com/baeldung/methodoverloadingoverriding/util/Multiplier.java similarity index 100% rename from core-java/src/main/java/com/baeldung/methodoverloadingoverriding/util/Multiplier.java rename to core-java-lang/src/main/java/com/baeldung/methodoverloadingoverriding/util/Multiplier.java diff --git a/core-java/src/main/java/com/baeldung/polymorphism/FileManager.java b/core-java-lang/src/main/java/com/baeldung/polymorphism/FileManager.java similarity index 100% rename from core-java/src/main/java/com/baeldung/polymorphism/FileManager.java rename to core-java-lang/src/main/java/com/baeldung/polymorphism/FileManager.java diff --git a/core-java/src/main/java/com/baeldung/polymorphism/GenericFile.java b/core-java-lang/src/main/java/com/baeldung/polymorphism/GenericFile.java similarity index 100% rename from core-java/src/main/java/com/baeldung/polymorphism/GenericFile.java rename to core-java-lang/src/main/java/com/baeldung/polymorphism/GenericFile.java diff --git a/core-java/src/main/java/com/baeldung/polymorphism/ImageFile.java b/core-java-lang/src/main/java/com/baeldung/polymorphism/ImageFile.java similarity index 100% rename from core-java/src/main/java/com/baeldung/polymorphism/ImageFile.java rename to core-java-lang/src/main/java/com/baeldung/polymorphism/ImageFile.java diff --git a/core-java/src/main/java/com/baeldung/polymorphism/TextFile.java b/core-java-lang/src/main/java/com/baeldung/polymorphism/TextFile.java similarity index 100% rename from core-java/src/main/java/com/baeldung/polymorphism/TextFile.java rename to core-java-lang/src/main/java/com/baeldung/polymorphism/TextFile.java diff --git a/core-java/src/main/java/com/baeldung/recursion/BinaryNode.java b/core-java-lang/src/main/java/com/baeldung/recursion/BinaryNode.java similarity index 100% rename from core-java/src/main/java/com/baeldung/recursion/BinaryNode.java rename to core-java-lang/src/main/java/com/baeldung/recursion/BinaryNode.java diff --git a/core-java/src/main/java/com/baeldung/recursion/RecursionExample.java b/core-java-lang/src/main/java/com/baeldung/recursion/RecursionExample.java similarity index 100% rename from core-java/src/main/java/com/baeldung/recursion/RecursionExample.java rename to core-java-lang/src/main/java/com/baeldung/recursion/RecursionExample.java diff --git a/core-java/src/test/java/com/baeldung/casting/CastingUnitTest.java b/core-java-lang/src/test/java/com/baeldung/casting/CastingUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/casting/CastingUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/casting/CastingUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java b/core-java-lang/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java b/core-java-lang/src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/enums/PizzaUnitTest.java b/core-java-lang/src/test/java/com/baeldung/enums/PizzaUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/enums/PizzaUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/enums/PizzaUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/finalize/FinalizeUnitTest.java b/core-java-lang/src/test/java/com/baeldung/finalize/FinalizeUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/finalize/FinalizeUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/finalize/FinalizeUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java b/core-java-lang/src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/inheritance/AppUnitTest.java b/core-java-lang/src/test/java/com/baeldung/inheritance/AppUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/inheritance/AppUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/inheritance/AppUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/interfaces/InnerInterfaceUnitTest.java b/core-java-lang/src/test/java/com/baeldung/interfaces/InnerInterfaceUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/interfaces/InnerInterfaceUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/interfaces/InnerInterfaceUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java b/core-java-lang/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java b/core-java-lang/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java b/core-java-lang/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/recursion/RecursionExampleUnitTest.java b/core-java-lang/src/test/java/com/baeldung/recursion/RecursionExampleUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/recursion/RecursionExampleUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/recursion/RecursionExampleUnitTest.java From 61574b72284aa27770ffd7616df2a8c0cc9012bb Mon Sep 17 00:00:00 2001 From: geroza Date: Sat, 10 Nov 2018 01:21:37 -0200 Subject: [PATCH 041/119] 3-Third commit for articles: * to core-java-lang: * https://www.baeldung.com/java-lang-system * https://www.baeldung.com/java-type-erasure * https://www.baeldung.com/java-assert * https://www.baeldung.com/java-pass-by-value-or-pass-by-reference * https://www.baeldung.com/java-variable-method-hiding * https://www.baeldung.com/java-access-modifiers * https://www.baeldung.com/java-super * https://www.baeldung.com/java-this * https://www.baeldung.com/java-immutable-object * https://www.baeldung.com/java-classnotfoundexception-and-noclassdeffounderror * https://www.baeldung.com/infinite-loops-java (changes for this were included in commit 1, with other loop-related examples) --- .../src/main/java/com/baeldung/accessmodifiers/Public.java | 0 .../src/main/java/com/baeldung/accessmodifiers/SubClass.java | 0 .../src/main/java/com/baeldung/accessmodifiers/SuperPublic.java | 0 .../java/com/baeldung/accessmodifiers/another/AnotherPublic.java | 0 .../com/baeldung/accessmodifiers/another/AnotherSubClass.java | 0 .../com/baeldung/accessmodifiers/another/AnotherSuperPublic.java | 0 .../src/main/java/com/baeldung/assertion/Assertion.java | 0 .../src/main/java/com/baeldung/immutableobjects/Currency.java | 0 .../src/main/java/com/baeldung/immutableobjects/Money.java | 0 .../src/main/java/com/baeldung/keyword/KeywordDemo.java | 0 .../main/java/com/baeldung/keyword/superkeyword/SuperBase.java | 0 .../src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java | 0 .../java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java | 0 .../com/baeldung/noclassdeffounderror/ClassWithInitErrors.java | 0 .../noclassdeffounderror/NoClassDefFoundErrorExample.java | 0 .../main/java/com/baeldung/parameterpassing/NonPrimitives.java | 0 .../src/main/java/com/baeldung/parameterpassing/Primitives.java | 0 .../src/main/java/com/baeldung/scope/method/BaseMethodClass.java | 0 .../src/main/java/com/baeldung/scope/method/ChildMethodClass.java | 0 .../src/main/java/com/baeldung/scope/method/MethodHidingDemo.java | 0 .../src/main/java/com/baeldung/scope/variable/ChildVariable.java | 0 .../src/main/java/com/baeldung/scope/variable/HideVariable.java | 0 .../src/main/java/com/baeldung/scope/variable/ParentVariable.java | 0 .../main/java/com/baeldung/scope/variable/VariableHidingDemo.java | 0 .../src/main/java/com/baeldung/system/ChatWindow.java | 0 .../src/main/java/com/baeldung/system/DateTimeService.java | 0 .../src/main/java/com/baeldung/system/EnvironmentVariables.java | 0 .../src/main/java/com/baeldung/system/SystemErrDemo.java | 0 .../src/main/java/com/baeldung/system/SystemExitDemo.java | 0 .../src/main/java/com/baeldung/system/SystemOutDemo.java | 0 .../src/main/java/com/baeldung/system/UserCredentials.java | 0 .../main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java | 0 .../src/main/java/com/baeldung/typeerasure/BoundStack.java | 0 .../src/main/java/com/baeldung/typeerasure/IntegerStack.java | 0 .../src/main/java/com/baeldung/typeerasure/Stack.java | 0 .../classnotfoundexception/ClassNotFoundExceptionUnitTest.java | 0 .../com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java | 0 .../noclassdeffounderror/NoClassDefFoundErrorUnitTest.java | 0 .../java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java | 0 .../java/com/baeldung/parameterpassing/PrimitivesUnitTest.java | 0 .../test/java/com/baeldung/system/DateTimeServiceUnitTest.java | 0 .../java/com/baeldung/system/EnvironmentVariablesUnitTest.java | 0 .../test/java/com/baeldung/system/SystemArrayCopyUnitTest.java | 0 .../src/test/java/com/baeldung/system/SystemNanoUnitTest.java | 0 .../test/java/com/baeldung/system/SystemPropertiesUnitTest.java | 0 .../test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java | 0 46 files changed, 0 insertions(+), 0 deletions(-) rename {core-java => core-java-lang}/src/main/java/com/baeldung/accessmodifiers/Public.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/accessmodifiers/SubClass.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/assertion/Assertion.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/immutableobjects/Currency.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/immutableobjects/Money.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/keyword/KeywordDemo.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/noclassdeffounderror/ClassWithInitErrors.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorExample.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/parameterpassing/NonPrimitives.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/parameterpassing/Primitives.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/scope/method/BaseMethodClass.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/scope/method/ChildMethodClass.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/scope/variable/ChildVariable.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/scope/variable/HideVariable.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/scope/variable/ParentVariable.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/system/ChatWindow.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/system/DateTimeService.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/system/EnvironmentVariables.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/system/SystemErrDemo.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/system/SystemExitDemo.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/system/SystemOutDemo.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/system/UserCredentials.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/typeerasure/BoundStack.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/typeerasure/IntegerStack.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/typeerasure/Stack.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/classnotfoundexception/ClassNotFoundExceptionUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/system/DateTimeServiceUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/system/EnvironmentVariablesUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/system/SystemArrayCopyUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/system/SystemNanoUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/system/SystemPropertiesUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java (100%) diff --git a/core-java/src/main/java/com/baeldung/accessmodifiers/Public.java b/core-java-lang/src/main/java/com/baeldung/accessmodifiers/Public.java similarity index 100% rename from core-java/src/main/java/com/baeldung/accessmodifiers/Public.java rename to core-java-lang/src/main/java/com/baeldung/accessmodifiers/Public.java diff --git a/core-java/src/main/java/com/baeldung/accessmodifiers/SubClass.java b/core-java-lang/src/main/java/com/baeldung/accessmodifiers/SubClass.java similarity index 100% rename from core-java/src/main/java/com/baeldung/accessmodifiers/SubClass.java rename to core-java-lang/src/main/java/com/baeldung/accessmodifiers/SubClass.java diff --git a/core-java/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java b/core-java-lang/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java similarity index 100% rename from core-java/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java rename to core-java-lang/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java diff --git a/core-java/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java b/core-java-lang/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java similarity index 100% rename from core-java/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java rename to core-java-lang/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java diff --git a/core-java/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java b/core-java-lang/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java similarity index 100% rename from core-java/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java rename to core-java-lang/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java diff --git a/core-java/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java b/core-java-lang/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java similarity index 100% rename from core-java/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java rename to core-java-lang/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java diff --git a/core-java/src/main/java/com/baeldung/assertion/Assertion.java b/core-java-lang/src/main/java/com/baeldung/assertion/Assertion.java similarity index 100% rename from core-java/src/main/java/com/baeldung/assertion/Assertion.java rename to core-java-lang/src/main/java/com/baeldung/assertion/Assertion.java diff --git a/core-java/src/main/java/com/baeldung/immutableobjects/Currency.java b/core-java-lang/src/main/java/com/baeldung/immutableobjects/Currency.java similarity index 100% rename from core-java/src/main/java/com/baeldung/immutableobjects/Currency.java rename to core-java-lang/src/main/java/com/baeldung/immutableobjects/Currency.java diff --git a/core-java/src/main/java/com/baeldung/immutableobjects/Money.java b/core-java-lang/src/main/java/com/baeldung/immutableobjects/Money.java similarity index 100% rename from core-java/src/main/java/com/baeldung/immutableobjects/Money.java rename to core-java-lang/src/main/java/com/baeldung/immutableobjects/Money.java diff --git a/core-java/src/main/java/com/baeldung/keyword/KeywordDemo.java b/core-java-lang/src/main/java/com/baeldung/keyword/KeywordDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/keyword/KeywordDemo.java rename to core-java-lang/src/main/java/com/baeldung/keyword/KeywordDemo.java diff --git a/core-java/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java b/core-java-lang/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java similarity index 100% rename from core-java/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java rename to core-java-lang/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java diff --git a/core-java/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java b/core-java-lang/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java similarity index 100% rename from core-java/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java rename to core-java-lang/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java diff --git a/core-java/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java b/core-java-lang/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java similarity index 100% rename from core-java/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java rename to core-java-lang/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java diff --git a/core-java/src/main/java/com/baeldung/noclassdeffounderror/ClassWithInitErrors.java b/core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/ClassWithInitErrors.java similarity index 100% rename from core-java/src/main/java/com/baeldung/noclassdeffounderror/ClassWithInitErrors.java rename to core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/ClassWithInitErrors.java diff --git a/core-java/src/main/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorExample.java b/core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorExample.java similarity index 100% rename from core-java/src/main/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorExample.java rename to core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorExample.java diff --git a/core-java/src/main/java/com/baeldung/parameterpassing/NonPrimitives.java b/core-java-lang/src/main/java/com/baeldung/parameterpassing/NonPrimitives.java similarity index 100% rename from core-java/src/main/java/com/baeldung/parameterpassing/NonPrimitives.java rename to core-java-lang/src/main/java/com/baeldung/parameterpassing/NonPrimitives.java diff --git a/core-java/src/main/java/com/baeldung/parameterpassing/Primitives.java b/core-java-lang/src/main/java/com/baeldung/parameterpassing/Primitives.java similarity index 100% rename from core-java/src/main/java/com/baeldung/parameterpassing/Primitives.java rename to core-java-lang/src/main/java/com/baeldung/parameterpassing/Primitives.java diff --git a/core-java/src/main/java/com/baeldung/scope/method/BaseMethodClass.java b/core-java-lang/src/main/java/com/baeldung/scope/method/BaseMethodClass.java similarity index 100% rename from core-java/src/main/java/com/baeldung/scope/method/BaseMethodClass.java rename to core-java-lang/src/main/java/com/baeldung/scope/method/BaseMethodClass.java diff --git a/core-java/src/main/java/com/baeldung/scope/method/ChildMethodClass.java b/core-java-lang/src/main/java/com/baeldung/scope/method/ChildMethodClass.java similarity index 100% rename from core-java/src/main/java/com/baeldung/scope/method/ChildMethodClass.java rename to core-java-lang/src/main/java/com/baeldung/scope/method/ChildMethodClass.java diff --git a/core-java/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java b/core-java-lang/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java rename to core-java-lang/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java diff --git a/core-java/src/main/java/com/baeldung/scope/variable/ChildVariable.java b/core-java-lang/src/main/java/com/baeldung/scope/variable/ChildVariable.java similarity index 100% rename from core-java/src/main/java/com/baeldung/scope/variable/ChildVariable.java rename to core-java-lang/src/main/java/com/baeldung/scope/variable/ChildVariable.java diff --git a/core-java/src/main/java/com/baeldung/scope/variable/HideVariable.java b/core-java-lang/src/main/java/com/baeldung/scope/variable/HideVariable.java similarity index 100% rename from core-java/src/main/java/com/baeldung/scope/variable/HideVariable.java rename to core-java-lang/src/main/java/com/baeldung/scope/variable/HideVariable.java diff --git a/core-java/src/main/java/com/baeldung/scope/variable/ParentVariable.java b/core-java-lang/src/main/java/com/baeldung/scope/variable/ParentVariable.java similarity index 100% rename from core-java/src/main/java/com/baeldung/scope/variable/ParentVariable.java rename to core-java-lang/src/main/java/com/baeldung/scope/variable/ParentVariable.java diff --git a/core-java/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java b/core-java-lang/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java rename to core-java-lang/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java diff --git a/core-java/src/main/java/com/baeldung/system/ChatWindow.java b/core-java-lang/src/main/java/com/baeldung/system/ChatWindow.java similarity index 100% rename from core-java/src/main/java/com/baeldung/system/ChatWindow.java rename to core-java-lang/src/main/java/com/baeldung/system/ChatWindow.java diff --git a/core-java/src/main/java/com/baeldung/system/DateTimeService.java b/core-java-lang/src/main/java/com/baeldung/system/DateTimeService.java similarity index 100% rename from core-java/src/main/java/com/baeldung/system/DateTimeService.java rename to core-java-lang/src/main/java/com/baeldung/system/DateTimeService.java diff --git a/core-java/src/main/java/com/baeldung/system/EnvironmentVariables.java b/core-java-lang/src/main/java/com/baeldung/system/EnvironmentVariables.java similarity index 100% rename from core-java/src/main/java/com/baeldung/system/EnvironmentVariables.java rename to core-java-lang/src/main/java/com/baeldung/system/EnvironmentVariables.java diff --git a/core-java/src/main/java/com/baeldung/system/SystemErrDemo.java b/core-java-lang/src/main/java/com/baeldung/system/SystemErrDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/system/SystemErrDemo.java rename to core-java-lang/src/main/java/com/baeldung/system/SystemErrDemo.java diff --git a/core-java/src/main/java/com/baeldung/system/SystemExitDemo.java b/core-java-lang/src/main/java/com/baeldung/system/SystemExitDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/system/SystemExitDemo.java rename to core-java-lang/src/main/java/com/baeldung/system/SystemExitDemo.java diff --git a/core-java/src/main/java/com/baeldung/system/SystemOutDemo.java b/core-java-lang/src/main/java/com/baeldung/system/SystemOutDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/system/SystemOutDemo.java rename to core-java-lang/src/main/java/com/baeldung/system/SystemOutDemo.java diff --git a/core-java/src/main/java/com/baeldung/system/UserCredentials.java b/core-java-lang/src/main/java/com/baeldung/system/UserCredentials.java similarity index 100% rename from core-java/src/main/java/com/baeldung/system/UserCredentials.java rename to core-java-lang/src/main/java/com/baeldung/system/UserCredentials.java diff --git a/core-java/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java b/core-java-lang/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java similarity index 100% rename from core-java/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java rename to core-java-lang/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java diff --git a/core-java/src/main/java/com/baeldung/typeerasure/BoundStack.java b/core-java-lang/src/main/java/com/baeldung/typeerasure/BoundStack.java similarity index 100% rename from core-java/src/main/java/com/baeldung/typeerasure/BoundStack.java rename to core-java-lang/src/main/java/com/baeldung/typeerasure/BoundStack.java diff --git a/core-java/src/main/java/com/baeldung/typeerasure/IntegerStack.java b/core-java-lang/src/main/java/com/baeldung/typeerasure/IntegerStack.java similarity index 100% rename from core-java/src/main/java/com/baeldung/typeerasure/IntegerStack.java rename to core-java-lang/src/main/java/com/baeldung/typeerasure/IntegerStack.java diff --git a/core-java/src/main/java/com/baeldung/typeerasure/Stack.java b/core-java-lang/src/main/java/com/baeldung/typeerasure/Stack.java similarity index 100% rename from core-java/src/main/java/com/baeldung/typeerasure/Stack.java rename to core-java-lang/src/main/java/com/baeldung/typeerasure/Stack.java diff --git a/core-java/src/test/java/com/baeldung/classnotfoundexception/ClassNotFoundExceptionUnitTest.java b/core-java-lang/src/test/java/com/baeldung/classnotfoundexception/ClassNotFoundExceptionUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/classnotfoundexception/ClassNotFoundExceptionUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/classnotfoundexception/ClassNotFoundExceptionUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java b/core-java-lang/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java b/core-java-lang/src/test/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java b/core-java-lang/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java b/core-java-lang/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/system/DateTimeServiceUnitTest.java b/core-java-lang/src/test/java/com/baeldung/system/DateTimeServiceUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/system/DateTimeServiceUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/system/DateTimeServiceUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/system/EnvironmentVariablesUnitTest.java b/core-java-lang/src/test/java/com/baeldung/system/EnvironmentVariablesUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/system/EnvironmentVariablesUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/system/EnvironmentVariablesUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/system/SystemArrayCopyUnitTest.java b/core-java-lang/src/test/java/com/baeldung/system/SystemArrayCopyUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/system/SystemArrayCopyUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/system/SystemArrayCopyUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/system/SystemNanoUnitTest.java b/core-java-lang/src/test/java/com/baeldung/system/SystemNanoUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/system/SystemNanoUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/system/SystemNanoUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/system/SystemPropertiesUnitTest.java b/core-java-lang/src/test/java/com/baeldung/system/SystemPropertiesUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/system/SystemPropertiesUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/system/SystemPropertiesUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java b/core-java-lang/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java From 52852b3a49a13dbfc15a5f16eac04a6855506595 Mon Sep 17 00:00:00 2001 From: gmconte <3528114+gmconte@users.noreply.github.com> Date: Sat, 10 Nov 2018 05:26:28 +0000 Subject: [PATCH 042/119] BAEL-2302 UPDATED Spring Data REST HTTP Method customization example (#5594) * BAEL-2302 Spring Data REST HTTP Method customization example * BAEL-2302 Spring Data REST - granular HTTP Methods control * BAEL-2302 Spring Data REST - fixed parent pom file version error * BAEL-2302 Fixing thymeleaf dependencies * BAEL-2302 Spring Data REST - fixed netty bootstrap * BAEL-2302 Spring Data REST - fixed netty test * BAEL-2302 Spring Data REST - fixed spring security oauth2 * BAEL-2302 - Fix oauth2 server deps --- parent-boot-2/pom.xml | 3 +- .../security/SpringSecurity5Application.java | 11 +++-- ...g5ReactiveServerClientIntegrationTest.java | 18 ++++---- spring-5-security/pom.xml | 15 ++++--- .../java/com/baeldung/config/RestConfig.java | 14 ++++--- .../baeldung/repositories/UserRepository.java | 22 +++++++++- ...pringDataRestValidatorIntegrationTest.java | 42 +++++++++++++++---- spring-security-mvc-boot/pom.xml | 2 +- spring-security-sso/pom.xml | 2 - .../spring-security-sso-auth-server/pom.xml | 7 ++-- .../spring-security-sso-ui-2/pom.xml | 2 +- .../java/org/baeldung/config/UiWebConfig.java | 9 +--- .../spring-security-sso-ui/pom.xml | 2 +- .../java/org/baeldung/config/UiWebConfig.java | 9 +--- spring-security-thymeleaf/pom.xml | 2 +- 15 files changed, 95 insertions(+), 65 deletions(-) diff --git a/parent-boot-2/pom.xml b/parent-boot-2/pom.xml index 47d382f58d..bb89cb2729 100644 --- a/parent-boot-2/pom.xml +++ b/parent-boot-2/pom.xml @@ -77,6 +77,7 @@ 3.1.0 1.0.11.RELEASE - 2.0.5.RELEASE + 2.1.0.RELEASE + 2.1.0.RELEASE diff --git a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SpringSecurity5Application.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SpringSecurity5Application.java index f2963c4fa5..ba913bc2d7 100644 --- a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SpringSecurity5Application.java +++ b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SpringSecurity5Application.java @@ -8,8 +8,8 @@ import org.springframework.http.server.reactive.HttpHandler; import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.web.reactive.config.EnableWebFlux; import org.springframework.web.server.adapter.WebHttpHandlerBuilder; -import reactor.ipc.netty.NettyContext; -import reactor.ipc.netty.http.server.HttpServer; +import reactor.netty.DisposableServer; +import reactor.netty.http.server.HttpServer; @ComponentScan(basePackages = {"com.baeldung.reactive.security"}) @EnableWebFlux @@ -18,17 +18,16 @@ public class SpringSecurity5Application { public static void main(String[] args) { try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringSecurity5Application.class)) { - context.getBean(NettyContext.class).onClose().block(); + context.getBean(DisposableServer.class).onDispose().block(); } } @Bean - public NettyContext nettyContext(ApplicationContext context) { + public DisposableServer nettyContext(ApplicationContext context) { HttpHandler handler = WebHttpHandlerBuilder.applicationContext(context) .build(); ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(handler); - HttpServer httpServer = HttpServer.create("localhost", 8080); - return httpServer.newHandler(adapter).block(); + return HttpServer.create().host("localhost").port(8080).handle(adapter).bind().block(); } } diff --git a/spring-5-reactive/src/test/java/com/baeldung/reactive/Spring5ReactiveServerClientIntegrationTest.java b/spring-5-reactive/src/test/java/com/baeldung/reactive/Spring5ReactiveServerClientIntegrationTest.java index 8707c27fb3..384600994e 100644 --- a/spring-5-reactive/src/test/java/com/baeldung/reactive/Spring5ReactiveServerClientIntegrationTest.java +++ b/spring-5-reactive/src/test/java/com/baeldung/reactive/Spring5ReactiveServerClientIntegrationTest.java @@ -1,5 +1,6 @@ package com.baeldung.reactive; +import com.baeldung.web.reactive.Task; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.springframework.http.server.reactive.HttpHandler; @@ -7,13 +8,10 @@ import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.web.reactive.function.server.RouterFunction; import org.springframework.web.reactive.function.server.RouterFunctions; import org.springframework.web.reactive.function.server.ServerResponse; - -import com.baeldung.web.reactive.Task; - import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; -import reactor.ipc.netty.NettyContext; -import reactor.ipc.netty.http.server.HttpServer; +import reactor.netty.DisposableServer; +import reactor.netty.http.server.HttpServer; import java.time.Duration; @@ -21,12 +19,11 @@ import static org.springframework.web.reactive.function.server.RequestPredicates import static org.springframework.web.reactive.function.server.RequestPredicates.POST; public class Spring5ReactiveServerClientIntegrationTest { - - private static NettyContext nettyContext; + private static DisposableServer nettyServer; @BeforeAll public static void setUp() throws Exception { - HttpServer server = HttpServer.create("localhost", 8080); + HttpServer server = HttpServer.create().host("localhost").port(8080); RouterFunction route = RouterFunctions.route(POST("/task/process"), request -> ServerResponse.ok() .body(request.bodyToFlux(Task.class) .map(ll -> new Task("TaskName", 1)), Task.class)) @@ -34,13 +31,12 @@ public class Spring5ReactiveServerClientIntegrationTest { .body(Mono.just("server is alive"), String.class))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(route); ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(httpHandler); - nettyContext = server.newHandler(adapter) - .block(); + nettyServer = server.handle(adapter).bind().block(); } @AfterAll public static void shutDown() { - nettyContext.dispose(); + nettyServer.dispose(); } // @Test diff --git a/spring-5-security/pom.xml b/spring-5-security/pom.xml index 1435019c24..da62f39fa9 100644 --- a/spring-5-security/pom.xml +++ b/spring-5-security/pom.xml @@ -31,10 +31,15 @@
org.thymeleaf.extras - thymeleaf-extras-springsecurity4 + thymeleaf-extras-springsecurity5 + + org.springframework.security.oauth.boot + spring-security-oauth2-autoconfigure + ${oauth-auto.version} + org.springframework.security spring-security-oauth2-client @@ -58,12 +63,6 @@ spring-security-test test - - - org.springframework.security.oauth.boot - spring-security-oauth2-autoconfigure - 2.0.1.RELEASE -
@@ -79,4 +78,4 @@ - \ No newline at end of file + diff --git a/spring-data-rest/src/main/java/com/baeldung/config/RestConfig.java b/spring-data-rest/src/main/java/com/baeldung/config/RestConfig.java index 7434dde394..39f90e867b 100644 --- a/spring-data-rest/src/main/java/com/baeldung/config/RestConfig.java +++ b/spring-data-rest/src/main/java/com/baeldung/config/RestConfig.java @@ -1,17 +1,21 @@ package com.baeldung.config; +import com.baeldung.models.WebsiteUser; +import com.baeldung.projections.CustomBook; import org.springframework.context.annotation.Configuration; import org.springframework.data.rest.core.config.RepositoryRestConfiguration; -import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurerAdapter; - -import com.baeldung.projections.CustomBook; - +import org.springframework.data.rest.core.mapping.ExposureConfiguration; +import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer; +import org.springframework.http.HttpMethod; @Configuration -public class RestConfig extends RepositoryRestConfigurerAdapter{ +public class RestConfig implements RepositoryRestConfigurer { @Override public void configureRepositoryRestConfiguration(RepositoryRestConfiguration repositoryRestConfiguration){ repositoryRestConfiguration.getProjectionConfiguration().addProjection(CustomBook.class); + ExposureConfiguration config = repositoryRestConfiguration.getExposureConfiguration(); + config.forDomainType(WebsiteUser.class).withItemExposure((metadata, httpMethods) -> + httpMethods.disable(HttpMethod.PATCH)); } } diff --git a/spring-data-rest/src/main/java/com/baeldung/repositories/UserRepository.java b/spring-data-rest/src/main/java/com/baeldung/repositories/UserRepository.java index 2bd9c025dd..a3fed1c318 100644 --- a/spring-data-rest/src/main/java/com/baeldung/repositories/UserRepository.java +++ b/spring-data-rest/src/main/java/com/baeldung/repositories/UserRepository.java @@ -1,12 +1,32 @@ package com.baeldung.repositories; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; import org.springframework.data.rest.core.annotation.RepositoryRestResource; +import org.springframework.data.rest.core.annotation.RestResource; import org.springframework.web.bind.annotation.CrossOrigin; import com.baeldung.models.WebsiteUser; @CrossOrigin @RepositoryRestResource(collectionResourceRel = "users", path = "users") public interface UserRepository extends CrudRepository { - + + @Override + @RestResource(exported = false) + void delete(WebsiteUser entity); + + @Override + @RestResource(exported = false) + void deleteAll(); + + @Override + @RestResource(exported = false) + void deleteAll(Iterable entities); + + @Override + @RestResource(exported = false) + void deleteById(Long aLong); + + @RestResource(path = "byEmail", rel = "customFindMethod") + WebsiteUser findByEmail(@Param("email") String email); } diff --git a/spring-data-rest/src/test/java/com/baeldung/validator/SpringDataRestValidatorIntegrationTest.java b/spring-data-rest/src/test/java/com/baeldung/validator/SpringDataRestValidatorIntegrationTest.java index 4c936ffc1c..d41736e434 100644 --- a/spring-data-rest/src/test/java/com/baeldung/validator/SpringDataRestValidatorIntegrationTest.java +++ b/spring-data-rest/src/test/java/com/baeldung/validator/SpringDataRestValidatorIntegrationTest.java @@ -1,11 +1,8 @@ package com.baeldung.validator; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrl; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup; - +import com.baeldung.SpringDataRestApplication; +import com.baeldung.models.WebsiteUser; +import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -17,9 +14,10 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.web.context.WebApplicationContext; -import com.baeldung.SpringDataRestApplication; -import com.baeldung.models.WebsiteUser; -import com.fasterxml.jackson.databind.ObjectMapper; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrl; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = SpringDataRestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.MOCK) @@ -84,4 +82,30 @@ public class SpringDataRestValidatorIntegrationTest { mockMvc.perform(post("/users", user).contentType(MediaType.APPLICATION_JSON).content(new ObjectMapper().writeValueAsString(user))).andExpect(status().isNotAcceptable()).andExpect(redirectedUrl(null)); } + @Test + public void whenDeletingCorrectUser_thenCorrectStatusCodeAndResponse() throws Exception { + WebsiteUser user = new WebsiteUser(); + user.setEmail("john.doe@john.com"); + user.setName("John Doe"); + mockMvc.perform(post("/users", user).contentType(MediaType.APPLICATION_JSON).content(new ObjectMapper().writeValueAsString(user))).andExpect(status().is2xxSuccessful()).andExpect(redirectedUrl("http://localhost/users/1")); + mockMvc.perform(delete("/users/1").contentType(MediaType.APPLICATION_JSON).content(new ObjectMapper().writeValueAsString(user))).andExpect(status().isMethodNotAllowed()); + } + + @Test + public void whenSearchingByEmail_thenCorrectStatusCodeAndResponse() throws Exception { + WebsiteUser user = new WebsiteUser(); + user.setEmail("john.doe@john.com"); + user.setName("John Doe"); + mockMvc.perform(post("/users", user).contentType(MediaType.APPLICATION_JSON).content(new ObjectMapper().writeValueAsString(user))).andExpect(status().is2xxSuccessful()).andExpect(redirectedUrl("http://localhost/users/1")); + mockMvc.perform(get("/users/search/byEmail").param("email", user.getEmail()).contentType(MediaType.APPLICATION_JSON)).andExpect(status().is2xxSuccessful()); + } + + @Test + public void whenSearchingByEmailWithOriginalMethodName_thenErrorStatusCodeAndResponse() throws Exception { + WebsiteUser user = new WebsiteUser(); + user.setEmail("john.doe@john.com"); + user.setName("John Doe"); + mockMvc.perform(post("/users", user).contentType(MediaType.APPLICATION_JSON).content(new ObjectMapper().writeValueAsString(user))).andExpect(status().is2xxSuccessful()).andExpect(redirectedUrl("http://localhost/users/1")); + mockMvc.perform(get("/users/search/findByEmail").param("email", user.getEmail()).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isNotFound()); + } } diff --git a/spring-security-mvc-boot/pom.xml b/spring-security-mvc-boot/pom.xml index 2427d0de1a..0a40b0b324 100644 --- a/spring-security-mvc-boot/pom.xml +++ b/spring-security-mvc-boot/pom.xml @@ -36,7 +36,7 @@ org.thymeleaf.extras - thymeleaf-extras-springsecurity4 + thymeleaf-extras-springsecurity5 org.springframework.boot diff --git a/spring-security-sso/pom.xml b/spring-security-sso/pom.xml index 764e899640..7761919ca7 100644 --- a/spring-security-sso/pom.xml +++ b/spring-security-sso/pom.xml @@ -23,8 +23,6 @@ 3.1.0 - 2.3.3.RELEASE - 2.0.1.RELEASE \ No newline at end of file diff --git a/spring-security-sso/spring-security-sso-auth-server/pom.xml b/spring-security-sso/spring-security-sso-auth-server/pom.xml index 1d57248b30..c0ad6dee2e 100644 --- a/spring-security-sso/spring-security-sso-auth-server/pom.xml +++ b/spring-security-sso/spring-security-sso-auth-server/pom.xml @@ -20,11 +20,10 @@ - org.springframework.security.oauth - spring-security-oauth2 - ${oauth.version} + org.springframework.security.oauth.boot + spring-security-oauth2-autoconfigure + ${oauth-auto.version} - \ No newline at end of file diff --git a/spring-security-sso/spring-security-sso-ui-2/pom.xml b/spring-security-sso/spring-security-sso-ui-2/pom.xml index afe7b59822..5881409c3a 100644 --- a/spring-security-sso/spring-security-sso-ui-2/pom.xml +++ b/spring-security-sso/spring-security-sso-ui-2/pom.xml @@ -37,7 +37,7 @@ org.thymeleaf.extras - thymeleaf-extras-springsecurity4 + thymeleaf-extras-springsecurity5 diff --git a/spring-security-sso/spring-security-sso-ui-2/src/main/java/org/baeldung/config/UiWebConfig.java b/spring-security-sso/spring-security-sso-ui-2/src/main/java/org/baeldung/config/UiWebConfig.java index 24d6c9b5d8..c17bb85173 100644 --- a/spring-security-sso/spring-security-sso-ui-2/src/main/java/org/baeldung/config/UiWebConfig.java +++ b/spring-security-sso/spring-security-sso-ui-2/src/main/java/org/baeldung/config/UiWebConfig.java @@ -3,15 +3,11 @@ package org.baeldung.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; -import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.config.annotation.*; @Configuration @EnableWebMvc -public class UiWebConfig extends WebMvcConfigurerAdapter { +public class UiWebConfig implements WebMvcConfigurer { @Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { @@ -25,7 +21,6 @@ public class UiWebConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(final ViewControllerRegistry registry) { - super.addViewControllers(registry); registry.addViewController("/") .setViewName("forward:/index"); registry.addViewController("/index"); diff --git a/spring-security-sso/spring-security-sso-ui/pom.xml b/spring-security-sso/spring-security-sso-ui/pom.xml index deb0e081be..3e85eb4737 100644 --- a/spring-security-sso/spring-security-sso-ui/pom.xml +++ b/spring-security-sso/spring-security-sso-ui/pom.xml @@ -38,7 +38,7 @@ org.thymeleaf.extras - thymeleaf-extras-springsecurity4 + thymeleaf-extras-springsecurity5 diff --git a/spring-security-sso/spring-security-sso-ui/src/main/java/org/baeldung/config/UiWebConfig.java b/spring-security-sso/spring-security-sso-ui/src/main/java/org/baeldung/config/UiWebConfig.java index 24d6c9b5d8..c17bb85173 100644 --- a/spring-security-sso/spring-security-sso-ui/src/main/java/org/baeldung/config/UiWebConfig.java +++ b/spring-security-sso/spring-security-sso-ui/src/main/java/org/baeldung/config/UiWebConfig.java @@ -3,15 +3,11 @@ package org.baeldung.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; -import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.config.annotation.*; @Configuration @EnableWebMvc -public class UiWebConfig extends WebMvcConfigurerAdapter { +public class UiWebConfig implements WebMvcConfigurer { @Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { @@ -25,7 +21,6 @@ public class UiWebConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(final ViewControllerRegistry registry) { - super.addViewControllers(registry); registry.addViewController("/") .setViewName("forward:/index"); registry.addViewController("/index"); diff --git a/spring-security-thymeleaf/pom.xml b/spring-security-thymeleaf/pom.xml index 5b7715bdeb..d8b476683a 100644 --- a/spring-security-thymeleaf/pom.xml +++ b/spring-security-thymeleaf/pom.xml @@ -43,7 +43,7 @@ org.thymeleaf.extras - thymeleaf-extras-springsecurity4 + thymeleaf-extras-springsecurity5 From 8232be4841e2ddee8cbecbfe14a9996c030e6936 Mon Sep 17 00:00:00 2001 From: Rokon Uddin Ahmed Date: Sat, 10 Nov 2018 15:59:58 +0600 Subject: [PATCH 043/119] Update README.md (#5653) --- rxjava-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/rxjava-2/README.md b/rxjava-2/README.md index 78eb6e6428..f9528bb1d5 100644 --- a/rxjava-2/README.md +++ b/rxjava-2/README.md @@ -5,3 +5,4 @@ - [RxJava 2 - Completable](http://www.baeldung.com/rxjava-completable) - [RxJava Maybe](http://www.baeldung.com/rxjava-maybe) - [Introduction to RxRelay for RxJava](http://www.baeldung.com/rx-relay) +- [Combining RxJava Completables](https://www.baeldung.com/rxjava-completable) From 03f530126fe7bfb146d3e95ba9dd1c5f1626cc5b Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 10 Nov 2018 12:22:48 +0100 Subject: [PATCH 044/119] Multiple threads odd-even refactor (#5617) * encoding * Converting synchronous and asynchronous API to observables * Adding different ways of converting sync/async APIs to observalbles. * Replace anonymous class with lambda * update based on comment from Grzegorz Piwowarek * Refactor even-odd semaphore demo * Remove unrelated files --- ...reDemo.java => PrintEvenOddSemaphore.java} | 38 ++++++++----------- ...enOdd.java => PrintEvenOddWaitNotify.java} | 32 +++++++--------- 2 files changed, 29 insertions(+), 41 deletions(-) rename core-java-concurrency/src/main/java/com/baeldung/concurrent/evenandodd/{SemaphoreDemo.java => PrintEvenOddSemaphore.java} (60%) rename core-java-concurrency/src/main/java/com/baeldung/concurrent/evenandodd/{PrintEvenOdd.java => PrintEvenOddWaitNotify.java} (64%) diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/evenandodd/SemaphoreDemo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/evenandodd/PrintEvenOddSemaphore.java similarity index 60% rename from core-java-concurrency/src/main/java/com/baeldung/concurrent/evenandodd/SemaphoreDemo.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/evenandodd/PrintEvenOddSemaphore.java index c3afba1f68..8b58916707 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/concurrent/evenandodd/SemaphoreDemo.java +++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/evenandodd/PrintEvenOddSemaphore.java @@ -2,55 +2,47 @@ package com.baeldung.concurrent.evenandodd; import java.util.concurrent.Semaphore; -public class SemaphoreDemo { +public class PrintEvenOddSemaphore { public static void main(String[] args) { - SharedPrinter sp = new SharedPrinter(); - Thread odd = new Thread(new Odd(sp, 10)); - odd.setName("Odd"); - Thread even = new Thread(new Even(sp, 10)); - even.setName("Even"); + Thread odd = new Thread(new Odd(sp, 10), "Odd"); + Thread even = new Thread(new Even(sp, 10), "Even"); odd.start(); even.start(); - } - } class SharedPrinter { - Semaphore semEven = new Semaphore(0); - Semaphore semOdd = new Semaphore(1); + private final Semaphore semEven = new Semaphore(0); + private final Semaphore semOdd = new Semaphore(1); - public void printEvenNum(int num) { + void printEvenNum(int num) { try { semEven.acquire(); } catch (InterruptedException e) { - e.printStackTrace(); + Thread.currentThread().interrupt(); } - System.out.println(Thread.currentThread() - .getName() + ":"+num); + System.out.println(Thread.currentThread().getName() + ":"+num); semOdd.release(); } - public void printOddNum(int num) { + void printOddNum(int num) { try { semOdd.acquire(); } catch (InterruptedException e) { - e.printStackTrace(); + Thread.currentThread().interrupt(); } - System.out.println(Thread.currentThread() - .getName() + ":"+ num); + System.out.println(Thread.currentThread().getName() + ":"+ num); semEven.release(); - } } class Even implements Runnable { - SharedPrinter sp; - int max; + private final SharedPrinter sp; + private final int max; Even(SharedPrinter sp, int max) { this.sp = sp; @@ -66,8 +58,8 @@ class Even implements Runnable { } class Odd implements Runnable { - SharedPrinter sp; - int max; + private SharedPrinter sp; + private int max; Odd(SharedPrinter sp, int max) { this.sp = sp; diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/evenandodd/PrintEvenOdd.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/evenandodd/PrintEvenOddWaitNotify.java similarity index 64% rename from core-java-concurrency/src/main/java/com/baeldung/concurrent/evenandodd/PrintEvenOdd.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/evenandodd/PrintEvenOddWaitNotify.java index 54d89382b9..2b59f22a6e 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/concurrent/evenandodd/PrintEvenOdd.java +++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/evenandodd/PrintEvenOddWaitNotify.java @@ -1,22 +1,20 @@ package com.baeldung.concurrent.evenandodd; -public class PrintEvenOdd { +public class PrintEvenOddWaitNotify { public static void main(String... args) { Printer print = new Printer(); - Thread t1 = new Thread(new TaskEvenOdd(print, 10, false)); - t1.setName("Odd"); - Thread t2 = new Thread(new TaskEvenOdd(print, 10, true)); - t2.setName("Even"); + Thread t1 = new Thread(new TaskEvenOdd(print, 10, false), "Odd"); + Thread t2 = new Thread(new TaskEvenOdd(print, 10, true), "Even"); t1.start(); t2.start(); } } class TaskEvenOdd implements Runnable { - private int max; - private Printer print; - private boolean isEvenNumber; + private final int max; + private final Printer print; + private final boolean isEvenNumber; TaskEvenOdd(Printer print, int max, boolean isEvenNumber) { this.print = print; @@ -26,7 +24,7 @@ class TaskEvenOdd implements Runnable { @Override public void run() { - int number = isEvenNumber == true ? 2 : 1; + int number = isEvenNumber ? 2 : 1; while (number <= max) { if (isEvenNumber) { print.printEven(number); @@ -39,32 +37,30 @@ class TaskEvenOdd implements Runnable { } class Printer { - boolean isOdd = false; + private volatile boolean isOdd; synchronized void printEven(int number) { - while (isOdd == false) { + while (!isOdd) { try { wait(); } catch (InterruptedException e) { - e.printStackTrace(); + Thread.currentThread().interrupt(); } } - System.out.println(Thread.currentThread() - .getName() + ":" + number); + System.out.println(Thread.currentThread().getName() + ":" + number); isOdd = false; notify(); } synchronized void printOdd(int number) { - while (isOdd == true) { + while (isOdd) { try { wait(); } catch (InterruptedException e) { - e.printStackTrace(); + Thread.currentThread().interrupt(); } } - System.out.println(Thread.currentThread() - .getName() + ":" + number); + System.out.println(Thread.currentThread().getName() + ":" + number); isOdd = true; notify(); } From 6d1e1647d511378028adcc26f5f9bcb1d7a766a6 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 10 Nov 2018 12:45:08 +0100 Subject: [PATCH 045/119] Core scala refactor (#5654) * encoding * Converting synchronous and asynchronous API to observables * Adding different ways of converting sync/async APIs to observalbles. * Replace anonymous class with lambda * update based on comment from Grzegorz Piwowarek * Refactor core-scala examples * Cleanup --- .../scala/com/baeldung/scala/Employee.scala | 2 +- .../baeldung/scala/HigherOrderFunctions.scala | 2 +- .../main/scala/com/baeldung/scala/Utils.scala | 4 ++-- .../scala/ControlStructuresDemoUnitTest.scala | 12 ++++++------ .../com/baeldung/scala/EmployeeUnitTest.scala | 6 +++--- .../scala/HigherOrderFunctionsUnitTest.scala | 9 ++++----- .../com/baeldung/scala/IntSetUnitTest.scala | 4 +--- .../com/baeldung/scala/UtilsUnitTest.scala | 17 ++++++----------- 8 files changed, 24 insertions(+), 32 deletions(-) diff --git a/core-scala/src/main/scala/com/baeldung/scala/Employee.scala b/core-scala/src/main/scala/com/baeldung/scala/Employee.scala index 397f166aa7..9291d958b3 100644 --- a/core-scala/src/main/scala/com/baeldung/scala/Employee.scala +++ b/core-scala/src/main/scala/com/baeldung/scala/Employee.scala @@ -22,6 +22,6 @@ class Employee(val name : String, * A Trait which will make the toString return upper case value. */ trait UpperCasePrinter { - override def toString = super.toString toUpperCase + override def toString: String = super.toString toUpperCase } diff --git a/core-scala/src/main/scala/com/baeldung/scala/HigherOrderFunctions.scala b/core-scala/src/main/scala/com/baeldung/scala/HigherOrderFunctions.scala index df97013206..02c41a5f8c 100644 --- a/core-scala/src/main/scala/com/baeldung/scala/HigherOrderFunctions.scala +++ b/core-scala/src/main/scala/com/baeldung/scala/HigherOrderFunctions.scala @@ -11,7 +11,7 @@ object HigherOrderFunctions { def mapReduce(r : (Int, Int) => Int, i : Int, m : Int => Int, - a : Int, b : Int) = { + a : Int, b : Int): Int = { def iter(a : Int, result : Int) : Int = { if (a > b) result else iter(a + 1, r(m(a), result)) diff --git a/core-scala/src/main/scala/com/baeldung/scala/Utils.scala b/core-scala/src/main/scala/com/baeldung/scala/Utils.scala index 93cd3e697e..20bc413646 100644 --- a/core-scala/src/main/scala/com/baeldung/scala/Utils.scala +++ b/core-scala/src/main/scala/com/baeldung/scala/Utils.scala @@ -7,9 +7,9 @@ package com.baeldung.scala * */ object Utils { - def average(x : Double, y : Double) = (x + y) / 2 + def average(x : Double, y : Double): Double = (x + y) / 2 - def randomLessThan(d : Double) = { + def randomLessThan(d : Double): Double = { var random = 0d do { random = Math.random() diff --git a/core-scala/src/test/scala/com/baeldung/scala/ControlStructuresDemoUnitTest.scala b/core-scala/src/test/scala/com/baeldung/scala/ControlStructuresDemoUnitTest.scala index 71422a8b4f..584038ee2c 100644 --- a/core-scala/src/test/scala/com/baeldung/scala/ControlStructuresDemoUnitTest.scala +++ b/core-scala/src/test/scala/com/baeldung/scala/ControlStructuresDemoUnitTest.scala @@ -1,32 +1,32 @@ package com.baeldung.scala import com.baeldung.scala.ControlStructuresDemo._ -import org.junit.Test import org.junit.Assert.assertEquals +import org.junit.Test class ControlStructuresDemoUnitTest { @Test - def givenTwoIntegers_whenGcdCalled_thenCorrectValueReturned = { + def givenTwoIntegers_whenGcdCalled_thenCorrectValueReturned() = { assertEquals(3, gcd(15, 27)) } @Test - def givenTwoIntegers_whenGcdIterCalled_thenCorrectValueReturned = { + def givenTwoIntegers_whenGcdIterCalled_thenCorrectValueReturned() = { assertEquals(3, gcdIter(15, 27)) } @Test - def givenTwoIntegers_whenRangeSumcalled_thenCorrectValueReturned = { + def givenTwoIntegers_whenRangeSumcalled_thenCorrectValueReturned() = { assertEquals(55, rangeSum(1, 10)) } @Test - def givenPositiveInteger_whenFactorialInvoked_thenCorrectValueReturned = { + def givenPositiveInteger_whenFactorialInvoked_thenCorrectValueReturned() = { assertEquals(720, factorial(6)) } @Test - def whenFactorialOf0Invoked_then1Returned = { + def whenFactorialOf0Invoked_then1Returned() = { assertEquals(1, factorial(0)) } diff --git a/core-scala/src/test/scala/com/baeldung/scala/EmployeeUnitTest.scala b/core-scala/src/test/scala/com/baeldung/scala/EmployeeUnitTest.scala index c51631dd2c..0828752a8a 100644 --- a/core-scala/src/test/scala/com/baeldung/scala/EmployeeUnitTest.scala +++ b/core-scala/src/test/scala/com/baeldung/scala/EmployeeUnitTest.scala @@ -6,20 +6,20 @@ import org.junit.Test class EmployeeUnitTest { @Test - def whenEmployeeSalaryIncremented_thenCorrectSalary = { + def whenEmployeeSalaryIncremented_thenCorrectSalary() = { val employee = new Employee("John Doe", 1000) employee.incrementSalary() assertEquals(1020, employee.salary) } @Test - def givenEmployee_whenToStringCalled_thenCorrectStringReturned = { + def givenEmployee_whenToStringCalled_thenCorrectStringReturned() = { val employee = new Employee("John Doe", 1000) assertEquals("Employee(name=John Doe, salary=1000)", employee.toString) } @Test - def givenEmployeeWithTrait_whenToStringCalled_thenCorrectStringReturned = { + def givenEmployeeWithTrait_whenToStringCalled_thenCorrectStringReturned() = { val employee = new Employee("John Doe", 1000) with UpperCasePrinter assertEquals("EMPLOYEE(NAME=JOHN DOE, SALARY=1000)", employee.toString) diff --git a/core-scala/src/test/scala/com/baeldung/scala/HigherOrderFunctionsUnitTest.scala b/core-scala/src/test/scala/com/baeldung/scala/HigherOrderFunctionsUnitTest.scala index 63530ecaf4..240c879d7f 100644 --- a/core-scala/src/test/scala/com/baeldung/scala/HigherOrderFunctionsUnitTest.scala +++ b/core-scala/src/test/scala/com/baeldung/scala/HigherOrderFunctionsUnitTest.scala @@ -1,14 +1,13 @@ package com.baeldung.scala +import com.baeldung.scala.HigherOrderFunctions.mapReduce import org.junit.Assert.assertEquals import org.junit.Test -import HigherOrderFunctions.mapReduce - class HigherOrderFunctionsUnitTest { @Test - def whenCalledWithSumAndSquareFunctions_thenCorrectValueReturned = { + def whenCalledWithSumAndSquareFunctions_thenCorrectValueReturned() = { def square(x : Int) = x * x def sum(x : Int, y : Int) = x + y @@ -20,7 +19,7 @@ class HigherOrderFunctionsUnitTest { } @Test - def whenComputingSumOfSquaresWithAnonymousFunctions_thenCorrectValueReturned = { + def whenComputingSumOfSquaresWithAnonymousFunctions_thenCorrectValueReturned() = { def sumSquares(a : Int, b : Int) = mapReduce((x, y) => x + y, 0, x => x * x, a, b) @@ -28,7 +27,7 @@ class HigherOrderFunctionsUnitTest { } @Test - def givenCurriedFunctions_whenInvoked_thenCorrectValueReturned = { + def givenCurriedFunctions_whenInvoked_thenCorrectValueReturned() = { // a curried function def sum(f : Int => Int)(a : Int, b : Int) : Int = diff --git a/core-scala/src/test/scala/com/baeldung/scala/IntSetUnitTest.scala b/core-scala/src/test/scala/com/baeldung/scala/IntSetUnitTest.scala index 5cc19e9215..ac27389d70 100644 --- a/core-scala/src/test/scala/com/baeldung/scala/IntSetUnitTest.scala +++ b/core-scala/src/test/scala/com/baeldung/scala/IntSetUnitTest.scala @@ -1,14 +1,12 @@ package com.baeldung.scala -import scala.Range - import org.junit.Assert.assertFalse import org.junit.Test class IntSetUnitTest { @Test - def givenSetof1To10_whenContains11Called_thenFalse = { + def givenSetof1To10_whenContains11Called_thenFalse() = { // Set up a set containing integers 1 to 10. val set1To10 = diff --git a/core-scala/src/test/scala/com/baeldung/scala/UtilsUnitTest.scala b/core-scala/src/test/scala/com/baeldung/scala/UtilsUnitTest.scala index 47f9873aad..e4995201d8 100644 --- a/core-scala/src/test/scala/com/baeldung/scala/UtilsUnitTest.scala +++ b/core-scala/src/test/scala/com/baeldung/scala/UtilsUnitTest.scala @@ -1,34 +1,29 @@ package com.baeldung.scala -import org.junit.Assert.assertEquals -import org.junit.Assert.assertTrue +import com.baeldung.scala.Utils.{average, fibonacci, power, randomLessThan} +import org.junit.Assert.{assertEquals, assertTrue} import org.junit.Test -import Utils.average -import Utils.fibonacci -import Utils.power -import Utils.randomLessThan - class UtilsUnitTest { @Test - def whenAverageCalled_thenCorrectValueReturned() = { + def whenAverageCalled_thenCorrectValueReturned(): Unit = { assertEquals(15.0, average(10, 20), 1e-5) } @Test - def whenRandomLessThanInvokedWithANumber_thenARandomLessThanItReturned = { + def whenRandomLessThanInvokedWithANumber_thenARandomLessThanItReturned: Unit = { val d = 0.1 assertTrue(randomLessThan(d) < d) } @Test - def whenPowerInvokedWith2And3_then8Returned = { + def whenPowerInvokedWith2And3_then8Returned: Unit = { assertEquals(8, power(2, 3)) } @Test - def whenFibonacciCalled_thenCorrectValueReturned = { + def whenFibonacciCalled_thenCorrectValueReturned: Unit = { assertEquals(1, fibonacci(0)) assertEquals(1, fibonacci(1)) assertEquals(fibonacci(6), From 55c49b25f1376dbf433fc2aa0c200879399abf8f Mon Sep 17 00:00:00 2001 From: geroza Date: Sat, 10 Nov 2018 10:29:12 -0200 Subject: [PATCH 046/119] 4- Fourth commit for core-java module splitting. This commit includes: * to core-java-lang: * https://www.baeldung.com/java-stack-overflow-error * https://www.baeldung.com/java-new-custom-exception * https://www.baeldung.com/java-exceptions * https://www.baeldung.com/java-final-finally-finalize * https://www.baeldung.com/java-static-dynamic-binding * https://www.baeldung.com/java-throw-throws * https://www.baeldung.com/java-synthetic * https://www.baeldung.com/java-switch * https://www.baeldung.com/modulo-java * https://www.baeldung.com/java-ternary-operator --- .../src/main/java/com/baeldung/binding/Animal.java | 0 .../src/main/java/com/baeldung/binding/AnimalActivity.java | 0 .../src/main/java/com/baeldung/binding/Cat.java | 0 .../src/main/java/com/baeldung/customexception/FileManager.java | 0 .../baeldung/customexception/IncorrectFileExtensionException.java | 0 .../com/baeldung/customexception/IncorrectFileNameException.java | 0 .../src/main/java/com/baeldung/exceptionhandling/Exceptions.java | 0 .../src/main/java/com/baeldung/exceptionhandling/MyException.java | 0 .../src/main/java/com/baeldung/exceptionhandling/Player.java | 0 .../java/com/baeldung/exceptionhandling/PlayerLoadException.java | 0 .../java/com/baeldung/exceptionhandling/PlayerScoreException.java | 0 .../java/com/baeldung/exceptionhandling/TimeoutException.java | 0 .../main/java/com/baeldung/keywords/finalize/FinalizeObject.java | 0 .../src/main/java/com/baeldung/keywords/finalkeyword/Child.java | 0 .../main/java/com/baeldung/keywords/finalkeyword/GrandChild.java | 0 .../src/main/java/com/baeldung/keywords/finalkeyword/Parent.java | 0 .../java/com/baeldung/keywords/finallykeyword/FinallyExample.java | 0 .../main/java/com/baeldung/stackoverflowerror/AccountHolder.java | 0 .../src/main/java/com/baeldung/stackoverflowerror/ClassOne.java | 0 .../src/main/java/com/baeldung/stackoverflowerror/ClassTwo.java | 0 .../InfiniteRecursionWithTerminationCondition.java | 0 .../RecursionWithCorrectTerminationCondition.java | 0 .../baeldung/stackoverflowerror/UnintendedInfiniteRecursion.java | 0 .../main/java/com/baeldung/switchstatement/SwitchStatement.java | 0 .../src/main/java/com/baeldung/synthetic/BridgeMethodDemo.java | 0 .../java/com/baeldung/synthetic/SyntheticConstructorDemo.java | 0 .../src/main/java/com/baeldung/synthetic/SyntheticFieldDemo.java | 0 .../src/main/java/com/baeldung/synthetic/SyntheticMethodDemo.java | 0 .../java/com/baeldung/throwsexception/DataAccessException.java | 0 .../src/main/java/com/baeldung/throwsexception/Main.java | 0 .../main/java/com/baeldung/throwsexception/PersonRepository.java | 0 .../src/main/java/com/baeldung/throwsexception/SimpleService.java | 0 .../src/main/java/com/baeldung/throwsexception/TryCatch.java | 0 .../test/java/com/baeldung/binding/AnimalActivityUnitTest.java | 0 .../src/test/java/com/baeldung/binding/AnimalUnitTest.java | 0 .../src/test/java/com/baeldung/binding/CatUnitTest.java | 0 .../customexception/IncorrectFileExtensionExceptionUnitTest.java | 0 .../customexception/IncorrectFileNameExceptionUnitTest.java | 0 .../java/com/baeldung/exceptionhandling/ExceptionsUnitTest.java | 0 .../src/test/java/com/baeldung/modulo/ModuloUnitTest.java | 0 .../com/baeldung/stackoverflowerror/AccountHolderManualTest.java | 0 .../baeldung/stackoverflowerror/CyclicDependancyManualTest.java | 0 .../InfiniteRecursionWithTerminationConditionManualTest.java | 0 .../RecursionWithCorrectTerminationConditionManualTest.java | 0 .../stackoverflowerror/UnintendedInfiniteRecursionManualTest.java | 0 .../com/baeldung/switchstatement/SwitchStatementUnitTest.java | 0 .../src/test/java/com/baeldung/synthetic/SyntheticUnitTest.java | 0 .../com/baeldung/ternaryoperator/TernaryOperatorUnitTest.java | 0 .../java/com/baeldung/throwsexception/SimpleServiceUnitTest.java | 0 49 files changed, 0 insertions(+), 0 deletions(-) rename {core-java => core-java-lang}/src/main/java/com/baeldung/binding/Animal.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/binding/AnimalActivity.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/binding/Cat.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/customexception/FileManager.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/customexception/IncorrectFileExtensionException.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/customexception/IncorrectFileNameException.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/exceptionhandling/Exceptions.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/exceptionhandling/MyException.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/exceptionhandling/Player.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/exceptionhandling/PlayerLoadException.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/exceptionhandling/PlayerScoreException.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/exceptionhandling/TimeoutException.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/keywords/finalize/FinalizeObject.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/keywords/finalkeyword/Child.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/keywords/finalkeyword/GrandChild.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/keywords/finalkeyword/Parent.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/keywords/finallykeyword/FinallyExample.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/stackoverflowerror/AccountHolder.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/stackoverflowerror/ClassOne.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/stackoverflowerror/ClassTwo.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationCondition.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursion.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/switchstatement/SwitchStatement.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/synthetic/BridgeMethodDemo.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/synthetic/SyntheticConstructorDemo.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/synthetic/SyntheticFieldDemo.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/synthetic/SyntheticMethodDemo.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/throwsexception/DataAccessException.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/throwsexception/Main.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/throwsexception/PersonRepository.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/throwsexception/SimpleService.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/throwsexception/TryCatch.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/binding/AnimalUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/binding/CatUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/customexception/IncorrectFileExtensionExceptionUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/customexception/IncorrectFileNameExceptionUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/exceptionhandling/ExceptionsUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/modulo/ModuloUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/stackoverflowerror/AccountHolderManualTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyManualTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/switchstatement/SwitchStatementUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/synthetic/SyntheticUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/ternaryoperator/TernaryOperatorUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/throwsexception/SimpleServiceUnitTest.java (100%) diff --git a/core-java/src/main/java/com/baeldung/binding/Animal.java b/core-java-lang/src/main/java/com/baeldung/binding/Animal.java similarity index 100% rename from core-java/src/main/java/com/baeldung/binding/Animal.java rename to core-java-lang/src/main/java/com/baeldung/binding/Animal.java diff --git a/core-java/src/main/java/com/baeldung/binding/AnimalActivity.java b/core-java-lang/src/main/java/com/baeldung/binding/AnimalActivity.java similarity index 100% rename from core-java/src/main/java/com/baeldung/binding/AnimalActivity.java rename to core-java-lang/src/main/java/com/baeldung/binding/AnimalActivity.java diff --git a/core-java/src/main/java/com/baeldung/binding/Cat.java b/core-java-lang/src/main/java/com/baeldung/binding/Cat.java similarity index 100% rename from core-java/src/main/java/com/baeldung/binding/Cat.java rename to core-java-lang/src/main/java/com/baeldung/binding/Cat.java diff --git a/core-java/src/main/java/com/baeldung/customexception/FileManager.java b/core-java-lang/src/main/java/com/baeldung/customexception/FileManager.java similarity index 100% rename from core-java/src/main/java/com/baeldung/customexception/FileManager.java rename to core-java-lang/src/main/java/com/baeldung/customexception/FileManager.java diff --git a/core-java/src/main/java/com/baeldung/customexception/IncorrectFileExtensionException.java b/core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileExtensionException.java similarity index 100% rename from core-java/src/main/java/com/baeldung/customexception/IncorrectFileExtensionException.java rename to core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileExtensionException.java diff --git a/core-java/src/main/java/com/baeldung/customexception/IncorrectFileNameException.java b/core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileNameException.java similarity index 100% rename from core-java/src/main/java/com/baeldung/customexception/IncorrectFileNameException.java rename to core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileNameException.java diff --git a/core-java/src/main/java/com/baeldung/exceptionhandling/Exceptions.java b/core-java-lang/src/main/java/com/baeldung/exceptionhandling/Exceptions.java similarity index 100% rename from core-java/src/main/java/com/baeldung/exceptionhandling/Exceptions.java rename to core-java-lang/src/main/java/com/baeldung/exceptionhandling/Exceptions.java diff --git a/core-java/src/main/java/com/baeldung/exceptionhandling/MyException.java b/core-java-lang/src/main/java/com/baeldung/exceptionhandling/MyException.java similarity index 100% rename from core-java/src/main/java/com/baeldung/exceptionhandling/MyException.java rename to core-java-lang/src/main/java/com/baeldung/exceptionhandling/MyException.java diff --git a/core-java/src/main/java/com/baeldung/exceptionhandling/Player.java b/core-java-lang/src/main/java/com/baeldung/exceptionhandling/Player.java similarity index 100% rename from core-java/src/main/java/com/baeldung/exceptionhandling/Player.java rename to core-java-lang/src/main/java/com/baeldung/exceptionhandling/Player.java diff --git a/core-java/src/main/java/com/baeldung/exceptionhandling/PlayerLoadException.java b/core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerLoadException.java similarity index 100% rename from core-java/src/main/java/com/baeldung/exceptionhandling/PlayerLoadException.java rename to core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerLoadException.java diff --git a/core-java/src/main/java/com/baeldung/exceptionhandling/PlayerScoreException.java b/core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerScoreException.java similarity index 100% rename from core-java/src/main/java/com/baeldung/exceptionhandling/PlayerScoreException.java rename to core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerScoreException.java diff --git a/core-java/src/main/java/com/baeldung/exceptionhandling/TimeoutException.java b/core-java-lang/src/main/java/com/baeldung/exceptionhandling/TimeoutException.java similarity index 100% rename from core-java/src/main/java/com/baeldung/exceptionhandling/TimeoutException.java rename to core-java-lang/src/main/java/com/baeldung/exceptionhandling/TimeoutException.java diff --git a/core-java/src/main/java/com/baeldung/keywords/finalize/FinalizeObject.java b/core-java-lang/src/main/java/com/baeldung/keywords/finalize/FinalizeObject.java similarity index 100% rename from core-java/src/main/java/com/baeldung/keywords/finalize/FinalizeObject.java rename to core-java-lang/src/main/java/com/baeldung/keywords/finalize/FinalizeObject.java diff --git a/core-java/src/main/java/com/baeldung/keywords/finalkeyword/Child.java b/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Child.java similarity index 100% rename from core-java/src/main/java/com/baeldung/keywords/finalkeyword/Child.java rename to core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Child.java diff --git a/core-java/src/main/java/com/baeldung/keywords/finalkeyword/GrandChild.java b/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/GrandChild.java similarity index 100% rename from core-java/src/main/java/com/baeldung/keywords/finalkeyword/GrandChild.java rename to core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/GrandChild.java diff --git a/core-java/src/main/java/com/baeldung/keywords/finalkeyword/Parent.java b/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Parent.java similarity index 100% rename from core-java/src/main/java/com/baeldung/keywords/finalkeyword/Parent.java rename to core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Parent.java diff --git a/core-java/src/main/java/com/baeldung/keywords/finallykeyword/FinallyExample.java b/core-java-lang/src/main/java/com/baeldung/keywords/finallykeyword/FinallyExample.java similarity index 100% rename from core-java/src/main/java/com/baeldung/keywords/finallykeyword/FinallyExample.java rename to core-java-lang/src/main/java/com/baeldung/keywords/finallykeyword/FinallyExample.java diff --git a/core-java/src/main/java/com/baeldung/stackoverflowerror/AccountHolder.java b/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/AccountHolder.java similarity index 100% rename from core-java/src/main/java/com/baeldung/stackoverflowerror/AccountHolder.java rename to core-java-lang/src/main/java/com/baeldung/stackoverflowerror/AccountHolder.java diff --git a/core-java/src/main/java/com/baeldung/stackoverflowerror/ClassOne.java b/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassOne.java similarity index 100% rename from core-java/src/main/java/com/baeldung/stackoverflowerror/ClassOne.java rename to core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassOne.java diff --git a/core-java/src/main/java/com/baeldung/stackoverflowerror/ClassTwo.java b/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassTwo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/stackoverflowerror/ClassTwo.java rename to core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassTwo.java diff --git a/core-java/src/main/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java b/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java similarity index 100% rename from core-java/src/main/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java rename to core-java-lang/src/main/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java diff --git a/core-java/src/main/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationCondition.java b/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationCondition.java similarity index 100% rename from core-java/src/main/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationCondition.java rename to core-java-lang/src/main/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationCondition.java diff --git a/core-java/src/main/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursion.java b/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursion.java similarity index 100% rename from core-java/src/main/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursion.java rename to core-java-lang/src/main/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursion.java diff --git a/core-java/src/main/java/com/baeldung/switchstatement/SwitchStatement.java b/core-java-lang/src/main/java/com/baeldung/switchstatement/SwitchStatement.java similarity index 100% rename from core-java/src/main/java/com/baeldung/switchstatement/SwitchStatement.java rename to core-java-lang/src/main/java/com/baeldung/switchstatement/SwitchStatement.java diff --git a/core-java/src/main/java/com/baeldung/synthetic/BridgeMethodDemo.java b/core-java-lang/src/main/java/com/baeldung/synthetic/BridgeMethodDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/synthetic/BridgeMethodDemo.java rename to core-java-lang/src/main/java/com/baeldung/synthetic/BridgeMethodDemo.java diff --git a/core-java/src/main/java/com/baeldung/synthetic/SyntheticConstructorDemo.java b/core-java-lang/src/main/java/com/baeldung/synthetic/SyntheticConstructorDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/synthetic/SyntheticConstructorDemo.java rename to core-java-lang/src/main/java/com/baeldung/synthetic/SyntheticConstructorDemo.java diff --git a/core-java/src/main/java/com/baeldung/synthetic/SyntheticFieldDemo.java b/core-java-lang/src/main/java/com/baeldung/synthetic/SyntheticFieldDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/synthetic/SyntheticFieldDemo.java rename to core-java-lang/src/main/java/com/baeldung/synthetic/SyntheticFieldDemo.java diff --git a/core-java/src/main/java/com/baeldung/synthetic/SyntheticMethodDemo.java b/core-java-lang/src/main/java/com/baeldung/synthetic/SyntheticMethodDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/synthetic/SyntheticMethodDemo.java rename to core-java-lang/src/main/java/com/baeldung/synthetic/SyntheticMethodDemo.java diff --git a/core-java/src/main/java/com/baeldung/throwsexception/DataAccessException.java b/core-java-lang/src/main/java/com/baeldung/throwsexception/DataAccessException.java similarity index 100% rename from core-java/src/main/java/com/baeldung/throwsexception/DataAccessException.java rename to core-java-lang/src/main/java/com/baeldung/throwsexception/DataAccessException.java diff --git a/core-java/src/main/java/com/baeldung/throwsexception/Main.java b/core-java-lang/src/main/java/com/baeldung/throwsexception/Main.java similarity index 100% rename from core-java/src/main/java/com/baeldung/throwsexception/Main.java rename to core-java-lang/src/main/java/com/baeldung/throwsexception/Main.java diff --git a/core-java/src/main/java/com/baeldung/throwsexception/PersonRepository.java b/core-java-lang/src/main/java/com/baeldung/throwsexception/PersonRepository.java similarity index 100% rename from core-java/src/main/java/com/baeldung/throwsexception/PersonRepository.java rename to core-java-lang/src/main/java/com/baeldung/throwsexception/PersonRepository.java diff --git a/core-java/src/main/java/com/baeldung/throwsexception/SimpleService.java b/core-java-lang/src/main/java/com/baeldung/throwsexception/SimpleService.java similarity index 100% rename from core-java/src/main/java/com/baeldung/throwsexception/SimpleService.java rename to core-java-lang/src/main/java/com/baeldung/throwsexception/SimpleService.java diff --git a/core-java/src/main/java/com/baeldung/throwsexception/TryCatch.java b/core-java-lang/src/main/java/com/baeldung/throwsexception/TryCatch.java similarity index 100% rename from core-java/src/main/java/com/baeldung/throwsexception/TryCatch.java rename to core-java-lang/src/main/java/com/baeldung/throwsexception/TryCatch.java diff --git a/core-java/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java b/core-java-lang/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/binding/AnimalUnitTest.java b/core-java-lang/src/test/java/com/baeldung/binding/AnimalUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/binding/AnimalUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/binding/AnimalUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/binding/CatUnitTest.java b/core-java-lang/src/test/java/com/baeldung/binding/CatUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/binding/CatUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/binding/CatUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/customexception/IncorrectFileExtensionExceptionUnitTest.java b/core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileExtensionExceptionUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/customexception/IncorrectFileExtensionExceptionUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileExtensionExceptionUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/customexception/IncorrectFileNameExceptionUnitTest.java b/core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileNameExceptionUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/customexception/IncorrectFileNameExceptionUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileNameExceptionUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/exceptionhandling/ExceptionsUnitTest.java b/core-java-lang/src/test/java/com/baeldung/exceptionhandling/ExceptionsUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/exceptionhandling/ExceptionsUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/exceptionhandling/ExceptionsUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/modulo/ModuloUnitTest.java b/core-java-lang/src/test/java/com/baeldung/modulo/ModuloUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/modulo/ModuloUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/modulo/ModuloUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/stackoverflowerror/AccountHolderManualTest.java b/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/AccountHolderManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/stackoverflowerror/AccountHolderManualTest.java rename to core-java-lang/src/test/java/com/baeldung/stackoverflowerror/AccountHolderManualTest.java diff --git a/core-java/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyManualTest.java b/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyManualTest.java rename to core-java-lang/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyManualTest.java diff --git a/core-java/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java b/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java rename to core-java-lang/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java diff --git a/core-java/src/test/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java b/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java rename to core-java-lang/src/test/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java diff --git a/core-java/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java b/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java rename to core-java-lang/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java diff --git a/core-java/src/test/java/com/baeldung/switchstatement/SwitchStatementUnitTest.java b/core-java-lang/src/test/java/com/baeldung/switchstatement/SwitchStatementUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/switchstatement/SwitchStatementUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/switchstatement/SwitchStatementUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/synthetic/SyntheticUnitTest.java b/core-java-lang/src/test/java/com/baeldung/synthetic/SyntheticUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/synthetic/SyntheticUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/synthetic/SyntheticUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/ternaryoperator/TernaryOperatorUnitTest.java b/core-java-lang/src/test/java/com/baeldung/ternaryoperator/TernaryOperatorUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/ternaryoperator/TernaryOperatorUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/ternaryoperator/TernaryOperatorUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/throwsexception/SimpleServiceUnitTest.java b/core-java-lang/src/test/java/com/baeldung/throwsexception/SimpleServiceUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/throwsexception/SimpleServiceUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/throwsexception/SimpleServiceUnitTest.java From 7249a2c88db3ed8233cdaea25f064d1228d7b0bd Mon Sep 17 00:00:00 2001 From: geroza Date: Sat, 10 Nov 2018 11:13:04 -0200 Subject: [PATCH 047/119] 5 - Fifth commit to split core-java. This one includes: * to core-java-lang: * https://www.baeldung.com/java-separate-double-into-integer-decimal-parts * https://www.baeldung.com/java-sneaky-throws * https://www.baeldung.com/java-inheritance-composition * to core-java-array: * https://www.baeldung.com/java-array-copy * https://www.baeldung.com/java-initialize-array * https://www.baeldung.com/java-array-contains-value * https://www.baeldung.com/java-invert-array * https://www.baeldung.com/java-array-sum-average * https://www.baeldung.com/java-jagged-arrays * https://www.baeldung.com/java-util-arrays * https://www.baeldung.com/java-common-array-operations (from core-java-collections) --- core-java-arrays/.gitignore | 25 + core-java-arrays/pom.xml | 547 ++++++++++++++++++ .../baeldung/array/ArrayBenchmarkRunner.java | 0 .../com/baeldung/array/ArrayInitializer.java | 0 .../com/baeldung/array/ArrayInverter.java | 0 .../baeldung/array/ArrayReferenceGuide.java | 0 .../baeldung/array/Find2ndLargestInArray.java | 0 .../baeldung/array/FindElementInArray.java | 0 .../java/com/baeldung/array/JaggedArray.java | 0 .../baeldung/array/SearchArrayUnitTest.java | 0 .../baeldung/array/SumAndAverageInArray.java | 0 .../array/operations/ArrayOperations.java | 0 .../com/baeldung/arraycopy/model/Address.java | 0 .../baeldung/arraycopy/model/Employee.java | 0 .../array/ArrayInitializerUnitTest.java | 0 .../baeldung/array/ArrayInverterUnitTest.java | 0 .../array/Find2ndLargestInArrayUnitTest.java | 0 .../array/FindElementInArrayUnitTest.java | 0 .../baeldung/array/JaggedArrayUnitTest.java | 0 .../array/SumAndAverageInArrayUnitTest.java | 0 .../operations/ArrayOperationsUnitTest.java | 0 .../arraycopy/ArrayCopyUtilUnitTest.java | 0 .../com/baeldung/arrays/ArraysUnitTest.java | 0 .../doubles/SplitFloatingPointNumbers.java | 0 .../application/Application.java | 0 .../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 .../baeldung/sneakythrows/SneakyRunnable.java | 0 .../baeldung/sneakythrows/SneakyThrows.java | 0 .../test/ActressUnitTest.java | 0 .../test/CompositionUnitTest.java | 0 .../test/InheritanceUnitTest.java | 0 .../test/PersonUnitTest.java | 0 .../test/WaitressUnitTest.java | 0 .../sneakythrows/SneakyRunnableUnitTest.java | 0 .../sneakythrows/SneakyThrowsUnitTest.java | 0 44 files changed, 572 insertions(+) create mode 100644 core-java-arrays/.gitignore create mode 100644 core-java-arrays/pom.xml rename {core-java => core-java-arrays}/src/main/java/com/baeldung/array/ArrayBenchmarkRunner.java (100%) rename {core-java => core-java-arrays}/src/main/java/com/baeldung/array/ArrayInitializer.java (100%) rename {core-java => core-java-arrays}/src/main/java/com/baeldung/array/ArrayInverter.java (100%) rename {core-java => core-java-arrays}/src/main/java/com/baeldung/array/ArrayReferenceGuide.java (100%) rename {core-java => core-java-arrays}/src/main/java/com/baeldung/array/Find2ndLargestInArray.java (100%) rename {core-java => core-java-arrays}/src/main/java/com/baeldung/array/FindElementInArray.java (100%) rename {core-java => core-java-arrays}/src/main/java/com/baeldung/array/JaggedArray.java (100%) rename {core-java => core-java-arrays}/src/main/java/com/baeldung/array/SearchArrayUnitTest.java (100%) rename {core-java => core-java-arrays}/src/main/java/com/baeldung/array/SumAndAverageInArray.java (100%) rename {core-java-collections => core-java-arrays}/src/main/java/com/baeldung/array/operations/ArrayOperations.java (100%) rename {core-java => core-java-arrays}/src/main/java/com/baeldung/arraycopy/model/Address.java (100%) rename {core-java => core-java-arrays}/src/main/java/com/baeldung/arraycopy/model/Employee.java (100%) rename {core-java => core-java-arrays}/src/test/java/com/baeldung/array/ArrayInitializerUnitTest.java (100%) rename {core-java => core-java-arrays}/src/test/java/com/baeldung/array/ArrayInverterUnitTest.java (100%) rename {core-java => core-java-arrays}/src/test/java/com/baeldung/array/Find2ndLargestInArrayUnitTest.java (100%) rename {core-java => core-java-arrays}/src/test/java/com/baeldung/array/FindElementInArrayUnitTest.java (100%) rename {core-java => core-java-arrays}/src/test/java/com/baeldung/array/JaggedArrayUnitTest.java (100%) rename {core-java => core-java-arrays}/src/test/java/com/baeldung/array/SumAndAverageInArrayUnitTest.java (100%) rename {core-java-collections => core-java-arrays}/src/test/java/com/baeldung/array/operations/ArrayOperationsUnitTest.java (100%) rename {core-java => core-java-arrays}/src/test/java/com/baeldung/arraycopy/ArrayCopyUtilUnitTest.java (100%) rename {core-java => core-java-arrays}/src/test/java/com/baeldung/arrays/ArraysUnitTest.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/doubles/SplitFloatingPointNumbers.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritancecomposition/application/Application.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritancecomposition/model/Person.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java (100%) rename {core-java => core-java-lang}/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/inheritancecomposition/test/ActressUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/inheritancecomposition/test/CompositionUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/inheritancecomposition/test/InheritanceUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/inheritancecomposition/test/PersonUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/inheritancecomposition/test/WaitressUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/sneakythrows/SneakyRunnableUnitTest.java (100%) rename {core-java => core-java-lang}/src/test/java/com/baeldung/sneakythrows/SneakyThrowsUnitTest.java (100%) diff --git a/core-java-arrays/.gitignore b/core-java-arrays/.gitignore new file mode 100644 index 0000000000..374c8bf907 --- /dev/null +++ b/core-java-arrays/.gitignore @@ -0,0 +1,25 @@ +*.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 +backup-pom.xml +/bin/ +/temp + +#IntelliJ specific +.idea/ +*.iml \ No newline at end of file diff --git a/core-java-arrays/pom.xml b/core-java-arrays/pom.xml new file mode 100644 index 0000000000..36dcc09341 --- /dev/null +++ b/core-java-arrays/pom.xml @@ -0,0 +1,547 @@ + + 4.0.0 + com.baeldung + core-java-arrays + 0.1.0-SNAPSHOT + jar + core-java-arrays + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../parent-java + + + + + commons-io + commons-io + ${commons-io.version} + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + org.bouncycastle + bcprov-jdk15on + ${bouncycastle.version} + + + org.unix4j + unix4j-command + ${unix4j.version} + + + com.googlecode.grep4j + grep4j + ${grep4j.version} + + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.google.code.gson + gson + ${gson.version} + + + + log4j + log4j + ${log4j.version} + + + org.slf4j + log4j-over-slf4j + ${org.slf4j.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + + commons-codec + commons-codec + ${commons-codec.version} + + + org.javamoney + moneta + ${javamoney.moneta.version} + + + org.owasp.esapi + esapi + ${esapi.version} + + + com.sun.messaging.mq + fscontext + ${fscontext.version} + + + com.codepoetics + protonpack + ${protonpack.version} + + + one.util + streamex + ${streamex.version} + + + io.vavr + vavr + ${vavr.version} + + + org.openjdk.jmh + jmh-core + ${jmh-core.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-generator-annprocess.version} + + + org.springframework + spring-web + ${springframework.spring-web.version} + + + com.h2database + h2 + ${h2database.version} + + + javax.mail + mail + ${javax.mail.version} + + + + org.apache.tika + tika-core + ${tika.version} + + + net.sf.jmimemagic + jmimemagic + ${jmime-magic.version} + + + + org.javassist + javassist + ${javaassist.version} + + + com.sun + tools + 1.8.0 + system + ${java.home}/../lib/tools.jar + + + + + core-java-arrays + + + src/main/resources + true + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*LiveTest.java + **/*IntegrationTest.java + **/*IntTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java + + true + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-dependencies + prepare-package + + copy-dependencies + + + ${project.build.directory}/libs + + + + + + + org.apache.maven.plugins + maven-jar-plugin + ${maven-jar-plugin.version} + + + + true + libs/ + org.baeldung.executable.ExecutableMavenJar + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + package + + single + + + ${project.basedir} + + + org.baeldung.executable.ExecutableMavenJar + + + + jar-with-dependencies + + + + + + + + org.apache.maven.plugins + maven-shade-plugin + ${maven-shade-plugin.version} + + + + shade + + + true + + + org.baeldung.executable.ExecutableMavenJar + + + + + + + + + com.jolira + onejar-maven-plugin + ${onejar-maven-plugin.version} + + + + org.baeldung.executable.ExecutableMavenJar + true + ${project.build.finalName}-onejar.${project.packaging} + + + one-jar + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot-maven-plugin.version} + + + + repackage + + + spring-boot + org.baeldung.executable.ExecutableMavenJar + + + + + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + + java + com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed + + -Xmx300m + -XX:+UseParallelGC + -classpath + + com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + 1.8 + 1.8 + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*ManualTest.java + + + **/*IntegrationTest.java + **/*IntTest.java + + + + + + + json + + + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + + + run-benchmarks + + none + + exec + + + test + java + + -classpath + + org.openjdk.jmh.Main + .* + + + + + + + + + + + + buildAgentLoader + + + + org.apache.maven.plugins + maven-jar-plugin + + + package + + jar + + + agentLoader + target/classes + + + true + + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + + + + com/baeldung/instrumentation/application/AgentLoader.class + com/baeldung/instrumentation/application/Launcher.class + + + + + + + + + + buildApplication + + + + org.apache.maven.plugins + maven-jar-plugin + + + package + + jar + + + application + target/classes + + + true + + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + + + + com/baeldung/instrumentation/application/MyAtm.class + com/baeldung/instrumentation/application/MyAtmApplication.class + com/baeldung/instrumentation/application/Launcher.class + + + + + + + + + + buildAgent + + + + org.apache.maven.plugins + maven-jar-plugin + + + package + + jar + + + agent + target/classes + + + true + + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + + + + com/baeldung/instrumentation/agent/AtmTransformer.class + com/baeldung/instrumentation/agent/MyInstrumentationAgent.class + + + + + + + + + + + + + + 2.8.5 + 2.8.2 + + + 3.8.1 + 1.55 + 1.10 + 2.5 + 3.6.1 + 1.0.3 + 0.4 + 1.8.7 + 1.16.12 + 4.6-b01 + 1.13 + 0.6.5 + 0.9.0 + + + 3.10.0 + + + 2.21.0 + 4.3.4.RELEASE + + 1.1 + 1.4.197 + 2.1.0.1 + 1.19 + + 1.19 + 3.0.0-M1 + 1.5.0-b01 + 3.0.2 + 1.4.4 + 3.1.1 + 2.0.3.RELEASE + 1.6.0 + 61.1 + + 1.18 + 0.1.5 + + 3.21.0-GA + + + diff --git a/core-java/src/main/java/com/baeldung/array/ArrayBenchmarkRunner.java b/core-java-arrays/src/main/java/com/baeldung/array/ArrayBenchmarkRunner.java similarity index 100% rename from core-java/src/main/java/com/baeldung/array/ArrayBenchmarkRunner.java rename to core-java-arrays/src/main/java/com/baeldung/array/ArrayBenchmarkRunner.java diff --git a/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java b/core-java-arrays/src/main/java/com/baeldung/array/ArrayInitializer.java similarity index 100% rename from core-java/src/main/java/com/baeldung/array/ArrayInitializer.java rename to core-java-arrays/src/main/java/com/baeldung/array/ArrayInitializer.java diff --git a/core-java/src/main/java/com/baeldung/array/ArrayInverter.java b/core-java-arrays/src/main/java/com/baeldung/array/ArrayInverter.java similarity index 100% rename from core-java/src/main/java/com/baeldung/array/ArrayInverter.java rename to core-java-arrays/src/main/java/com/baeldung/array/ArrayInverter.java diff --git a/core-java/src/main/java/com/baeldung/array/ArrayReferenceGuide.java b/core-java-arrays/src/main/java/com/baeldung/array/ArrayReferenceGuide.java similarity index 100% rename from core-java/src/main/java/com/baeldung/array/ArrayReferenceGuide.java rename to core-java-arrays/src/main/java/com/baeldung/array/ArrayReferenceGuide.java diff --git a/core-java/src/main/java/com/baeldung/array/Find2ndLargestInArray.java b/core-java-arrays/src/main/java/com/baeldung/array/Find2ndLargestInArray.java similarity index 100% rename from core-java/src/main/java/com/baeldung/array/Find2ndLargestInArray.java rename to core-java-arrays/src/main/java/com/baeldung/array/Find2ndLargestInArray.java diff --git a/core-java/src/main/java/com/baeldung/array/FindElementInArray.java b/core-java-arrays/src/main/java/com/baeldung/array/FindElementInArray.java similarity index 100% rename from core-java/src/main/java/com/baeldung/array/FindElementInArray.java rename to core-java-arrays/src/main/java/com/baeldung/array/FindElementInArray.java diff --git a/core-java/src/main/java/com/baeldung/array/JaggedArray.java b/core-java-arrays/src/main/java/com/baeldung/array/JaggedArray.java similarity index 100% rename from core-java/src/main/java/com/baeldung/array/JaggedArray.java rename to core-java-arrays/src/main/java/com/baeldung/array/JaggedArray.java diff --git a/core-java/src/main/java/com/baeldung/array/SearchArrayUnitTest.java b/core-java-arrays/src/main/java/com/baeldung/array/SearchArrayUnitTest.java similarity index 100% rename from core-java/src/main/java/com/baeldung/array/SearchArrayUnitTest.java rename to core-java-arrays/src/main/java/com/baeldung/array/SearchArrayUnitTest.java diff --git a/core-java/src/main/java/com/baeldung/array/SumAndAverageInArray.java b/core-java-arrays/src/main/java/com/baeldung/array/SumAndAverageInArray.java similarity index 100% rename from core-java/src/main/java/com/baeldung/array/SumAndAverageInArray.java rename to core-java-arrays/src/main/java/com/baeldung/array/SumAndAverageInArray.java diff --git a/core-java-collections/src/main/java/com/baeldung/array/operations/ArrayOperations.java b/core-java-arrays/src/main/java/com/baeldung/array/operations/ArrayOperations.java similarity index 100% rename from core-java-collections/src/main/java/com/baeldung/array/operations/ArrayOperations.java rename to core-java-arrays/src/main/java/com/baeldung/array/operations/ArrayOperations.java diff --git a/core-java/src/main/java/com/baeldung/arraycopy/model/Address.java b/core-java-arrays/src/main/java/com/baeldung/arraycopy/model/Address.java similarity index 100% rename from core-java/src/main/java/com/baeldung/arraycopy/model/Address.java rename to core-java-arrays/src/main/java/com/baeldung/arraycopy/model/Address.java diff --git a/core-java/src/main/java/com/baeldung/arraycopy/model/Employee.java b/core-java-arrays/src/main/java/com/baeldung/arraycopy/model/Employee.java similarity index 100% rename from core-java/src/main/java/com/baeldung/arraycopy/model/Employee.java rename to core-java-arrays/src/main/java/com/baeldung/arraycopy/model/Employee.java diff --git a/core-java/src/test/java/com/baeldung/array/ArrayInitializerUnitTest.java b/core-java-arrays/src/test/java/com/baeldung/array/ArrayInitializerUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/array/ArrayInitializerUnitTest.java rename to core-java-arrays/src/test/java/com/baeldung/array/ArrayInitializerUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/array/ArrayInverterUnitTest.java b/core-java-arrays/src/test/java/com/baeldung/array/ArrayInverterUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/array/ArrayInverterUnitTest.java rename to core-java-arrays/src/test/java/com/baeldung/array/ArrayInverterUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/array/Find2ndLargestInArrayUnitTest.java b/core-java-arrays/src/test/java/com/baeldung/array/Find2ndLargestInArrayUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/array/Find2ndLargestInArrayUnitTest.java rename to core-java-arrays/src/test/java/com/baeldung/array/Find2ndLargestInArrayUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/array/FindElementInArrayUnitTest.java b/core-java-arrays/src/test/java/com/baeldung/array/FindElementInArrayUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/array/FindElementInArrayUnitTest.java rename to core-java-arrays/src/test/java/com/baeldung/array/FindElementInArrayUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/array/JaggedArrayUnitTest.java b/core-java-arrays/src/test/java/com/baeldung/array/JaggedArrayUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/array/JaggedArrayUnitTest.java rename to core-java-arrays/src/test/java/com/baeldung/array/JaggedArrayUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/array/SumAndAverageInArrayUnitTest.java b/core-java-arrays/src/test/java/com/baeldung/array/SumAndAverageInArrayUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/array/SumAndAverageInArrayUnitTest.java rename to core-java-arrays/src/test/java/com/baeldung/array/SumAndAverageInArrayUnitTest.java diff --git a/core-java-collections/src/test/java/com/baeldung/array/operations/ArrayOperationsUnitTest.java b/core-java-arrays/src/test/java/com/baeldung/array/operations/ArrayOperationsUnitTest.java similarity index 100% rename from core-java-collections/src/test/java/com/baeldung/array/operations/ArrayOperationsUnitTest.java rename to core-java-arrays/src/test/java/com/baeldung/array/operations/ArrayOperationsUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/arraycopy/ArrayCopyUtilUnitTest.java b/core-java-arrays/src/test/java/com/baeldung/arraycopy/ArrayCopyUtilUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/arraycopy/ArrayCopyUtilUnitTest.java rename to core-java-arrays/src/test/java/com/baeldung/arraycopy/ArrayCopyUtilUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/arrays/ArraysUnitTest.java b/core-java-arrays/src/test/java/com/baeldung/arrays/ArraysUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/arrays/ArraysUnitTest.java rename to core-java-arrays/src/test/java/com/baeldung/arrays/ArraysUnitTest.java diff --git a/core-java/src/main/java/com/baeldung/doubles/SplitFloatingPointNumbers.java b/core-java-lang/src/main/java/com/baeldung/doubles/SplitFloatingPointNumbers.java similarity index 100% rename from core-java/src/main/java/com/baeldung/doubles/SplitFloatingPointNumbers.java rename to core-java-lang/src/main/java/com/baeldung/doubles/SplitFloatingPointNumbers.java diff --git a/core-java/src/main/java/com/baeldung/inheritancecomposition/application/Application.java b/core-java-lang/src/main/java/com/baeldung/inheritancecomposition/application/Application.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritancecomposition/application/Application.java rename to core-java-lang/src/main/java/com/baeldung/inheritancecomposition/application/Application.java diff --git a/core-java/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java b/core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java rename to core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java diff --git a/core-java/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java b/core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java rename to core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java diff --git a/core-java/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java b/core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java rename to core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java diff --git a/core-java/src/main/java/com/baeldung/inheritancecomposition/model/Person.java b/core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/Person.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritancecomposition/model/Person.java rename to core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/Person.java diff --git a/core-java/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java b/core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java rename to core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java diff --git a/core-java/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java b/core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java rename to core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java diff --git a/core-java/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java b/core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java rename to core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java diff --git a/core-java/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java b/core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java rename to core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java diff --git a/core-java/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java b/core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java rename to core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java diff --git a/core-java/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java b/core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java similarity index 100% rename from core-java/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java rename to core-java-lang/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java diff --git a/core-java/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java b/core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java similarity index 100% rename from core-java/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java rename to core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java diff --git a/core-java/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java b/core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java similarity index 100% rename from core-java/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java rename to core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java diff --git a/core-java/src/test/java/com/baeldung/inheritancecomposition/test/ActressUnitTest.java b/core-java-lang/src/test/java/com/baeldung/inheritancecomposition/test/ActressUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/inheritancecomposition/test/ActressUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/inheritancecomposition/test/ActressUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/inheritancecomposition/test/CompositionUnitTest.java b/core-java-lang/src/test/java/com/baeldung/inheritancecomposition/test/CompositionUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/inheritancecomposition/test/CompositionUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/inheritancecomposition/test/CompositionUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/inheritancecomposition/test/InheritanceUnitTest.java b/core-java-lang/src/test/java/com/baeldung/inheritancecomposition/test/InheritanceUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/inheritancecomposition/test/InheritanceUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/inheritancecomposition/test/InheritanceUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/inheritancecomposition/test/PersonUnitTest.java b/core-java-lang/src/test/java/com/baeldung/inheritancecomposition/test/PersonUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/inheritancecomposition/test/PersonUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/inheritancecomposition/test/PersonUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/inheritancecomposition/test/WaitressUnitTest.java b/core-java-lang/src/test/java/com/baeldung/inheritancecomposition/test/WaitressUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/inheritancecomposition/test/WaitressUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/inheritancecomposition/test/WaitressUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/sneakythrows/SneakyRunnableUnitTest.java b/core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyRunnableUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/sneakythrows/SneakyRunnableUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyRunnableUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/sneakythrows/SneakyThrowsUnitTest.java b/core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyThrowsUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/sneakythrows/SneakyThrowsUnitTest.java rename to core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyThrowsUnitTest.java From c5d39535c688200588c4575487b18333ddd38381 Mon Sep 17 00:00:00 2001 From: Eugen Paraschiv Date: Sat, 10 Nov 2018 15:36:47 +0200 Subject: [PATCH 048/119] maven testing cleanup --- pom.xml | 716 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 358 insertions(+), 358 deletions(-) diff --git a/pom.xml b/pom.xml index aa79dae1d5..f4338bf995 100644 --- a/pom.xml +++ b/pom.xml @@ -545,7 +545,7 @@ **/*IntTest.java **/*LongRunningUnitTest.java **/*ManualTest.java - **/JdbcTest.java + **/*JdbcTest.java **/*LiveTest.java @@ -898,37 +898,25 @@ integration - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*ManualTest.java - **/*LiveTest.java - - - **/*IntegrationTest.java - **/*IntTest.java - - - - - - - json - - - - - + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*ManualTest.java + **/*LiveTest.java + + + **/*IntegrationTest.java + **/*IntTest.java + + + + + @@ -1213,39 +1201,26 @@ - integration-lite + integration-lite-test - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*ManualTest.java - **/*LiveTest.java - - - **/*IntegrationTest.java - **/*IntTest.java - - - - - - - json - - - - - + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*ManualTest.java + **/*LiveTest.java + + + **/*IntegrationTest.java + **/*IntTest.java + + + + + parent-boot-1 @@ -1254,270 +1229,305 @@ parent-spring-5 parent-java parent-kotlin - asm - atomix - persistence-modules/apache-cayenne - aws - aws-lambda - akka-streams - algorithms-genetic - algorithms-miscellaneous-1 - algorithms-miscellaneous-2 - algorithms-sorting - annotations - apache-cxf - apache-fop - apache-poi - apache-tika - apache-thrift - apache-curator - apache-zookeeper - apache-opennlp - autovalue - axon - azure - bootique - cdi - java-strings - - core-java-collections - java-collections-conversions - java-collections-maps - core-java-io - core-java-8 - java-streams - core-groovy - - couchbase - persistence-modules/deltaspike - dozer - ethereum - feign - flips - testing-modules/groovy-spock - google-cloud - gson - guava - guava-collections - guava-modules/guava-18 - guava-modules/guava-19 - guava-modules/guava-21 - guice - disruptor - spring-static-resources - hazelcast - persistence-modules/hbase - - hystrix - image-processing - immutables - persistence-modules/influxdb - jackson - vavr - java-lite - java-numbers - java-rmi - java-vavr-stream - javax-servlets - javaxval - jaxb - javafx - jgroups - jee-7 - jee-7-security - jjwt - jsf - json-path - json - jsoup - jta - testing-modules/junit-5 - testing-modules/junit5-migration - jws - libraries-data - linkrest - logging-modules/log-mdc - logging-modules/log4j - - logging-modules/logback - lombok - mapstruct - - maven - mesos-marathon - msf4j - testing-modules/mockito - testing-modules/mockito-2 - testing-modules/mocks - mustache - mvn-wrapper - noexception - persistence-modules/orientdb - osgi - orika - patterns - pdf - protobuffer - persistence-modules/querydsl - reactor-core - persistence-modules/redis - testing-modules/rest-assured - testing-modules/rest-testing - resteasy - rxjava - rxjava-2 - spring-swagger-codegen - testing-modules/selenium-junit-testng - persistence-modules/solr - spark-java + spring-4 - spring-5-data-reactive - spring-5-reactive - spring-5-reactive-security - spring-5-reactive-client - spring-5-mvc - spring-5-security - spring-activiti - spring-akka - spring-amqp - spring-all - spring-amqp-simple - spring-apache-camel - spring-batch - spring-bom - spring-boot-keycloak - spring-boot-bootstrap - spring-boot-admin - spring-boot-camel - persistence-modules/spring-boot-persistence - spring-boot-security - spring-boot-mvc - spring-boot-logging-log4j2 - spring-boot-disable-console-logging - spring-cloud-data-flow - spring-cloud - spring-cloud-bus - spring-core - spring-cucumber - spring-ejb - spring-aop + - persistence-modules/spring-data-dynamodb - persistence-modules/spring-data-keyvalue - persistence-modules/spring-data-mongodb - persistence-modules/spring-data-neo4j + - spring-data-rest - persistence-modules/spring-data-solr - spring-dispatcher-servlet - spring-exceptions - spring-freemarker - persistence-modules/spring-hibernate-3 + + integration-lite - persistence-modules/spring-hibernate-5 - persistence-modules/spring-data-eclipselink - spring-integration - spring-jenkins-pipeline - spring-jersey + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*ManualTest.java + **/*LiveTest.java + + + **/*IntegrationTest.java + **/*IntTest.java + + + + + - spring-jms - spring-jooq - persistence-modules/spring-jpa - spring-kafka - spring-katharsis - spring-ldap - spring-mockito - spring-mvc-forms-jsp - spring-mvc-forms-thymeleaf - spring-mvc-java - spring-mvc-velocity - spring-mvc-webflow - spring-mvc-xml - spring-mvc-kotlin - spring-protobuf - spring-quartz - spring-rest-angular - spring-rest-full - spring-rest-query-language - spring-rest - spring-resttemplate - spring-rest-simple - spring-security-acl - spring-security-cache-control - spring-security-client/spring-security-jsp-authentication - spring-security-client/spring-security-jsp-authorize - spring-security-client/spring-security-jsp-config - spring-security-client/spring-security-mvc - spring-security-client/spring-security-thymeleaf-authentication - spring-security-client/spring-security-thymeleaf-authorize - spring-security-client/spring-security-thymeleaf-config - spring-security-core - spring-security-mvc-boot - spring-security-mvc-digest-auth - spring-security-mvc-ldap - spring-security-mvc-login - spring-security-mvc-persisted-remember-me - spring-security-mvc-session - spring-security-mvc-socket - spring-security-openid - - spring-security-rest-basic-auth - spring-security-rest-custom - spring-security-rest - spring-security-sso - spring-security-x509 - spring-session - spring-sleuth - spring-social-login - spring-spel - spring-state-machine - spring-thymeleaf - spring-userservice - spring-zuul - spring-remoting - spring-reactor - spring-vertx - spring-vault - spring-jinq - spring-rest-embedded-tomcat - testing-modules/testing - testing-modules/testng - video-tutorials + + parent-boot-1 + parent-boot-2 + parent-spring-4 + parent-spring-5 + parent-java + parent-kotlin + asm + atomix + persistence-modules/apache-cayenne + aws + aws-lambda + akka-streams + algorithms-genetic + algorithms-miscellaneous-1 + algorithms-miscellaneous-2 + algorithms-sorting + annotations + apache-cxf + apache-fop + apache-poi + apache-tika + apache-thrift + apache-curator + apache-zookeeper + apache-opennlp + autovalue + axon + azure + bootique + cdi + java-strings + + core-java-collections + java-collections-conversions + java-collections-maps + core-java-io + core-java-8 + java-streams + core-groovy - xmlunit-2 - struts-2 - apache-velocity - apache-solrj - rabbitmq + couchbase + persistence-modules/deltaspike + dozer + ethereum + feign + flips + testing-modules/groovy-spock + google-cloud + gson + guava + guava-collections + guava-modules/guava-18 + guava-modules/guava-19 + guava-modules/guava-21 + guice + disruptor + spring-static-resources + hazelcast + persistence-modules/hbase - persistence-modules/spring-data-gemfire - mybatis - spring-drools - drools - persistence-modules/liquibase - spring-boot-property-exp - testing-modules/mockserver - testing-modules/test-containers - undertow - vaadin - vertx-and-rxjava - saas - deeplearning4j - lucene - vraptor - persistence-modules/java-cockroachdb - spring-security-thymeleaf - persistence-modules/java-jdbi - jersey - java-spi - performance-tests - twilio - spring-boot-ctx-fluent - java-ee-8-security-api - spring-webflux-amqp - antlr - maven-archetype - apache-meecrowave + hystrix + image-processing + immutables + persistence-modules/influxdb + jackson + vavr + java-lite + java-numbers + java-rmi + java-vavr-stream + javax-servlets + javaxval + jaxb + javafx + jgroups + jee-7 + jee-7-security + jjwt + jsf + json-path + json + jsoup + jta + testing-modules/junit-5 + testing-modules/junit5-migration + jws + libraries-data + linkrest + logging-modules/log-mdc + logging-modules/log4j + + logging-modules/logback + lombok + mapstruct + + maven + mesos-marathon + msf4j + testing-modules/mockito + testing-modules/mockito-2 + testing-modules/mocks + mustache + mvn-wrapper + noexception + persistence-modules/orientdb + osgi + orika + patterns + pdf + protobuffer + persistence-modules/querydsl + reactor-core + persistence-modules/redis + testing-modules/rest-assured + testing-modules/rest-testing + resteasy + rxjava + rxjava-2 + spring-swagger-codegen + testing-modules/selenium-junit-testng + persistence-modules/solr + spark-java + spring-4 + spring-5-data-reactive + spring-5-reactive + spring-5-reactive-security + spring-5-reactive-client + spring-5-mvc + spring-5-security + spring-activiti + spring-akka + spring-amqp + spring-all + spring-amqp-simple + spring-apache-camel + spring-batch + spring-bom + spring-boot-keycloak + spring-boot-bootstrap + spring-boot-admin + spring-boot-camel + persistence-modules/spring-boot-persistence + spring-boot-security + spring-boot-mvc + spring-boot-logging-log4j2 + spring-boot-disable-console-logging + spring-cloud-data-flow + spring-cloud + spring-cloud-bus + spring-core + spring-cucumber + spring-ejb + spring-aop + + persistence-modules/spring-data-dynamodb + persistence-modules/spring-data-keyvalue + persistence-modules/spring-data-mongodb + persistence-modules/spring-data-neo4j + + spring-data-rest + persistence-modules/spring-data-solr + spring-dispatcher-servlet + spring-exceptions + spring-freemarker + persistence-modules/spring-hibernate-3 + + persistence-modules/spring-hibernate-5 + persistence-modules/spring-data-eclipselink + spring-integration + spring-jenkins-pipeline + spring-jersey + + spring-jms + spring-jooq + persistence-modules/spring-jpa + spring-kafka + spring-katharsis + spring-ldap + spring-mockito + spring-mvc-forms-jsp + spring-mvc-forms-thymeleaf + spring-mvc-java + spring-mvc-velocity + spring-mvc-webflow + spring-mvc-xml + spring-mvc-kotlin + spring-protobuf + spring-quartz + spring-rest-angular + spring-rest-full + spring-rest-query-language + spring-rest + spring-resttemplate + spring-rest-simple + spring-security-acl + spring-security-cache-control + spring-security-client/spring-security-jsp-authentication + spring-security-client/spring-security-jsp-authorize + spring-security-client/spring-security-jsp-config + spring-security-client/spring-security-mvc + spring-security-client/spring-security-thymeleaf-authentication + spring-security-client/spring-security-thymeleaf-authorize + spring-security-client/spring-security-thymeleaf-config + spring-security-core + spring-security-mvc-boot + spring-security-mvc-digest-auth + spring-security-mvc-ldap + spring-security-mvc-login + spring-security-mvc-persisted-remember-me + spring-security-mvc-session + spring-security-mvc-socket + spring-security-openid + + spring-security-rest-basic-auth + spring-security-rest-custom + spring-security-rest + spring-security-sso + spring-security-x509 + spring-session + spring-sleuth + spring-social-login + spring-spel + spring-state-machine + spring-thymeleaf + spring-userservice + spring-zuul + spring-remoting + spring-reactor + spring-vertx + spring-vault + spring-jinq + spring-rest-embedded-tomcat + testing-modules/testing + testing-modules/testng + video-tutorials + + xmlunit-2 + struts-2 + apache-velocity + apache-solrj + rabbitmq + + persistence-modules/spring-data-gemfire + mybatis + spring-drools + drools + persistence-modules/liquibase + spring-boot-property-exp + testing-modules/mockserver + testing-modules/test-containers + undertow + vaadin + vertx-and-rxjava + saas + deeplearning4j + lucene + vraptor + persistence-modules/java-cockroachdb + spring-security-thymeleaf + persistence-modules/java-jdbi + jersey + java-spi + performance-tests + twilio + spring-boot-ctx-fluent + java-ee-8-security-api + spring-webflux-amqp + antlr + maven-archetype + apache-meecrowave persistence-modules/spring-hibernate4 xml @@ -1535,28 +1545,28 @@ persistence-modules/spring-data-redis jmeter - --> + --> - - + + --> - + - + integration-heavy @@ -1566,28 +1576,15 @@ org.apache.maven.plugins maven-surefire-plugin - - - integration-test - - test - - - - **/*ManualTest.java - **/*LiveTest.java - - - **/*IntegrationTest.java - **/*IntTest.java - - - - - - json - + + **/*ManualTest.java + **/*LiveTest.java + + + **/*IntegrationTest.java + **/*IntTest.java + @@ -1641,12 +1638,15 @@ false false + 4.12 1.3 2.21.0 + 1.7.21 1.1.7 + 2.21.0 3.7.0 From 6634c0e100736c18d8c355692b42e2245883c324 Mon Sep 17 00:00:00 2001 From: geroza Date: Sat, 10 Nov 2018 12:55:07 -0200 Subject: [PATCH 049/119] 6 - Sixth commit to split core-java module. This commit includes: * fixiing failing unit tests, moving required resources to new modules --- {core-java => core-java-lang}/src/main/resources/file.txt | 0 .../src/test/resources/correctFileNameWithoutProperExtension | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename {core-java => core-java-lang}/src/main/resources/file.txt (100%) rename {core-java => core-java-lang}/src/test/resources/correctFileNameWithoutProperExtension (100%) diff --git a/core-java/src/main/resources/file.txt b/core-java-lang/src/main/resources/file.txt similarity index 100% rename from core-java/src/main/resources/file.txt rename to core-java-lang/src/main/resources/file.txt diff --git a/core-java/src/test/resources/correctFileNameWithoutProperExtension b/core-java-lang/src/test/resources/correctFileNameWithoutProperExtension similarity index 100% rename from core-java/src/test/resources/correctFileNameWithoutProperExtension rename to core-java-lang/src/test/resources/correctFileNameWithoutProperExtension From 2380a4abaddf7e48113320ea95edcbbc69b52be9 Mon Sep 17 00:00:00 2001 From: geroza Date: Sat, 10 Nov 2018 13:25:10 -0200 Subject: [PATCH 050/119] 7- Seventh commit for splitting core-java module task. This commit includes: * Cleaning core-java-lang pom * Cleaning core-java-arrays pom * Fixing core-java artifact version, not using property --- core-java-arrays/pom.xml | 143 +----------------- .../com/baeldung/array/ArrayInitializer.java | 2 +- core-java-lang/pom.xml | 126 +-------------- .../baeldung/deepcopy/DeepCopyUnitTest.java | 2 +- core-java/pom.xml | 4 +- 5 files changed, 13 insertions(+), 264 deletions(-) diff --git a/core-java-arrays/pom.xml b/core-java-arrays/pom.xml index 36dcc09341..d2d0453e87 100644 --- a/core-java-arrays/pom.xml +++ b/core-java-arrays/pom.xml @@ -15,44 +15,11 @@ - - commons-io - commons-io - ${commons-io.version} - org.apache.commons commons-lang3 ${commons-lang3.version} - - org.bouncycastle - bcprov-jdk15on - ${bouncycastle.version} - - - org.unix4j - unix4j-command - ${unix4j.version} - - - com.googlecode.grep4j - grep4j - ${grep4j.version} - - - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - - - com.google.code.gson - gson - ${gson.version} - - log4j log4j @@ -63,12 +30,6 @@ log4j-over-slf4j ${org.slf4j.version} - - org.projectlombok - lombok - ${lombok.version} - provided - org.assertj @@ -76,42 +37,6 @@ ${assertj-core.version} test - - - commons-codec - commons-codec - ${commons-codec.version} - - - org.javamoney - moneta - ${javamoney.moneta.version} - - - org.owasp.esapi - esapi - ${esapi.version} - - - com.sun.messaging.mq - fscontext - ${fscontext.version} - - - com.codepoetics - protonpack - ${protonpack.version} - - - one.util - streamex - ${streamex.version} - - - io.vavr - vavr - ${vavr.version} - org.openjdk.jmh jmh-core @@ -127,40 +52,6 @@ spring-web ${springframework.spring-web.version} - - com.h2database - h2 - ${h2database.version} - - - javax.mail - mail - ${javax.mail.version} - - - - org.apache.tika - tika-core - ${tika.version} - - - net.sf.jmimemagic - jmimemagic - ${jmime-magic.version} - - - - org.javassist - javassist - ${javaassist.version} - - - com.sun - tools - 1.8.0 - system - ${java.home}/../lib/tools.jar - @@ -496,52 +387,26 @@ - - - 2.8.5 - 2.8.2 3.8.1 - 1.55 - 1.10 - 2.5 - 3.6.1 - 1.0.3 - 0.4 - 1.8.7 1.16.12 - 4.6-b01 - 1.13 - 0.6.5 - 0.9.0 + + 1.19 + 1.19 3.10.0 - + 2.21.0 4.3.4.RELEASE - - 1.1 - 1.4.197 - 2.1.0.1 - 1.19 - - 1.19 3.0.0-M1 - 1.5.0-b01 3.0.2 1.4.4 3.1.1 2.0.3.RELEASE 1.6.0 - 61.1 - - 1.18 - 0.1.5 - - 3.21.0-GA diff --git a/core-java-arrays/src/main/java/com/baeldung/array/ArrayInitializer.java b/core-java-arrays/src/main/java/com/baeldung/array/ArrayInitializer.java index 0ba6c342d9..d2b0428904 100644 --- a/core-java-arrays/src/main/java/com/baeldung/array/ArrayInitializer.java +++ b/core-java-arrays/src/main/java/com/baeldung/array/ArrayInitializer.java @@ -2,7 +2,7 @@ package com.baeldung.array; import java.util.Arrays; -import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang3.ArrayUtils; public class ArrayInitializer { diff --git a/core-java-lang/pom.xml b/core-java-lang/pom.xml index b13b279a03..ace39de274 100644 --- a/core-java-lang/pom.xml +++ b/core-java-lang/pom.xml @@ -15,31 +15,11 @@ - - commons-io - commons-io - ${commons-io.version} - org.apache.commons commons-lang3 ${commons-lang3.version} - - org.bouncycastle - bcprov-jdk15on - ${bouncycastle.version} - - - org.unix4j - unix4j-command - ${unix4j.version} - - - com.googlecode.grep4j - grep4j - ${grep4j.version} - @@ -76,91 +56,16 @@ ${assertj-core.version} test - - - commons-codec - commons-codec - ${commons-codec.version} - - - org.javamoney - moneta - ${javamoney.moneta.version} - - - org.owasp.esapi - esapi - ${esapi.version} - - - com.sun.messaging.mq - fscontext - ${fscontext.version} - - - com.codepoetics - protonpack - ${protonpack.version} - - - one.util - streamex - ${streamex.version} - - - io.vavr - vavr - ${vavr.version} - - - org.openjdk.jmh - jmh-core - ${jmh-core.version} - - - org.openjdk.jmh - jmh-generator-annprocess - ${jmh-generator-annprocess.version} - org.springframework spring-web ${springframework.spring-web.version} - - com.h2database - h2 - ${h2database.version} - javax.mail mail ${javax.mail.version} - - - org.apache.tika - tika-core - ${tika.version} - - - net.sf.jmimemagic - jmimemagic - ${jmime-magic.version} - - - - org.javassist - javassist - ${javaassist.version} - - - com.sun - tools - 1.8.0 - system - ${java.home}/../lib/tools.jar - @@ -503,45 +408,22 @@ 3.5 - 1.55 - 1.10 - 2.5 - 3.6.1 - 1.0.3 - 0.4 - 1.8.7 1.16.12 - 4.6-b01 - 1.13 - 0.6.5 - 0.9.0 - + + 1.5.0-b01 + 3.10.0 - + 2.21.0 4.3.4.RELEASE - - 1.1 - 1.4.197 - 2.1.0.1 - 1.19 - - 1.19 3.0.0-M1 - 1.5.0-b01 3.0.2 1.4.4 3.1.1 2.0.3.RELEASE 1.6.0 - 61.1 - - 1.18 - 0.1.5 - - 3.21.0-GA diff --git a/core-java-lang/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java b/core-java-lang/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java index 196b69fbf7..d6b1cd90b9 100644 --- a/core-java-lang/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java +++ b/core-java-lang/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java @@ -4,7 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; -import org.apache.commons.lang.SerializationUtils; +import org.apache.commons.lang3.SerializationUtils; import org.junit.Ignore; import org.junit.Test; diff --git a/core-java/pom.xml b/core-java/pom.xml index 477a01375d..2106b45fab 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -157,7 +157,7 @@ com.sun tools - 1.8.0 + ${sun.tools.version} system ${java.home}/../lib/tools.jar @@ -542,6 +542,8 @@ 0.1.5 3.21.0-GA + + 1.8.0 From 4e5302ddf52b5d44a077317cc6121699c648cf33 Mon Sep 17 00:00:00 2001 From: geroza Date: Sat, 10 Nov 2018 15:59:49 -0200 Subject: [PATCH 051/119] 8- Eighth commit to split core-java. This commit includes: * Creating core-java-lang and core-java-arrays README files * Cleaning core-java README file --- core-java-arrays/README.md | 15 +++++++++ core-java-lang/README.md | 59 +++++++++++++++++++++++++++++++++ core-java/README.md | 67 -------------------------------------- 3 files changed, 74 insertions(+), 67 deletions(-) create mode 100644 core-java-arrays/README.md create mode 100644 core-java-lang/README.md diff --git a/core-java-arrays/README.md b/core-java-arrays/README.md new file mode 100644 index 0000000000..bda2cf90bf --- /dev/null +++ b/core-java-arrays/README.md @@ -0,0 +1,15 @@ +========= + +## Core Java Arrays Cookbooks and Examples + +### Relevant Articles: +- [How to Copy an Array in Java](http://www.baeldung.com/java-array-copy) +- [Check if a Java Array Contains a Value](http://www.baeldung.com/java-array-contains-value) +- [Initializing Arrays in Java](http://www.baeldung.com/java-initialize-array) +- [Guide to the java.util.Arrays Class](http://www.baeldung.com/java-util-arrays) +- [Jagged Arrays In Java](http://www.baeldung.com/java-jagged-arrays) +- [Find Sum and Average in a Java Array](http://www.baeldung.com/java-array-sum-average) +- [Arrays in Java: A Reference Guide](https://www.baeldung.com/java-arrays-guide) +- [How to Invert an Array in Java](http://www.baeldung.com/java-invert-array) +- [Array Operations in Java](http://www.baeldung.com/java-common-array-operations) + diff --git a/core-java-lang/README.md b/core-java-lang/README.md new file mode 100644 index 0000000000..85312cba68 --- /dev/null +++ b/core-java-lang/README.md @@ -0,0 +1,59 @@ +========= + +## Core Java Lang Cookbooks and Examples + +### Relevant Articles: +- [Guide to Java Reflection](http://www.baeldung.com/java-reflection) +- [Introduction to Java Generics](http://www.baeldung.com/java-generics) +- [Generate equals() and hashCode() with Eclipse](http://www.baeldung.com/java-eclipse-equals-and-hashcode) +- [Chained Exceptions in Java](http://www.baeldung.com/java-chained-exceptions) +- [Java Primitive Conversions](http://www.baeldung.com/java-primitive-conversions) +- [Call Methods at Runtime Using Java Reflection](http://www.baeldung.com/java-method-reflection) +- [Iterating Over Enum Values in Java](http://www.baeldung.com/java-enum-iteration) +- [Changing Annotation Parameters At Runtime](http://www.baeldung.com/java-reflection-change-annotation-params) +- [Dynamic Proxies in Java](http://www.baeldung.com/java-dynamic-proxies) +- [Java Double Brace Initialization](http://www.baeldung.com/java-double-brace-initialization) +- [Guide to hashCode() in Java](http://www.baeldung.com/java-hashcode) +- [Guide to the Diamond Operator in Java](http://www.baeldung.com/java-diamond-operator) +- [A Guide to the Static Keyword in Java](http://www.baeldung.com/java-static) +- [Quick Example - Comparator vs Comparable in Java](http://www.baeldung.com/java-comparator-comparable) +- [The Java continue and break Keywords](http://www.baeldung.com/java-continue-and-break) +- [A Guide to Java Initialization](http://www.baeldung.com/java-initialization) +- [Nested Classes in Java](http://www.baeldung.com/java-nested-classes) +- [A Guide to Java Loops](http://www.baeldung.com/java-loops) +- [Varargs in Java](http://www.baeldung.com/java-varargs) +- [A Guide to Inner Interfaces in Java](http://www.baeldung.com/java-inner-interfaces) +- [Polymorphism in Java](http://www.baeldung.com/java-polymorphism) +- [Recursion In Java](http://www.baeldung.com/java-recursion) +- [A Guide to the finalize Method in Java](http://www.baeldung.com/java-finalize) +- [Method Overloading and Overriding in Java](http://www.baeldung.com/java-method-overload-override) +- [How to Make a Deep Copy of an Object in Java](http://www.baeldung.com/java-deep-copy) +- [Guide to Inheritance in Java](http://www.baeldung.com/java-inheritance) +- [Object Type Casting in Java](http://www.baeldung.com/java-type-casting) +- [The "final" Keyword in Java](http://www.baeldung.com/java-final) +- [A Guide to Java Enums](http://www.baeldung.com/a-guide-to-java-enums) +- [Infinite Loops in Java](http://www.baeldung.com/infinite-loops-java) +- [Quick Guide to java.lang.System](http://www.baeldung.com/java-lang-system) +- [Type Erasure in Java Explained](http://www.baeldung.com/java-type-erasure) +- [Using Java Assertions](http://www.baeldung.com/java-assert) +- [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) +- [ClassNotFoundException vs NoClassDefFoundError](http://www.baeldung.com/java-classnotfoundexception-and-noclassdeffounderror) +- [The StackOverflowError in Java](http://www.baeldung.com/java-stack-overflow-error) +- [Create a Custom Exception in Java](http://www.baeldung.com/java-new-custom-exception) +- [Exception Handling in Java](http://www.baeldung.com/java-exceptions) +- [Differences Between Final, Finally and Finalize in Java](https://www.baeldung.com/java-final-finally-finalize) +- [Static and Dynamic Binding in Java](https://www.baeldung.com/java-static-dynamic-binding) +- [Difference Between Throw and Throws in Java](https://www.baeldung.com/java-throw-throws) +- [Synthetic Constructs in Java](https://www.baeldung.com/java-synthetic) +- [Java Switch Statement](https://www.baeldung.com/java-switch) +- [The Modulo Operator in Java](https://www.baeldung.com/modulo-java) +- [Ternary Operator In Java](https://www.baeldung.com/java-ternary-operator) +- [How to Separate Double into Integer and Decimal Parts](https://www.baeldung.com/java-separate-double-into-integer-decimal-parts) +- [“Sneaky Throws” in Java](http://www.baeldung.com/java-sneaky-throws) +- [Inheritance and Composition (Is-a vs Has-a relationship) in Java](http://www.baeldung.com/java-inheritance-composition) + diff --git a/core-java/README.md b/core-java/README.md index 10fbdb87a7..2be137add6 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -6,101 +6,56 @@ - [Java Timer](http://www.baeldung.com/java-timer-and-timertask) - [How to Run a Shell Command in Java](http://www.baeldung.com/run-shell-command-in-java) - [MD5 Hashing in Java](http://www.baeldung.com/java-md5) -- [Guide to Java Reflection](http://www.baeldung.com/java-reflection) - [A Guide to Java Sockets](http://www.baeldung.com/a-guide-to-java-sockets) -- [Java – Try with Resources](http://www.baeldung.com/java-try-with-resources) - [Guide to the Fork/Join Framework in Java](http://www.baeldung.com/java-fork-join) - [How to Print Screen in Java](http://www.baeldung.com/print-screen-in-java) -- [Introduction to Java Generics](http://www.baeldung.com/java-generics) -- [Generate equals() and hashCode() with Eclipse](http://www.baeldung.com/java-eclipse-equals-and-hashcode) - [A Guide To Java Regular Expressions API](http://www.baeldung.com/regular-expressions-java) - [Sorting in Java](http://www.baeldung.com/java-sorting) - [Getting Started with Java Properties](http://www.baeldung.com/java-properties) -- [Grep in Java](http://www.baeldung.com/grep-in-java) - [Pattern Search with Grep in Java](http://www.baeldung.com/grep-in-java) - [URL Encoding and Decoding in Java](http://www.baeldung.com/java-url-encoding-decoding) -- [The Basics of Java Generics](http://www.baeldung.com/java-generics) - [How to Create an Executable JAR with Maven](http://www.baeldung.com/executable-jar-with-maven) - [How to Design a Genetic Algorithm in Java](http://www.baeldung.com/java-genetic-algorithm) - [Basic Introduction to JMX](http://www.baeldung.com/java-management-extensions) - [AWS Lambda With Java](http://www.baeldung.com/java-aws-lambda) - [Introduction to Nashorn](http://www.baeldung.com/java-nashorn) -- [Chained Exceptions in Java](http://www.baeldung.com/java-chained-exceptions) -- [Java Primitive Conversions](http://www.baeldung.com/java-primitive-conversions) - [Java Money and the Currency API](http://www.baeldung.com/java-money-and-currency) - [JVM Log Forging](http://www.baeldung.com/jvm-log-forging) - [Guide to sun.misc.Unsafe](http://www.baeldung.com/java-unsafe) - [How to Perform a Simple HTTP Request in Java](http://www.baeldung.com/java-http-request) -- [Call Methods at Runtime Using Java Reflection](http://www.baeldung.com/java-method-reflection) - [How to Add a Single Element to a Stream](http://www.baeldung.com/java-stream-append-prepend) -- [Iterating Over Enum Values in Java](http://www.baeldung.com/java-enum-iteration) - [Kotlin Java Interoperability](http://www.baeldung.com/kotlin-java-interoperability) -- [Changing Annotation Parameters At Runtime](http://www.baeldung.com/java-reflection-change-annotation-params) - [How to Find all Getters Returning Null](http://www.baeldung.com/java-getters-returning-null) -- [Changing the Order in a Sum Operation Can Produce Different Results?](http://www.baeldung.com/java-floating-point-sum-order) - [How to Get a Name of a Method Being Executed?](http://www.baeldung.com/java-name-of-executing-method) -- [Dynamic Proxies in Java](http://www.baeldung.com/java-dynamic-proxies) -- [How to Copy an Array in Java](http://www.baeldung.com/java-array-copy) - [Converting a Stack Trace to a String in Java](http://www.baeldung.com/java-stacktrace-to-string) -- [Java Double Brace Initialization](http://www.baeldung.com/java-double-brace-initialization) -- [The StackOverflowError in Java](http://www.baeldung.com/java-stack-overflow-error) - [Introduction to Java Serialization](http://www.baeldung.com/java-serialization) -- [ClassNotFoundException vs NoClassDefFoundError](http://www.baeldung.com/java-classnotfoundexception-and-noclassdeffounderror) - [Guide to UUID in Java](http://www.baeldung.com/java-uuid) - [Guide to Escaping Characters in Java RegExps](http://www.baeldung.com/java-regexp-escape-char) -- [Guide to hashCode() in Java](http://www.baeldung.com/java-hashcode) - [Difference between URL and URI](http://www.baeldung.com/java-url-vs-uri) - [Broadcasting and Multicasting in Java](http://www.baeldung.com/java-broadcast-multicast) - [Period and Duration in Java](http://www.baeldung.com/java-period-duration) -- [Guide to the Diamond Operator in Java](http://www.baeldung.com/java-diamond-operator) -- [“Sneaky Throws” in Java](http://www.baeldung.com/java-sneaky-throws) - [OutOfMemoryError: GC Overhead Limit Exceeded](http://www.baeldung.com/java-gc-overhead-limit-exceeded) - [Creating a Java Compiler Plugin](http://www.baeldung.com/java-build-compiler-plugin) -- [A Guide to the Static Keyword in Java](http://www.baeldung.com/java-static) -- [Initializing Arrays in Java](http://www.baeldung.com/java-initialize-array) -- [Quick Example - Comparator vs Comparable in Java](http://www.baeldung.com/java-comparator-comparable) - [Quick Guide to Java Stack](http://www.baeldung.com/java-stack) -- [The Java continue and break Keywords](http://www.baeldung.com/java-continue-and-break) - [Guide to java.util.Formatter](http://www.baeldung.com/java-string-formatter) -- [Check if a Java Array Contains a Value](http://www.baeldung.com/java-array-contains-value) -- [How to Invert an Array in Java](http://www.baeldung.com/java-invert-array) - [Guide to the Cipher Class](http://www.baeldung.com/java-cipher-class) -- [A Guide to Java Initialization](http://www.baeldung.com/java-initialization) - [Implementing a Binary Tree in Java](http://www.baeldung.com/java-binary-tree) - [A Guide to ThreadLocalRandom in Java](http://www.baeldung.com/java-thread-local-random) -- [Nested Classes in Java](http://www.baeldung.com/java-nested-classes) -- [A Guide to Java Loops](http://www.baeldung.com/java-loops) -- [Varargs in Java](http://www.baeldung.com/java-varargs) -- [A Guide to Inner Interfaces in Java](http://www.baeldung.com/java-inner-interfaces) -- [Polymorphism in Java](http://www.baeldung.com/java-polymorphism) -- [Recursion In Java](http://www.baeldung.com/java-recursion) -- [A Guide to the finalize Method in Java](http://www.baeldung.com/java-finalize) - [Compiling Java *.class Files with javac](http://www.baeldung.com/javac) -- [Method Overloading and Overriding in Java](http://www.baeldung.com/java-method-overload-override) -- [Guide to ThreadLocalRandom in Java](http://www.baeldung.com/java-thread-local-random) - [A Guide to Iterator in Java](http://www.baeldung.com/java-iterator) - [The Trie Data Structure in Java](http://www.baeldung.com/trie-java) - [Introduction to Javadoc](http://www.baeldung.com/javadoc) -- [How to Make a Deep Copy of an Object in Java](http://www.baeldung.com/java-deep-copy) -- [Guide to Inheritance in Java](http://www.baeldung.com/java-inheritance) - [Guide to Externalizable Interface in Java](http://www.baeldung.com/java-externalizable) -- [Object Type Casting in Java](http://www.baeldung.com/java-type-casting) - [A Practical Guide to DecimalFormat](http://www.baeldung.com/java-decimalformat) - [How to Detect the OS Using Java](http://www.baeldung.com/java-detect-os) - [ASCII Art in Java](http://www.baeldung.com/ascii-art-in-java) -- [Inheritance and Composition (Is-a vs Has-a relationship) in Java](http://www.baeldung.com/java-inheritance-composition) - [Finding Max/Min of a List or Collection](http://www.baeldung.com/java-collection-min-max) -- [The "final" Keyword in Java](http://www.baeldung.com/java-final) - [What is the serialVersionUID?](http://www.baeldung.com/java-serial-version-uid) - [A Guide To UDP In Java](http://www.baeldung.com/udp-in-java) - [A Guide to the Java LinkedList](http://www.baeldung.com/java-linkedlist) -- [A Guide to Java Enums](http://www.baeldung.com/a-guide-to-java-enums) - [A Guide to the ResourceBundle](http://www.baeldung.com/java-resourcebundle) -- [Quick Guide to java.lang.System](http://www.baeldung.com/java-lang-system) - [Class Loaders in Java](http://www.baeldung.com/java-classloaders) -- [Find Sum and Average in a Java Array](http://www.baeldung.com/java-array-sum-average) - [Java List UnsupportedOperationException](http://www.baeldung.com/java-list-unsupported-operation-exception) -- [Type Erasure in Java Explained](http://www.baeldung.com/java-type-erasure) - [Join and Split Arrays and Collections in Java](http://www.baeldung.com/java-join-and-split) - [Check If Two Lists are Equal in Java](http://www.baeldung.com/java-test-a-list-for-ordinality-and-equality) - [Sending Emails with Java](http://www.baeldung.com/java-email) @@ -108,12 +63,6 @@ - [Java KeyStore API](http://www.baeldung.com/java-keystore) - [Double-Checked Locking with Singleton](http://www.baeldung.com/java-singleton-double-checked-locking) - [Guide to Java Clock Class](http://www.baeldung.com/java-clock) -- [Infinite Loops in Java](http://www.baeldung.com/infinite-loops-java) -- [Using Java Assertions](http://www.baeldung.com/java-assert) -- [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) -- [Infinite Loops in Java](http://www.baeldung.com/infinite-loops-java) - [Introduction to Creational Design Patterns](http://www.baeldung.com/creational-design-patterns) - [Proxy, Decorator, Adapter and Bridge Patterns](http://www.baeldung.com/java-structural-design-patterns) - [Singletons in Java](http://www.baeldung.com/java-singleton) @@ -121,42 +70,26 @@ - [The Observer Pattern in Java](http://www.baeldung.com/java-observer-pattern) - [Service Locator Pattern](http://www.baeldung.com/java-service-locator-pattern) - [The Thread.join() Method in Java](http://www.baeldung.com/java-thread-join) -- [Guide to the super Java Keyword](http://www.baeldung.com/java-super) -- [Guide to the this Java Keyword](http://www.baeldung.com/java-this) -- [Jagged Arrays In Java](http://www.baeldung.com/java-jagged-arrays) - [Importance of Main Manifest Attribute in a Self-Executing JAR](http://www.baeldung.com/java-jar-executable-manifest-main-class) - [How to Get the File Extension of a File in Java](http://www.baeldung.com/java-file-extension) -- [Immutable Objects in Java](http://www.baeldung.com/java-immutable-object) - [Console I/O in Java](http://www.baeldung.com/java-console-input-output) -- [Guide to the java.util.Arrays Class](http://www.baeldung.com/java-util-arrays) -- [Create a Custom Exception in Java](http://www.baeldung.com/java-new-custom-exception) - [Java Global Exception Handler](http://www.baeldung.com/java-global-exception-handler) - [Encrypting and Decrypting Files in Java](http://www.baeldung.com/java-cipher-input-output-stream) - [How to Get the Size of an Object in Java](http://www.baeldung.com/java-size-of-object) -- [Exception Handling in Java](http://www.baeldung.com/java-exceptions) - [Guide to Java Instrumentation](http://www.baeldung.com/java-instrumentation) - [Getting a File’s Mime Type in Java](http://www.baeldung.com/java-file-mime-type) - [Common Java Exceptions](http://www.baeldung.com/java-common-exceptions) - [Java Constructors vs Static Factory Methods](https://www.baeldung.com/java-constructors-vs-static-factory-methods) -- [Differences Between Final, Finally and Finalize in Java](https://www.baeldung.com/java-final-finally-finalize) -- [Static and Dynamic Binding in Java](https://www.baeldung.com/java-static-dynamic-binding) - [Java List Initialization in One Line](https://www.baeldung.com/java-init-list-one-line) -- [Difference Between Throw and Throws in Java](https://www.baeldung.com/java-throw-throws) - [ClassCastException: Arrays$ArrayList cannot be cast to ArrayList](https://www.baeldung.com/java-classcastexception-arrays-arraylist) - [Throw Exception in Optional in Java 8](https://www.baeldung.com/java-optional-throw-exception) - [Add a Character to a String at a Given Position](https://www.baeldung.com/java-add-character-to-string) -- [Synthetic Constructs in Java](https://www.baeldung.com/java-synthetic) - [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) - [Different Ways to Capture Java Heap Dumps](https://www.baeldung.com/java-heap-dump-capture) -- [How to Separate Double into Integer and Decimal Parts](https://www.baeldung.com/java-separate-double-into-integer-decimal-parts) - [ZoneOffset in Java](https://www.baeldung.com/java-zone-offset) - [Hashing a Password in Java](https://www.baeldung.com/java-password-hashing) -- [Java Switch Statement](https://www.baeldung.com/java-switch) -- [The Modulo Operator in Java](https://www.baeldung.com/modulo-java) -- [Ternary Operator In Java](https://www.baeldung.com/java-ternary-operator) - [Merging java.util.Properties Objects](https://www.baeldung.com/java-merging-properties) - [Understanding Memory Leaks in Java](https://www.baeldung.com/java-memory-leaks) -- [Arrays in Java: A Reference Guide](https://www.baeldung.com/java-arrays-guide) - [A Guide to SimpleDateFormat](https://www.baeldung.com/java-simple-date-format) - [SSL Handshake Failures](https://www.baeldung.com/java-ssl-handshake-failures) From f3e5bc6ee3139b10c5c4bed519ab8f1f4f574e2b Mon Sep 17 00:00:00 2001 From: Marcos Lopez Gonzalez Date: Sat, 10 Nov 2018 19:16:23 +0100 Subject: [PATCH 052/119] persistence unit name --- persistence-modules/java-jpa/src/test/resources/persistence.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-modules/java-jpa/src/test/resources/persistence.xml b/persistence-modules/java-jpa/src/test/resources/persistence.xml index f65f2c7c62..8d744556cd 100644 --- a/persistence-modules/java-jpa/src/test/resources/persistence.xml +++ b/persistence-modules/java-jpa/src/test/resources/persistence.xml @@ -18,7 +18,7 @@ - + org.hibernate.jpa.HibernatePersistenceProvider com.baeldung.jpa.stringcast.DummyEntity From 917ab19240c749107de839382e5cfb41edc4de5c Mon Sep 17 00:00:00 2001 From: Marcos Lopez Gonzalez Date: Sat, 10 Nov 2018 19:17:23 +0100 Subject: [PATCH 053/119] code cleaning --- .../src/test/resources/persistence.xml | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/persistence-modules/java-jpa/src/test/resources/persistence.xml b/persistence-modules/java-jpa/src/test/resources/persistence.xml index 8d744556cd..b6cc51c3b3 100644 --- a/persistence-modules/java-jpa/src/test/resources/persistence.xml +++ b/persistence-modules/java-jpa/src/test/resources/persistence.xml @@ -33,24 +33,5 @@ - - - - com.baeldung.jpa.stringcast.DummyEntity - - - - - - - - - - - - - - - From 4a130b57a7fbdead4c9a09d1eab8fe6a935adbc5 Mon Sep 17 00:00:00 2001 From: geroza Date: Sat, 10 Nov 2018 16:18:46 -0200 Subject: [PATCH 054/119] 9 - ninth commit to split core-java. In this commit: * added core-java-arrays module to the root pom --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index f974e4c743..8af1408de3 100644 --- a/pom.xml +++ b/pom.xml @@ -357,6 +357,7 @@ core-java core-java-lang + core-java-arrays core-java-collections java-collections-conversions java-collections-maps From b286e140b4ce73eafbf6fdc9f508e011c33a7f7d Mon Sep 17 00:00:00 2001 From: amit2103 Date: Sun, 11 Nov 2018 01:07:32 +0530 Subject: [PATCH 055/119] [BAEL-10234] - Move spring-rest-... modules to Boot 2 --- spring-rest-angular/pom.xml | 4 ++-- spring-rest-query-language/pom.xml | 10 ++++++---- .../persistence/dao/MyUserRepository.java | 10 +++++----- .../java/org/baeldung/spring/Application.java | 2 +- spring-rest-shell/pom.xml | 4 ++-- spring-rest-simple/pom.xml | 4 ++-- .../java/org/baeldung/config/Application.java | 2 +- .../java/org/baeldung/config/WebConfig.java | 5 ++--- spring-resttemplate/pom.xml | 4 ++-- .../client/TestRestTemplateBasicLiveTest.java | 19 ++++++++++++------- 10 files changed, 35 insertions(+), 29 deletions(-) diff --git a/spring-rest-angular/pom.xml b/spring-rest-angular/pom.xml index 7aedfa486b..5240ae24e7 100644 --- a/spring-rest-angular/pom.xml +++ b/spring-rest-angular/pom.xml @@ -8,10 +8,10 @@ war - parent-boot-1 + parent-boot-2 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-1 + ../parent-boot-2 diff --git a/spring-rest-query-language/pom.xml b/spring-rest-query-language/pom.xml index 8b24c7b8fb..a06b1a7fc1 100644 --- a/spring-rest-query-language/pom.xml +++ b/spring-rest-query-language/pom.xml @@ -8,10 +8,10 @@ war - parent-boot-1 + parent-boot-2 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-1 + ../parent-boot-2 @@ -149,6 +149,7 @@ org.javassist javassist + ${javassist.version} mysql @@ -349,11 +350,12 @@ 1.4.9 - + 3.21.0-GA + 19.0 3.5 - + 1.6.1 1.1.3 diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/MyUserRepository.java b/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/MyUserRepository.java index 82ae1ee841..327d17e25a 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/MyUserRepository.java +++ b/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/MyUserRepository.java @@ -1,17 +1,17 @@ package org.baeldung.persistence.dao; -import com.querydsl.core.types.dsl.StringExpression; import org.baeldung.persistence.model.MyUser; import org.baeldung.persistence.model.QMyUser; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.querydsl.QueryDslPredicateExecutor; +import org.springframework.data.querydsl.QuerydslPredicateExecutor; import org.springframework.data.querydsl.binding.QuerydslBinderCustomizer; import org.springframework.data.querydsl.binding.QuerydslBindings; - -import com.querydsl.core.types.dsl.StringPath; import org.springframework.data.querydsl.binding.SingleValueBinding; -public interface MyUserRepository extends JpaRepository, QueryDslPredicateExecutor, QuerydslBinderCustomizer { +import com.querydsl.core.types.dsl.StringExpression; +import com.querydsl.core.types.dsl.StringPath; + +public interface MyUserRepository extends JpaRepository, QuerydslPredicateExecutor, QuerydslBinderCustomizer { @Override default public void customize(final QuerydslBindings bindings, final QMyUser root) { bindings.bind(String.class) diff --git a/spring-rest-query-language/src/main/java/org/baeldung/spring/Application.java b/spring-rest-query-language/src/main/java/org/baeldung/spring/Application.java index 7aa9ea5bc3..4a914d947e 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/spring/Application.java +++ b/spring-rest-query-language/src/main/java/org/baeldung/spring/Application.java @@ -7,7 +7,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.web.support.SpringBootServletInitializer; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.annotation.ComponentScan; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.context.request.RequestContextListener; diff --git a/spring-rest-shell/pom.xml b/spring-rest-shell/pom.xml index 7a604946b6..540b3d08eb 100644 --- a/spring-rest-shell/pom.xml +++ b/spring-rest-shell/pom.xml @@ -8,10 +8,10 @@ A simple project to demonstrate Spring REST Shell features. - parent-boot-1 + parent-boot-2 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-1 + ../parent-boot-2 diff --git a/spring-rest-simple/pom.xml b/spring-rest-simple/pom.xml index d39e3a43c1..f592fef237 100644 --- a/spring-rest-simple/pom.xml +++ b/spring-rest-simple/pom.xml @@ -8,10 +8,10 @@ war - parent-boot-1 + parent-boot-2 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-1 + ../parent-boot-2 diff --git a/spring-rest-simple/src/main/java/org/baeldung/config/Application.java b/spring-rest-simple/src/main/java/org/baeldung/config/Application.java index 3a98da82c9..5c9a186619 100644 --- a/spring-rest-simple/src/main/java/org/baeldung/config/Application.java +++ b/spring-rest-simple/src/main/java/org/baeldung/config/Application.java @@ -3,7 +3,7 @@ package org.baeldung.config; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.support.SpringBootServletInitializer; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.annotation.ComponentScan; @EnableAutoConfiguration diff --git a/spring-rest-simple/src/main/java/org/baeldung/config/WebConfig.java b/spring-rest-simple/src/main/java/org/baeldung/config/WebConfig.java index 309a36609a..191b87a8f2 100644 --- a/spring-rest-simple/src/main/java/org/baeldung/config/WebConfig.java +++ b/spring-rest-simple/src/main/java/org/baeldung/config/WebConfig.java @@ -14,7 +14,7 @@ import org.springframework.http.converter.xml.MarshallingHttpMessageConverter; import org.springframework.oxm.xstream.XStreamMarshaller; import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.text.SimpleDateFormat; import java.util.List; @@ -25,7 +25,7 @@ import java.util.List; @Configuration @EnableWebMvc @ComponentScan({ "org.baeldung.web" }) -public class WebConfig extends WebMvcConfigurerAdapter { +public class WebConfig implements WebMvcConfigurer { public WebConfig() { super(); @@ -48,7 +48,6 @@ public class WebConfig extends WebMvcConfigurerAdapter { messageConverters.add(new ProtobufHttpMessageConverter()); messageConverters.add(new KryoHttpMessageConverter()); messageConverters.add(new StringHttpMessageConverter()); - super.configureMessageConverters(messageConverters); } private HttpMessageConverter createXmlHttpMessageConverter() { diff --git a/spring-resttemplate/pom.xml b/spring-resttemplate/pom.xml index 481104372a..9a0978f120 100644 --- a/spring-resttemplate/pom.xml +++ b/spring-resttemplate/pom.xml @@ -8,10 +8,10 @@ war - parent-boot-1 + parent-boot-2 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-1 + ../parent-boot-2 diff --git a/spring-resttemplate/src/test/java/org/baeldung/client/TestRestTemplateBasicLiveTest.java b/spring-resttemplate/src/test/java/org/baeldung/client/TestRestTemplateBasicLiveTest.java index 012221efb7..03a76aca74 100644 --- a/spring-resttemplate/src/test/java/org/baeldung/client/TestRestTemplateBasicLiveTest.java +++ b/spring-resttemplate/src/test/java/org/baeldung/client/TestRestTemplateBasicLiveTest.java @@ -1,7 +1,9 @@ package org.baeldung.client; -import okhttp3.Request; -import okhttp3.RequestBody; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.assertTrue; + import org.junit.Before; import org.junit.Test; import org.springframework.boot.test.web.client.TestRestTemplate; @@ -12,9 +14,8 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.Assert.assertTrue; +import okhttp3.Request; +import okhttp3.RequestBody; public class TestRestTemplateBasicLiveTest { @@ -39,7 +40,9 @@ public class TestRestTemplateBasicLiveTest { @Test public void givenRestTemplateWrapper_whenSendGetForEntity_thenStatusOk() { - TestRestTemplate testRestTemplate = new TestRestTemplate(restTemplate); + RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder(); + restTemplateBuilder.configure(restTemplate); + TestRestTemplate testRestTemplate = new TestRestTemplate(restTemplateBuilder); ResponseEntity response = testRestTemplate.getForEntity(FOO_RESOURCE_URL + "/1", String.class); assertThat(response.getStatusCode(), equalTo(HttpStatus.OK)); } @@ -55,7 +58,9 @@ public class TestRestTemplateBasicLiveTest { @Test public void givenRestTemplateWrapperWithCredentials_whenSendGetForEntity_thenStatusOk() { - TestRestTemplate testRestTemplate = new TestRestTemplate(restTemplate, "user", "passwd"); + RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder().basicAuthentication("user", "passwd"); + restTemplateBuilder.configure(restTemplate); + TestRestTemplate testRestTemplate = new TestRestTemplate(restTemplateBuilder); ResponseEntity response = testRestTemplate.getForEntity(URL_SECURED_BY_AUTHENTICATION, String.class); assertThat(response.getStatusCode(), equalTo(HttpStatus.OK)); From 84029b02816c8c76b1a0c69bae2fc20670e7ee64 Mon Sep 17 00:00:00 2001 From: eric-martin Date: Sat, 10 Nov 2018 21:05:53 -0600 Subject: [PATCH 056/119] Fixed Balance < 0 for Insufficient funds --- .../java/com/baeldung/jtademo/services/TellerService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jta/src/main/java/com/baeldung/jtademo/services/TellerService.java b/jta/src/main/java/com/baeldung/jtademo/services/TellerService.java index d3bd80a2ee..f79238e66a 100644 --- a/jta/src/main/java/com/baeldung/jtademo/services/TellerService.java +++ b/jta/src/main/java/com/baeldung/jtademo/services/TellerService.java @@ -25,7 +25,7 @@ public class TellerService { bankAccountService.transfer(fromAccontId, toAccountId, amount); auditService.log(fromAccontId, toAccountId, amount); BigDecimal balance = bankAccountService.balanceOf(fromAccontId); - if (balance.compareTo(BigDecimal.ZERO) <= 0) { + if (balance.compareTo(BigDecimal.ZERO) < 0) { throw new RuntimeException("Insufficient fund."); } } @@ -35,7 +35,7 @@ public class TellerService { bankAccountService.transfer(fromAccontId, toAccountId, amount); auditService.log(fromAccontId, toAccountId, amount); BigDecimal balance = bankAccountService.balanceOf(fromAccontId); - if (balance.compareTo(BigDecimal.ZERO) <= 0) { + if (balance.compareTo(BigDecimal.ZERO) < 0) { userTransaction.rollback(); throw new RuntimeException("Insufficient fund."); } else { From e7d145e4f9b6b8b1f0a656682d35ea7af63107fc Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Sun, 11 Nov 2018 09:28:06 +0200 Subject: [PATCH 057/119] Update and rename SpringCastTest.java to SpringCastTestUnit.java --- .../stringcast/{SpringCastTest.java => SpringCastTestUnit.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/{SpringCastTest.java => SpringCastTestUnit.java} (98%) diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTest.java b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTestUnit.java similarity index 98% rename from persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTest.java rename to persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTestUnit.java index ffe8da9bec..d9c3adef26 100644 --- a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTest.java +++ b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTestUnit.java @@ -11,7 +11,7 @@ import java.util.List; import static org.junit.Assert.assertEquals; -public class SpringCastTest { +public class SpringCastUnitTest { private static EntityManager em; private static EntityManagerFactory emFactory; From f7135b4a403b723017bbd4c4fafbccc182c380be Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Sun, 11 Nov 2018 09:34:07 +0200 Subject: [PATCH 058/119] Rename SpringCastTestUnit.java to SpringCastUnitTest.java --- .../{SpringCastTestUnit.java => SpringCastUnitTest.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/{SpringCastTestUnit.java => SpringCastUnitTest.java} (100%) diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTestUnit.java b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastUnitTest.java similarity index 100% rename from persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastTestUnit.java rename to persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastUnitTest.java From 1d14598c0daddfd504807686f6b19e3af18dec62 Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Sun, 11 Nov 2018 11:43:51 +0200 Subject: [PATCH 059/119] Update README.md --- spring-rest-angular/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-rest-angular/README.md b/spring-rest-angular/README.md index 7ead9442fd..d2c2879649 100644 --- a/spring-rest-angular/README.md +++ b/spring-rest-angular/README.md @@ -2,5 +2,4 @@ ### Relevant Articles: -- [Spring’s RequestBody and ResponseBody Annotations](http://www.baeldung.com/spring-request-response-body) - [Pagination with Spring REST and AngularJS table](http://www.baeldung.com/pagination-with-a-spring-rest-api-and-an-angularjs-table) From a15a0809ec071dfc804fdf13c139ea7b1ec9a8c7 Mon Sep 17 00:00:00 2001 From: "nnhai1991@gmail.com" Date: Sun, 11 Nov 2018 18:24:01 +0800 Subject: [PATCH 060/119] fix java code --- .../src/test/kotlin/com/baeldung/random/RandomStringTest.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt index b47a6ac455..0795cd2a5b 100644 --- a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt +++ b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt @@ -1,5 +1,6 @@ import org.apache.commons.lang3.RandomStringUtils import org.junit.jupiter.api.Test +import java.util.concurrent.ThreadLocalRandom import kotlin.streams.asSequence import kotlin.test.assertEquals @@ -15,7 +16,8 @@ class RandomStringTest { charPool.addAll('A'..'Z'); charPool.addAll('0'..'9'); - var randomString = java.util.Random().ints(STRING_LENGTH.toLong(), 0, charPool.size) + var randomString = ThreadLocalRandom.current() + .ints(STRING_LENGTH.toLong(), 0, charPool.size) .asSequence() .map(charPool::get) .joinToString("") From 129aa9ddc9e71e1845e4ff5d6199a8bc0d01a2d0 Mon Sep 17 00:00:00 2001 From: cror Date: Sun, 11 Nov 2018 16:18:36 +0100 Subject: [PATCH 061/119] BAEL-2365: added 2 further examples with substring and indexOf --- .../java/com/baeldung/string/SubstringUnitTest.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/java-strings/src/test/java/com/baeldung/string/SubstringUnitTest.java b/java-strings/src/test/java/com/baeldung/string/SubstringUnitTest.java index 3a4e231828..eb397f2a3f 100644 --- a/java-strings/src/test/java/com/baeldung/string/SubstringUnitTest.java +++ b/java-strings/src/test/java/com/baeldung/string/SubstringUnitTest.java @@ -59,4 +59,14 @@ public class SubstringUnitTest { Assert.assertEquals("United States of America", text.substring(text.indexOf('(') + 1, text.indexOf(')'))); } + @Test + public void givenAString_whenUsedSubstringWithLastIndexOf_ShouldReturnProperSubstring() { + Assert.assertEquals("1984", text.substring(text.lastIndexOf('-') + 1, text.indexOf('.'))); + } + + @Test + public void givenAString_whenUsedSubstringWithIndexOfAString_ShouldReturnProperSubstring() { + Assert.assertEquals("USA (United States of America)", text.substring(text.indexOf("USA"), text.indexOf(')') + 1)); + } + } From b590fe4a4fbe3b5e280d5939503f771aae5c37d3 Mon Sep 17 00:00:00 2001 From: Tom Hombergs Date: Sun, 11 Nov 2018 16:20:16 +0100 Subject: [PATCH 062/119] added link --- kotlin-libraries/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/kotlin-libraries/README.md b/kotlin-libraries/README.md index 30c4d03ded..b9611043c8 100644 --- a/kotlin-libraries/README.md +++ b/kotlin-libraries/README.md @@ -7,3 +7,4 @@ - [Processing JSON with Kotlin and Klaxson](http://www.baeldung.com/kotlin-json-klaxson) - [Kotlin with Ktor](http://www.baeldung.com/kotlin-ktor) - [Guide to the Kotlin Exposed Framework](https://www.baeldung.com/kotlin-exposed-persistence) +- [Working with Dates in Kotlin](https://www.baeldung.com/kotlin-dates) From a9a50b79f592474c32825ad1f56d99ec6fa13978 Mon Sep 17 00:00:00 2001 From: amit2103 Date: Mon, 12 Nov 2018 01:16:00 +0530 Subject: [PATCH 063/119] [BAEL-10234] - Removed deprecated properties --- spring-rest-full/src/main/resources/application.properties | 2 +- .../src/main/java/org/baeldung/spring/WebConfig.java | 5 ++--- .../src/main/resources/application.properties | 2 +- spring-rest-simple/pom.xml | 4 ++++ spring-rest-simple/src/main/resources/application.properties | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/spring-rest-full/src/main/resources/application.properties b/spring-rest-full/src/main/resources/application.properties index 6c7461f12c..52d93b4cff 100644 --- a/spring-rest-full/src/main/resources/application.properties +++ b/spring-rest-full/src/main/resources/application.properties @@ -1,3 +1,3 @@ server.port=8082 -server.context-path=/spring-rest-full +server.servlet.context-path=/spring-rest-full endpoints.metrics.enabled=true \ No newline at end of file diff --git a/spring-rest-query-language/src/main/java/org/baeldung/spring/WebConfig.java b/spring-rest-query-language/src/main/java/org/baeldung/spring/WebConfig.java index 41711ee1ad..4139c69f95 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/spring/WebConfig.java +++ b/spring-rest-query-language/src/main/java/org/baeldung/spring/WebConfig.java @@ -6,13 +6,13 @@ import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.view.InternalResourceViewResolver; @Configuration @ComponentScan("org.baeldung.web") @EnableWebMvc -public class WebConfig extends WebMvcConfigurerAdapter { +public class WebConfig implements WebMvcConfigurer { public WebConfig() { super(); @@ -29,7 +29,6 @@ public class WebConfig extends WebMvcConfigurerAdapter { // API @Override public void addViewControllers(final ViewControllerRegistry registry) { - super.addViewControllers(registry); registry.addViewController("/homepage.html"); } diff --git a/spring-rest-query-language/src/main/resources/application.properties b/spring-rest-query-language/src/main/resources/application.properties index 01eaee7040..4bbf3ed4fc 100644 --- a/spring-rest-query-language/src/main/resources/application.properties +++ b/spring-rest-query-language/src/main/resources/application.properties @@ -1,2 +1,2 @@ server.port=8082 -server.context-path=/spring-rest-query-language \ No newline at end of file +server.servlet.context-path=/spring-rest-query-language \ No newline at end of file diff --git a/spring-rest-simple/pom.xml b/spring-rest-simple/pom.xml index f592fef237..d301957eb9 100644 --- a/spring-rest-simple/pom.xml +++ b/spring-rest-simple/pom.xml @@ -34,6 +34,10 @@ spring-boot-starter-test test + + org.springframework.boot + spring-boot-starter-web + diff --git a/spring-rest-simple/src/main/resources/application.properties b/spring-rest-simple/src/main/resources/application.properties index 300589f561..dd7e4e2f2d 100644 --- a/spring-rest-simple/src/main/resources/application.properties +++ b/spring-rest-simple/src/main/resources/application.properties @@ -1,2 +1,2 @@ server.port= 8082 -server.context-path=/spring-rest \ No newline at end of file +server.servlet.context-path=/spring-rest \ No newline at end of file From 412136b8dbd85b768c19a2a5fdaf749c96474ecf Mon Sep 17 00:00:00 2001 From: Loredana Date: Sun, 11 Nov 2018 23:33:13 +0200 Subject: [PATCH 064/119] fix boot 2 upgrade, rename package --- .../src/main/resources/application.properties | 2 +- .../src/main/resources/application.properties | 2 +- .../dao/GenericSpecificationsBuilder.java | 17 ++++++----- .../baeldung/persistence/dao/IUserDAO.java | 6 ++-- .../persistence/dao/MyUserPredicate.java | 7 ++--- .../dao/MyUserPredicatesBuilder.java | 5 ++-- .../persistence/dao/MyUserRepository.java | 4 +-- .../baeldung/persistence/dao/UserDAO.java | 7 +++-- .../persistence/dao/UserRepository.java | 5 ++-- .../dao/UserSearchQueryCriteriaConsumer.java | 4 +-- .../persistence/dao/UserSpecification.java | 7 +++-- .../dao/UserSpecificationsBuilder.java | 15 +++++----- .../dao/rsql/CustomRsqlVisitor.java | 2 +- .../dao/rsql/GenericRsqlSpecBuilder.java | 20 ++++++------- .../dao/rsql/GenericRsqlSpecification.java | 2 +- .../dao/rsql/RsqlSearchOperation.java | 2 +- .../baeldung/persistence/model/MyUser.java | 2 +- .../baeldung/persistence/model/User.java | 2 +- .../baeldung/persistence/model/User_.java | 2 +- .../baeldung/spring/Application.java | 2 +- .../baeldung/spring/PersistenceConfig.java | 2 +- .../baeldung/spring/WebConfig.java | 6 +--- .../web/controller/HomeController.java | 2 +- .../web/controller/UserController.java | 28 ++++++++--------- .../RestResponseEntityExceptionHandler.java | 5 ++-- .../MyResourceNotFoundException.java | 2 +- .../baeldung/web/util/CriteriaParser.java | 2 +- .../baeldung/web/util/SearchCriteria.java | 2 +- .../baeldung/web/util/SearchOperation.java | 2 +- .../baeldung/web/util/SpecSearchCriteria.java | 2 +- .../SpringContextIntegrationTest.java | 5 ++-- .../JPACriteriaQueryIntegrationTest.java | 11 +++---- .../query/JPAQuerydslIntegrationTest.java | 11 +++---- .../JPASpecificationIntegrationTest.java | 30 +++++++++---------- .../query/JPASpecificationLiveTest.java | 5 ++-- .../query/RsqlIntegrationTest.java | 11 +++---- .../baeldung/web/MyUserLiveTest.java | 5 ++-- 37 files changed, 125 insertions(+), 121 deletions(-) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/dao/GenericSpecificationsBuilder.java (86%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/dao/IUserDAO.java (52%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/dao/MyUserPredicate.java (92%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/dao/MyUserPredicatesBuilder.java (95%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/dao/MyUserRepository.java (91%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/dao/UserDAO.java (90%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/dao/UserRepository.java (74%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/dao/UserSearchQueryCriteriaConsumer.java (94%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/dao/UserSpecification.java (92%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/dao/UserSpecificationsBuilder.java (81%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/dao/rsql/CustomRsqlVisitor.java (95%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/dao/rsql/GenericRsqlSpecBuilder.java (59%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/dao/rsql/GenericRsqlSpecification.java (98%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/dao/rsql/RsqlSearchOperation.java (95%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/model/MyUser.java (98%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/model/User.java (97%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/persistence/model/User_.java (92%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/spring/Application.java (97%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/spring/PersistenceConfig.java (99%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/spring/WebConfig.java (93%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/web/controller/HomeController.java (87%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/web/controller/UserController.java (87%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/web/error/RestResponseEntityExceptionHandler.java (97%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/web/exception/MyResourceNotFoundException.java (92%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/web/util/CriteriaParser.java (98%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/web/util/SearchCriteria.java (96%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/web/util/SearchOperation.java (93%) rename spring-rest-query-language/src/main/java/{org => com}/baeldung/web/util/SpecSearchCriteria.java (95%) rename spring-rest-query-language/src/test/java/{org => com}/baeldung/SpringContextIntegrationTest.java (85%) rename spring-rest-query-language/src/test/java/{org => com}/baeldung/persistence/query/JPACriteriaQueryIntegrationTest.java (93%) rename spring-rest-query-language/src/test/java/{org => com}/baeldung/persistence/query/JPAQuerydslIntegrationTest.java (93%) rename spring-rest-query-language/src/test/java/{org => com}/baeldung/persistence/query/JPASpecificationIntegrationTest.java (89%) rename spring-rest-query-language/src/test/java/{org => com}/baeldung/persistence/query/JPASpecificationLiveTest.java (95%) rename spring-rest-query-language/src/test/java/{org => com}/baeldung/persistence/query/RsqlIntegrationTest.java (93%) rename spring-rest-query-language/src/test/java/{org => com}/baeldung/web/MyUserLiveTest.java (95%) diff --git a/spring-rest-angular/src/main/resources/application.properties b/spring-rest-angular/src/main/resources/application.properties index e24db89c8f..2571d286a3 100644 --- a/spring-rest-angular/src/main/resources/application.properties +++ b/spring-rest-angular/src/main/resources/application.properties @@ -1,4 +1,4 @@ -server.contextPath=/ +server.servlet.contextPath=/ spring.h2.console.enabled=true logging.level.org.hibernate.SQL=info spring.jpa.hibernate.ddl-auto=none \ No newline at end of file diff --git a/spring-rest-full/src/main/resources/application.properties b/spring-rest-full/src/main/resources/application.properties index 52d93b4cff..6c7461f12c 100644 --- a/spring-rest-full/src/main/resources/application.properties +++ b/spring-rest-full/src/main/resources/application.properties @@ -1,3 +1,3 @@ server.port=8082 -server.servlet.context-path=/spring-rest-full +server.context-path=/spring-rest-full endpoints.metrics.enabled=true \ No newline at end of file diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/GenericSpecificationsBuilder.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/GenericSpecificationsBuilder.java similarity index 86% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/GenericSpecificationsBuilder.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/GenericSpecificationsBuilder.java index 64bab9a435..75fb4456c4 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/GenericSpecificationsBuilder.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/GenericSpecificationsBuilder.java @@ -1,4 +1,4 @@ -package org.baeldung.persistence.dao; +package com.baeldung.persistence.dao; import java.util.ArrayList; import java.util.Collections; @@ -8,10 +8,10 @@ import java.util.List; import java.util.function.Function; import java.util.stream.Collectors; -import org.baeldung.web.util.SearchOperation; -import org.baeldung.web.util.SpecSearchCriteria; import org.springframework.data.jpa.domain.Specification; -import org.springframework.data.jpa.domain.Specifications; + +import com.baeldung.web.util.SearchOperation; +import com.baeldung.web.util.SpecSearchCriteria; public class GenericSpecificationsBuilder { @@ -61,11 +61,12 @@ public class GenericSpecificationsBuilder { for (int idx = 1; idx < specs.size(); idx++) { result = params.get(idx) .isOrPredicate() - ? Specifications.where(result) + ? Specification.where(result) .or(specs.get(idx)) - : Specifications.where(result) + : Specification.where(result) .and(specs.get(idx)); } + return result; } @@ -84,10 +85,10 @@ public class GenericSpecificationsBuilder { Specification operand1 = specStack.pop(); Specification operand2 = specStack.pop(); if (mayBeOperand.equals(SearchOperation.AND_OPERATOR)) - specStack.push(Specifications.where(operand1) + specStack.push(Specification.where(operand1) .and(operand2)); else if (mayBeOperand.equals(SearchOperation.OR_OPERATOR)) - specStack.push(Specifications.where(operand1) + specStack.push(Specification.where(operand1) .or(operand2)); } diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/IUserDAO.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/IUserDAO.java similarity index 52% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/IUserDAO.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/IUserDAO.java index 4e74e94925..4837795792 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/IUserDAO.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/IUserDAO.java @@ -1,9 +1,9 @@ -package org.baeldung.persistence.dao; +package com.baeldung.persistence.dao; import java.util.List; -import org.baeldung.persistence.model.User; -import org.baeldung.web.util.SearchCriteria; +import com.baeldung.persistence.model.User; +import com.baeldung.web.util.SearchCriteria; public interface IUserDAO { List searchUser(List params); diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/MyUserPredicate.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/MyUserPredicate.java similarity index 92% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/MyUserPredicate.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/MyUserPredicate.java index 5dd4cdd17e..0c3a4a51f9 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/MyUserPredicate.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/MyUserPredicate.java @@ -1,8 +1,7 @@ -package org.baeldung.persistence.dao; - -import org.baeldung.persistence.model.MyUser; -import org.baeldung.web.util.SearchCriteria; +package com.baeldung.persistence.dao; +import com.baeldung.persistence.model.MyUser; +import com.baeldung.web.util.SearchCriteria; import com.querydsl.core.types.dsl.BooleanExpression; import com.querydsl.core.types.dsl.NumberPath; import com.querydsl.core.types.dsl.PathBuilder; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/MyUserPredicatesBuilder.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/MyUserPredicatesBuilder.java similarity index 95% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/MyUserPredicatesBuilder.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/MyUserPredicatesBuilder.java index 7be37c7155..6aad1a3bab 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/MyUserPredicatesBuilder.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/MyUserPredicatesBuilder.java @@ -1,12 +1,11 @@ -package org.baeldung.persistence.dao; +package com.baeldung.persistence.dao; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; -import org.baeldung.web.util.SearchCriteria; - +import com.baeldung.web.util.SearchCriteria; import com.querydsl.core.types.dsl.BooleanExpression; import com.querydsl.core.types.dsl.Expressions; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/MyUserRepository.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/MyUserRepository.java similarity index 91% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/MyUserRepository.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/MyUserRepository.java index 327d17e25a..0f04d084c3 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/MyUserRepository.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/MyUserRepository.java @@ -1,6 +1,5 @@ -package org.baeldung.persistence.dao; +package com.baeldung.persistence.dao; -import org.baeldung.persistence.model.MyUser; import org.baeldung.persistence.model.QMyUser; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.querydsl.QuerydslPredicateExecutor; @@ -8,6 +7,7 @@ import org.springframework.data.querydsl.binding.QuerydslBinderCustomizer; import org.springframework.data.querydsl.binding.QuerydslBindings; import org.springframework.data.querydsl.binding.SingleValueBinding; +import com.baeldung.persistence.model.MyUser; import com.querydsl.core.types.dsl.StringExpression; import com.querydsl.core.types.dsl.StringPath; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/UserDAO.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/UserDAO.java similarity index 90% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/UserDAO.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/UserDAO.java index 4f2f6003e4..6bc899176a 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/UserDAO.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/UserDAO.java @@ -1,4 +1,4 @@ -package org.baeldung.persistence.dao; +package com.baeldung.persistence.dao; import java.util.List; @@ -9,10 +9,11 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.baeldung.persistence.model.User; -import org.baeldung.web.util.SearchCriteria; import org.springframework.stereotype.Repository; +import com.baeldung.persistence.model.User; +import com.baeldung.web.util.SearchCriteria; + @Repository public class UserDAO implements IUserDAO { diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/UserRepository.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/UserRepository.java similarity index 74% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/UserRepository.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/UserRepository.java index de7acf60d5..1a7eda07ed 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/UserRepository.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/UserRepository.java @@ -1,9 +1,10 @@ -package org.baeldung.persistence.dao; +package com.baeldung.persistence.dao; -import org.baeldung.persistence.model.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import com.baeldung.persistence.model.User; + public interface UserRepository extends JpaRepository, JpaSpecificationExecutor { } diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/UserSearchQueryCriteriaConsumer.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/UserSearchQueryCriteriaConsumer.java similarity index 94% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/UserSearchQueryCriteriaConsumer.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/UserSearchQueryCriteriaConsumer.java index 8b15ef1605..a3e619ad21 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/UserSearchQueryCriteriaConsumer.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/UserSearchQueryCriteriaConsumer.java @@ -1,4 +1,4 @@ -package org.baeldung.persistence.dao; +package com.baeldung.persistence.dao; import java.util.function.Consumer; @@ -6,7 +6,7 @@ import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.baeldung.web.util.SearchCriteria; +import com.baeldung.web.util.SearchCriteria; public class UserSearchQueryCriteriaConsumer implements Consumer{ diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/UserSpecification.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/UserSpecification.java similarity index 92% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/UserSpecification.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/UserSpecification.java index b2d9394500..928e75aea7 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/UserSpecification.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/UserSpecification.java @@ -1,9 +1,10 @@ -package org.baeldung.persistence.dao; +package com.baeldung.persistence.dao; -import org.baeldung.persistence.model.User; -import org.baeldung.web.util.SpecSearchCriteria; import org.springframework.data.jpa.domain.Specification; +import com.baeldung.persistence.model.User; +import com.baeldung.web.util.SpecSearchCriteria; + import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/UserSpecificationsBuilder.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/UserSpecificationsBuilder.java similarity index 81% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/UserSpecificationsBuilder.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/UserSpecificationsBuilder.java index 28097d500a..72d7274226 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/UserSpecificationsBuilder.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/UserSpecificationsBuilder.java @@ -1,14 +1,13 @@ -package org.baeldung.persistence.dao; +package com.baeldung.persistence.dao; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; -import org.baeldung.persistence.model.User; -import org.baeldung.web.util.SearchOperation; -import org.baeldung.web.util.SpecSearchCriteria; import org.springframework.data.jpa.domain.Specification; -import org.springframework.data.jpa.domain.Specifications; + +import com.baeldung.persistence.model.User; +import com.baeldung.web.util.SearchOperation; +import com.baeldung.web.util.SpecSearchCriteria; public final class UserSpecificationsBuilder { @@ -52,8 +51,8 @@ public final class UserSpecificationsBuilder { for (int i = 1; i < params.size(); i++) { result = params.get(i).isOrPredicate() - ? Specifications.where(result).or(new UserSpecification(params.get(i))) - : Specifications.where(result).and(new UserSpecification(params.get(i))); + ? Specification.where(result).or(new UserSpecification(params.get(i))) + : Specification.where(result).and(new UserSpecification(params.get(i))); } return result; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/rsql/CustomRsqlVisitor.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/rsql/CustomRsqlVisitor.java similarity index 95% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/rsql/CustomRsqlVisitor.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/rsql/CustomRsqlVisitor.java index 89cec89951..9c399e97ed 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/rsql/CustomRsqlVisitor.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/rsql/CustomRsqlVisitor.java @@ -1,4 +1,4 @@ -package org.baeldung.persistence.dao.rsql; +package com.baeldung.persistence.dao.rsql; import org.springframework.data.jpa.domain.Specification; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecBuilder.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/rsql/GenericRsqlSpecBuilder.java similarity index 59% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecBuilder.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/rsql/GenericRsqlSpecBuilder.java index ce5a4410b9..e81e9ab916 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecBuilder.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/rsql/GenericRsqlSpecBuilder.java @@ -1,10 +1,10 @@ -package org.baeldung.persistence.dao.rsql; +package com.baeldung.persistence.dao.rsql; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; -import org.springframework.data.jpa.domain.Specifications; +import org.springframework.data.jpa.domain.Specification; import cz.jirutka.rsql.parser.ast.ComparisonNode; import cz.jirutka.rsql.parser.ast.LogicalNode; @@ -13,7 +13,7 @@ import cz.jirutka.rsql.parser.ast.Node; public class GenericRsqlSpecBuilder { - public Specifications createSpecification(final Node node) { + public Specification createSpecification(final Node node) { if (node instanceof LogicalNode) { return createSpecification((LogicalNode) node); } @@ -23,31 +23,31 @@ public class GenericRsqlSpecBuilder { return null; } - public Specifications createSpecification(final LogicalNode logicalNode) { + public Specification createSpecification(final LogicalNode logicalNode) { - List> specs = logicalNode.getChildren() + List> specs = logicalNode.getChildren() .stream() .map(node -> createSpecification(node)) .filter(Objects::nonNull) .collect(Collectors.toList()); - Specifications result = specs.get(0); + Specification result = specs.get(0); if (logicalNode.getOperator() == LogicalOperator.AND) { for (int i = 1; i < specs.size(); i++) { - result = Specifications.where(result).and(specs.get(i)); + result = Specification.where(result).and(specs.get(i)); } } else if (logicalNode.getOperator() == LogicalOperator.OR) { for (int i = 1; i < specs.size(); i++) { - result = Specifications.where(result).or(specs.get(i)); + result = Specification.where(result).or(specs.get(i)); } } return result; } - public Specifications createSpecification(final ComparisonNode comparisonNode) { - return Specifications.where(new GenericRsqlSpecification(comparisonNode.getSelector(), comparisonNode.getOperator(), comparisonNode.getArguments())); + public Specification createSpecification(final ComparisonNode comparisonNode) { + return Specification.where(new GenericRsqlSpecification(comparisonNode.getSelector(), comparisonNode.getOperator(), comparisonNode.getArguments())); } } diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecification.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/rsql/GenericRsqlSpecification.java similarity index 98% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecification.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/rsql/GenericRsqlSpecification.java index 8055e959a6..87a46d4a85 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecification.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/rsql/GenericRsqlSpecification.java @@ -1,4 +1,4 @@ -package org.baeldung.persistence.dao.rsql; +package com.baeldung.persistence.dao.rsql; import java.util.List; import java.util.stream.Collectors; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/rsql/RsqlSearchOperation.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/rsql/RsqlSearchOperation.java similarity index 95% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/rsql/RsqlSearchOperation.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/rsql/RsqlSearchOperation.java index 673e78fbb4..81441fa609 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/dao/rsql/RsqlSearchOperation.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/rsql/RsqlSearchOperation.java @@ -1,4 +1,4 @@ -package org.baeldung.persistence.dao.rsql; +package com.baeldung.persistence.dao.rsql; import cz.jirutka.rsql.parser.ast.ComparisonOperator; import cz.jirutka.rsql.parser.ast.RSQLOperators; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/model/MyUser.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/model/MyUser.java similarity index 98% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/model/MyUser.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/model/MyUser.java index 9a7bb4da3d..f3b9dc3810 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/model/MyUser.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/model/MyUser.java @@ -1,4 +1,4 @@ -package org.baeldung.persistence.model; +package com.baeldung.persistence.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/model/User.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/model/User.java similarity index 97% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/model/User.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/model/User.java index 670d4a2e74..dbc2b9360f 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/model/User.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/model/User.java @@ -1,4 +1,4 @@ -package org.baeldung.persistence.model; +package com.baeldung.persistence.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/persistence/model/User_.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/model/User_.java similarity index 92% rename from spring-rest-query-language/src/main/java/org/baeldung/persistence/model/User_.java rename to spring-rest-query-language/src/main/java/com/baeldung/persistence/model/User_.java index b705c51ff8..c101b1d9b3 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/persistence/model/User_.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/model/User_.java @@ -1,4 +1,4 @@ -package org.baeldung.persistence.model; +package com.baeldung.persistence.model; import javax.persistence.metamodel.SingularAttribute; import javax.persistence.metamodel.StaticMetamodel; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/spring/Application.java b/spring-rest-query-language/src/main/java/com/baeldung/spring/Application.java similarity index 97% rename from spring-rest-query-language/src/main/java/org/baeldung/spring/Application.java rename to spring-rest-query-language/src/main/java/com/baeldung/spring/Application.java index 4a914d947e..83b3795084 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/spring/Application.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/spring/Application.java @@ -1,4 +1,4 @@ -package org.baeldung.spring; +package com.baeldung.spring; import javax.servlet.ServletContext; import javax.servlet.ServletException; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/spring/PersistenceConfig.java b/spring-rest-query-language/src/main/java/com/baeldung/spring/PersistenceConfig.java similarity index 99% rename from spring-rest-query-language/src/main/java/org/baeldung/spring/PersistenceConfig.java rename to spring-rest-query-language/src/main/java/com/baeldung/spring/PersistenceConfig.java index f3a87b189e..ea64cfae50 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/spring/PersistenceConfig.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/spring/PersistenceConfig.java @@ -1,4 +1,4 @@ -package org.baeldung.spring; +package com.baeldung.spring; import java.util.Properties; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/spring/WebConfig.java b/spring-rest-query-language/src/main/java/com/baeldung/spring/WebConfig.java similarity index 93% rename from spring-rest-query-language/src/main/java/org/baeldung/spring/WebConfig.java rename to spring-rest-query-language/src/main/java/com/baeldung/spring/WebConfig.java index 4139c69f95..2fac559ada 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/spring/WebConfig.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/spring/WebConfig.java @@ -1,4 +1,4 @@ -package org.baeldung.spring; +package com.baeldung.spring; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; @@ -14,10 +14,6 @@ import org.springframework.web.servlet.view.InternalResourceViewResolver; @EnableWebMvc public class WebConfig implements WebMvcConfigurer { - public WebConfig() { - super(); - } - @Bean public ViewResolver viewResolver() { final InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); diff --git a/spring-rest-query-language/src/main/java/org/baeldung/web/controller/HomeController.java b/spring-rest-query-language/src/main/java/com/baeldung/web/controller/HomeController.java similarity index 87% rename from spring-rest-query-language/src/main/java/org/baeldung/web/controller/HomeController.java rename to spring-rest-query-language/src/main/java/com/baeldung/web/controller/HomeController.java index 9c4d14cae3..c82911211a 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/web/controller/HomeController.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/web/controller/HomeController.java @@ -1,4 +1,4 @@ -package org.baeldung.web.controller; +package com.baeldung.web.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/web/controller/UserController.java b/spring-rest-query-language/src/main/java/com/baeldung/web/controller/UserController.java similarity index 87% rename from spring-rest-query-language/src/main/java/org/baeldung/web/controller/UserController.java rename to spring-rest-query-language/src/main/java/com/baeldung/web/controller/UserController.java index 8953a52a1b..101231c7ab 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/web/controller/UserController.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/web/controller/UserController.java @@ -1,23 +1,10 @@ -package org.baeldung.web.controller; +package com.baeldung.web.controller; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.baeldung.persistence.dao.GenericSpecificationsBuilder; -import org.baeldung.persistence.dao.IUserDAO; -import org.baeldung.persistence.dao.MyUserPredicatesBuilder; -import org.baeldung.persistence.dao.MyUserRepository; -import org.baeldung.persistence.dao.UserRepository; -import org.baeldung.persistence.dao.UserSpecification; -import org.baeldung.persistence.dao.UserSpecificationsBuilder; -import org.baeldung.persistence.dao.rsql.CustomRsqlVisitor; -import org.baeldung.persistence.model.MyUser; -import org.baeldung.persistence.model.User; -import org.baeldung.web.util.CriteriaParser; -import org.baeldung.web.util.SearchCriteria; -import org.baeldung.web.util.SearchOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.jpa.domain.Specification; import org.springframework.data.querydsl.binding.QuerydslPredicate; @@ -31,6 +18,19 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; +import com.baeldung.persistence.dao.GenericSpecificationsBuilder; +import com.baeldung.persistence.dao.IUserDAO; +import com.baeldung.persistence.dao.MyUserPredicatesBuilder; +import com.baeldung.persistence.dao.MyUserRepository; +import com.baeldung.persistence.dao.UserRepository; +import com.baeldung.persistence.dao.UserSpecification; +import com.baeldung.persistence.dao.UserSpecificationsBuilder; +import com.baeldung.persistence.dao.rsql.CustomRsqlVisitor; +import com.baeldung.persistence.model.MyUser; +import com.baeldung.persistence.model.User; +import com.baeldung.web.util.CriteriaParser; +import com.baeldung.web.util.SearchCriteria; +import com.baeldung.web.util.SearchOperation; import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import com.querydsl.core.types.Predicate; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/web/error/RestResponseEntityExceptionHandler.java b/spring-rest-query-language/src/main/java/com/baeldung/web/error/RestResponseEntityExceptionHandler.java similarity index 97% rename from spring-rest-query-language/src/main/java/org/baeldung/web/error/RestResponseEntityExceptionHandler.java rename to spring-rest-query-language/src/main/java/com/baeldung/web/error/RestResponseEntityExceptionHandler.java index b593116c4a..b30f435ee4 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/web/error/RestResponseEntityExceptionHandler.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/web/error/RestResponseEntityExceptionHandler.java @@ -1,8 +1,7 @@ -package org.baeldung.web.error; +package com.baeldung.web.error; import javax.persistence.EntityNotFoundException; -import org.baeldung.web.exception.MyResourceNotFoundException; import org.hibernate.exception.ConstraintViolationException; import org.springframework.dao.DataAccessException; import org.springframework.dao.DataIntegrityViolationException; @@ -17,6 +16,8 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.context.request.WebRequest; import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; +import com.baeldung.web.exception.MyResourceNotFoundException; + @ControllerAdvice public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler { diff --git a/spring-rest-query-language/src/main/java/org/baeldung/web/exception/MyResourceNotFoundException.java b/spring-rest-query-language/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java similarity index 92% rename from spring-rest-query-language/src/main/java/org/baeldung/web/exception/MyResourceNotFoundException.java rename to spring-rest-query-language/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java index 14b61f9832..fd002efc28 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/web/exception/MyResourceNotFoundException.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java @@ -1,4 +1,4 @@ -package org.baeldung.web.exception; +package com.baeldung.web.exception; public final class MyResourceNotFoundException extends RuntimeException { diff --git a/spring-rest-query-language/src/main/java/org/baeldung/web/util/CriteriaParser.java b/spring-rest-query-language/src/main/java/com/baeldung/web/util/CriteriaParser.java similarity index 98% rename from spring-rest-query-language/src/main/java/org/baeldung/web/util/CriteriaParser.java rename to spring-rest-query-language/src/main/java/com/baeldung/web/util/CriteriaParser.java index a72d07f440..26bfb7a78d 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/web/util/CriteriaParser.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/web/util/CriteriaParser.java @@ -1,4 +1,4 @@ -package org.baeldung.web.util; +package com.baeldung.web.util; import java.util.Arrays; import java.util.Collections; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/web/util/SearchCriteria.java b/spring-rest-query-language/src/main/java/com/baeldung/web/util/SearchCriteria.java similarity index 96% rename from spring-rest-query-language/src/main/java/org/baeldung/web/util/SearchCriteria.java rename to spring-rest-query-language/src/main/java/com/baeldung/web/util/SearchCriteria.java index cbe1fe539e..75ecefb653 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/web/util/SearchCriteria.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/web/util/SearchCriteria.java @@ -1,4 +1,4 @@ -package org.baeldung.web.util; +package com.baeldung.web.util; public class SearchCriteria { diff --git a/spring-rest-query-language/src/main/java/org/baeldung/web/util/SearchOperation.java b/spring-rest-query-language/src/main/java/com/baeldung/web/util/SearchOperation.java similarity index 93% rename from spring-rest-query-language/src/main/java/org/baeldung/web/util/SearchOperation.java rename to spring-rest-query-language/src/main/java/com/baeldung/web/util/SearchOperation.java index db2c0133cf..acc9e0c0a8 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/web/util/SearchOperation.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/web/util/SearchOperation.java @@ -1,4 +1,4 @@ -package org.baeldung.web.util; +package com.baeldung.web.util; public enum SearchOperation { EQUALITY, NEGATION, GREATER_THAN, LESS_THAN, LIKE, STARTS_WITH, ENDS_WITH, CONTAINS; diff --git a/spring-rest-query-language/src/main/java/org/baeldung/web/util/SpecSearchCriteria.java b/spring-rest-query-language/src/main/java/com/baeldung/web/util/SpecSearchCriteria.java similarity index 95% rename from spring-rest-query-language/src/main/java/org/baeldung/web/util/SpecSearchCriteria.java rename to spring-rest-query-language/src/main/java/com/baeldung/web/util/SpecSearchCriteria.java index 3435ff3342..73b690673b 100644 --- a/spring-rest-query-language/src/main/java/org/baeldung/web/util/SpecSearchCriteria.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/web/util/SpecSearchCriteria.java @@ -1,4 +1,4 @@ -package org.baeldung.web.util; +package com.baeldung.web.util; public class SpecSearchCriteria { diff --git a/spring-rest-query-language/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-rest-query-language/src/test/java/com/baeldung/SpringContextIntegrationTest.java similarity index 85% rename from spring-rest-query-language/src/test/java/org/baeldung/SpringContextIntegrationTest.java rename to spring-rest-query-language/src/test/java/com/baeldung/SpringContextIntegrationTest.java index 35939c992f..18fabce5ca 100644 --- a/spring-rest-query-language/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ b/spring-rest-query-language/src/test/java/com/baeldung/SpringContextIntegrationTest.java @@ -1,11 +1,12 @@ -package org.baeldung; +package com.baeldung; -import org.baeldung.spring.Application; 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 { diff --git a/spring-rest-query-language/src/test/java/org/baeldung/persistence/query/JPACriteriaQueryIntegrationTest.java b/spring-rest-query-language/src/test/java/com/baeldung/persistence/query/JPACriteriaQueryIntegrationTest.java similarity index 93% rename from spring-rest-query-language/src/test/java/org/baeldung/persistence/query/JPACriteriaQueryIntegrationTest.java rename to spring-rest-query-language/src/test/java/com/baeldung/persistence/query/JPACriteriaQueryIntegrationTest.java index e8e98074c6..6caabef628 100644 --- a/spring-rest-query-language/src/test/java/org/baeldung/persistence/query/JPACriteriaQueryIntegrationTest.java +++ b/spring-rest-query-language/src/test/java/com/baeldung/persistence/query/JPACriteriaQueryIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung.persistence.query; +package com.baeldung.persistence.query; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.collection.IsIn.isIn; @@ -7,10 +7,6 @@ import static org.hamcrest.core.IsNot.not; import java.util.ArrayList; import java.util.List; -import org.baeldung.persistence.dao.IUserDAO; -import org.baeldung.persistence.model.User; -import org.baeldung.spring.PersistenceConfig; -import org.baeldung.web.util.SearchCriteria; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -20,6 +16,11 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; +import com.baeldung.persistence.dao.IUserDAO; +import com.baeldung.persistence.model.User; +import com.baeldung.spring.PersistenceConfig; +import com.baeldung.web.util.SearchCriteria; + @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { PersistenceConfig.class }) @Transactional diff --git a/spring-rest-query-language/src/test/java/org/baeldung/persistence/query/JPAQuerydslIntegrationTest.java b/spring-rest-query-language/src/test/java/com/baeldung/persistence/query/JPAQuerydslIntegrationTest.java similarity index 93% rename from spring-rest-query-language/src/test/java/org/baeldung/persistence/query/JPAQuerydslIntegrationTest.java rename to spring-rest-query-language/src/test/java/com/baeldung/persistence/query/JPAQuerydslIntegrationTest.java index d397c3aac4..c4c5d23ab5 100644 --- a/spring-rest-query-language/src/test/java/org/baeldung/persistence/query/JPAQuerydslIntegrationTest.java +++ b/spring-rest-query-language/src/test/java/com/baeldung/persistence/query/JPAQuerydslIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung.persistence.query; +package com.baeldung.persistence.query; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.collection.IsEmptyIterable.emptyIterable; @@ -6,10 +6,6 @@ import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInA import static org.hamcrest.collection.IsIterableContainingInOrder.contains; import static org.hamcrest.core.IsNot.not; -import org.baeldung.persistence.dao.MyUserPredicatesBuilder; -import org.baeldung.persistence.dao.MyUserRepository; -import org.baeldung.persistence.model.MyUser; -import org.baeldung.spring.PersistenceConfig; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -19,6 +15,11 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; +import com.baeldung.persistence.dao.MyUserPredicatesBuilder; +import com.baeldung.persistence.dao.MyUserRepository; +import com.baeldung.persistence.model.MyUser; +import com.baeldung.spring.PersistenceConfig; + @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { PersistenceConfig.class }) @Transactional diff --git a/spring-rest-query-language/src/test/java/org/baeldung/persistence/query/JPASpecificationIntegrationTest.java b/spring-rest-query-language/src/test/java/com/baeldung/persistence/query/JPASpecificationIntegrationTest.java similarity index 89% rename from spring-rest-query-language/src/test/java/org/baeldung/persistence/query/JPASpecificationIntegrationTest.java rename to spring-rest-query-language/src/test/java/com/baeldung/persistence/query/JPASpecificationIntegrationTest.java index d9ae95c876..707426769e 100644 --- a/spring-rest-query-language/src/test/java/org/baeldung/persistence/query/JPASpecificationIntegrationTest.java +++ b/spring-rest-query-language/src/test/java/com/baeldung/persistence/query/JPASpecificationIntegrationTest.java @@ -1,25 +1,25 @@ -package org.baeldung.persistence.query; +package com.baeldung.persistence.query; -import org.baeldung.persistence.dao.GenericSpecificationsBuilder; -import org.baeldung.persistence.dao.UserRepository; -import org.baeldung.persistence.dao.UserSpecification; -import org.baeldung.persistence.dao.UserSpecificationsBuilder; -import org.baeldung.persistence.model.User; -import org.baeldung.spring.PersistenceConfig; -import org.baeldung.web.util.CriteriaParser; -import org.baeldung.web.util.SearchOperation; -import org.baeldung.web.util.SpecSearchCriteria; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.jpa.domain.Specification; -import org.springframework.data.jpa.domain.Specifications; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; +import com.baeldung.persistence.dao.GenericSpecificationsBuilder; +import com.baeldung.persistence.dao.UserRepository; +import com.baeldung.persistence.dao.UserSpecification; +import com.baeldung.persistence.dao.UserSpecificationsBuilder; +import com.baeldung.persistence.model.User; +import com.baeldung.spring.PersistenceConfig; +import com.baeldung.web.util.CriteriaParser; +import com.baeldung.web.util.SearchOperation; +import com.baeldung.web.util.SpecSearchCriteria; + import java.util.List; import java.util.function.Function; @@ -71,7 +71,7 @@ public class JPASpecificationIntegrationTest { public void givenFirstAndLastName_whenGettingListOfUsers_thenCorrect() { final UserSpecification spec = new UserSpecification(new SpecSearchCriteria("firstName", SearchOperation.EQUALITY, "john")); final UserSpecification spec1 = new UserSpecification(new SpecSearchCriteria("lastName", SearchOperation.EQUALITY, "doe")); - final List results = repository.findAll(Specifications + final List results = repository.findAll(Specification .where(spec) .and(spec1)); @@ -127,7 +127,7 @@ public class JPASpecificationIntegrationTest { @Test public void givenFirstNameInverse_whenGettingListOfUsers_thenCorrect() { final UserSpecification spec = new UserSpecification(new SpecSearchCriteria("firstName", SearchOperation.NEGATION, "john")); - final List results = repository.findAll(Specifications.where(spec)); + final List results = repository.findAll(Specification.where(spec)); assertThat(userTom, isIn(results)); assertThat(userJohn, not(isIn(results))); @@ -136,7 +136,7 @@ public class JPASpecificationIntegrationTest { @Test public void givenMinAge_whenGettingListOfUsers_thenCorrect() { final UserSpecification spec = new UserSpecification(new SpecSearchCriteria("age", SearchOperation.GREATER_THAN, "25")); - final List results = repository.findAll(Specifications.where(spec)); + final List results = repository.findAll(Specification.where(spec)); assertThat(userTom, isIn(results)); assertThat(userJohn, not(isIn(results))); } @@ -170,7 +170,7 @@ public class JPASpecificationIntegrationTest { public void givenAgeRange_whenGettingListOfUsers_thenCorrect() { final UserSpecification spec = new UserSpecification(new SpecSearchCriteria("age", SearchOperation.GREATER_THAN, "20")); final UserSpecification spec1 = new UserSpecification(new SpecSearchCriteria("age", SearchOperation.LESS_THAN, "25")); - final List results = repository.findAll(Specifications + final List results = repository.findAll(Specification .where(spec) .and(spec1)); diff --git a/spring-rest-query-language/src/test/java/org/baeldung/persistence/query/JPASpecificationLiveTest.java b/spring-rest-query-language/src/test/java/com/baeldung/persistence/query/JPASpecificationLiveTest.java similarity index 95% rename from spring-rest-query-language/src/test/java/org/baeldung/persistence/query/JPASpecificationLiveTest.java rename to spring-rest-query-language/src/test/java/com/baeldung/persistence/query/JPASpecificationLiveTest.java index 044029c679..ad6a4259e7 100644 --- a/spring-rest-query-language/src/test/java/org/baeldung/persistence/query/JPASpecificationLiveTest.java +++ b/spring-rest-query-language/src/test/java/com/baeldung/persistence/query/JPASpecificationLiveTest.java @@ -1,15 +1,16 @@ -package org.baeldung.persistence.query; +package com.baeldung.persistence.query; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import io.restassured.RestAssured; import io.restassured.response.Response; -import org.baeldung.persistence.model.User; import org.junit.Before; import org.junit.Test; import org.springframework.test.context.ActiveProfiles; +import com.baeldung.persistence.model.User; + //@RunWith(SpringJUnit4ClassRunner.class) //@ContextConfiguration(classes = { ConfigTest.class, // PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) diff --git a/spring-rest-query-language/src/test/java/org/baeldung/persistence/query/RsqlIntegrationTest.java b/spring-rest-query-language/src/test/java/com/baeldung/persistence/query/RsqlIntegrationTest.java similarity index 93% rename from spring-rest-query-language/src/test/java/org/baeldung/persistence/query/RsqlIntegrationTest.java rename to spring-rest-query-language/src/test/java/com/baeldung/persistence/query/RsqlIntegrationTest.java index 16dfa8a12f..b7b454892a 100644 --- a/spring-rest-query-language/src/test/java/org/baeldung/persistence/query/RsqlIntegrationTest.java +++ b/spring-rest-query-language/src/test/java/com/baeldung/persistence/query/RsqlIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung.persistence.query; +package com.baeldung.persistence.query; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.collection.IsIn.isIn; @@ -6,10 +6,6 @@ import static org.hamcrest.core.IsNot.not; import java.util.List; -import org.baeldung.persistence.dao.UserRepository; -import org.baeldung.persistence.dao.rsql.CustomRsqlVisitor; -import org.baeldung.persistence.model.User; -import org.baeldung.spring.PersistenceConfig; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -20,6 +16,11 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; +import com.baeldung.persistence.dao.UserRepository; +import com.baeldung.persistence.dao.rsql.CustomRsqlVisitor; +import com.baeldung.persistence.model.User; +import com.baeldung.spring.PersistenceConfig; + import cz.jirutka.rsql.parser.RSQLParser; import cz.jirutka.rsql.parser.ast.Node; diff --git a/spring-rest-query-language/src/test/java/org/baeldung/web/MyUserLiveTest.java b/spring-rest-query-language/src/test/java/com/baeldung/web/MyUserLiveTest.java similarity index 95% rename from spring-rest-query-language/src/test/java/org/baeldung/web/MyUserLiveTest.java rename to spring-rest-query-language/src/test/java/com/baeldung/web/MyUserLiveTest.java index a478016280..1d74ff1982 100644 --- a/spring-rest-query-language/src/test/java/org/baeldung/web/MyUserLiveTest.java +++ b/spring-rest-query-language/src/test/java/com/baeldung/web/MyUserLiveTest.java @@ -1,14 +1,15 @@ -package org.baeldung.web; +package com.baeldung.web; import static org.junit.Assert.assertEquals; import io.restassured.RestAssured; import io.restassured.response.Response; import io.restassured.specification.RequestSpecification; -import org.baeldung.persistence.model.MyUser; import org.junit.Test; import org.springframework.test.context.ActiveProfiles; +import com.baeldung.persistence.model.MyUser; + @ActiveProfiles("test") public class MyUserLiveTest { From 31db2a41ec84abe6130954a1103928f9ebd98d26 Mon Sep 17 00:00:00 2001 From: Loredana Date: Sun, 11 Nov 2018 23:46:12 +0200 Subject: [PATCH 065/119] fix package modif --- spring-rest-query-language/pom.xml | 1 - .../java/com/baeldung/persistence/dao/MyUserRepository.java | 2 +- .../src/main/java/com/baeldung/spring/Application.java | 2 +- .../main/java/com/baeldung/spring/PersistenceConfig.java | 6 +++--- .../src/main/java/com/baeldung/spring/WebConfig.java | 2 +- .../src/main/resources/springDataPersistenceConfig.xml | 2 +- spring-rest-query-language/src/main/webapp/WEB-INF/web.xml | 2 +- 7 files changed, 8 insertions(+), 9 deletions(-) diff --git a/spring-rest-query-language/pom.xml b/spring-rest-query-language/pom.xml index a06b1a7fc1..792af328ce 100644 --- a/spring-rest-query-language/pom.xml +++ b/spring-rest-query-language/pom.xml @@ -1,7 +1,6 @@ 4.0.0 - com.baeldung spring-rest-query-language 0.1-SNAPSHOT spring-rest-query-language diff --git a/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/MyUserRepository.java b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/MyUserRepository.java index 0f04d084c3..3be361e85a 100644 --- a/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/MyUserRepository.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/persistence/dao/MyUserRepository.java @@ -1,6 +1,6 @@ package com.baeldung.persistence.dao; -import org.baeldung.persistence.model.QMyUser; +import com.baeldung.persistence.model.QMyUser; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.querydsl.QuerydslPredicateExecutor; import org.springframework.data.querydsl.binding.QuerydslBinderCustomizer; diff --git a/spring-rest-query-language/src/main/java/com/baeldung/spring/Application.java b/spring-rest-query-language/src/main/java/com/baeldung/spring/Application.java index 83b3795084..371377021a 100644 --- a/spring-rest-query-language/src/main/java/com/baeldung/spring/Application.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/spring/Application.java @@ -19,7 +19,7 @@ import org.springframework.web.context.request.RequestContextListener; */ @EnableScheduling @EnableAutoConfiguration -@ComponentScan("org.baeldung") +@ComponentScan("com.baeldung") @SpringBootApplication public class Application extends SpringBootServletInitializer { diff --git a/spring-rest-query-language/src/main/java/com/baeldung/spring/PersistenceConfig.java b/spring-rest-query-language/src/main/java/com/baeldung/spring/PersistenceConfig.java index ea64cfae50..4a4b9eee3f 100644 --- a/spring-rest-query-language/src/main/java/com/baeldung/spring/PersistenceConfig.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/spring/PersistenceConfig.java @@ -24,9 +24,9 @@ import com.google.common.base.Preconditions; @Configuration @EnableTransactionManagement @PropertySource({ "classpath:persistence-${envTarget:h2}.properties" }) -@ComponentScan({ "org.baeldung.persistence" }) +@ComponentScan({ "com.baeldung.persistence" }) // @ImportResource("classpath*:springDataPersistenceConfig.xml") -@EnableJpaRepositories(basePackages = "org.baeldung.persistence.dao") +@EnableJpaRepositories(basePackages = "com.baeldung.persistence.dao") public class PersistenceConfig { @Autowired @@ -40,7 +40,7 @@ public class PersistenceConfig { public LocalContainerEntityManagerFactoryBean entityManagerFactory() { final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); em.setDataSource(dataSource()); - em.setPackagesToScan(new String[] { "org.baeldung.persistence.model" }); + em.setPackagesToScan(new String[] { "com.baeldung.persistence.model" }); final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); // vendorAdapter.set diff --git a/spring-rest-query-language/src/main/java/com/baeldung/spring/WebConfig.java b/spring-rest-query-language/src/main/java/com/baeldung/spring/WebConfig.java index 2fac559ada..f5a5bc4b5e 100644 --- a/spring-rest-query-language/src/main/java/com/baeldung/spring/WebConfig.java +++ b/spring-rest-query-language/src/main/java/com/baeldung/spring/WebConfig.java @@ -10,7 +10,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.view.InternalResourceViewResolver; @Configuration -@ComponentScan("org.baeldung.web") +@ComponentScan("com.baeldung.web") @EnableWebMvc public class WebConfig implements WebMvcConfigurer { diff --git a/spring-rest-query-language/src/main/resources/springDataPersistenceConfig.xml b/spring-rest-query-language/src/main/resources/springDataPersistenceConfig.xml index d6d0ec6e47..5ea2d9c05b 100644 --- a/spring-rest-query-language/src/main/resources/springDataPersistenceConfig.xml +++ b/spring-rest-query-language/src/main/resources/springDataPersistenceConfig.xml @@ -7,6 +7,6 @@ http://www.springframework.org/schema/data/jpa/spring-jpa.xsd" > - + \ No newline at end of file diff --git a/spring-rest-query-language/src/main/webapp/WEB-INF/web.xml b/spring-rest-query-language/src/main/webapp/WEB-INF/web.xml index 4472afd112..23869f5e4e 100644 --- a/spring-rest-query-language/src/main/webapp/WEB-INF/web.xml +++ b/spring-rest-query-language/src/main/webapp/WEB-INF/web.xml @@ -16,7 +16,7 @@ contextConfigLocation - org.baeldung.spring + com.baeldung.spring From d0b060a1dc0b460beb9f108344aa7773c6495dd4 Mon Sep 17 00:00:00 2001 From: Loredana Date: Sun, 11 Nov 2018 23:52:52 +0200 Subject: [PATCH 066/119] update cargo --- spring-rest-query-language/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-rest-query-language/pom.xml b/spring-rest-query-language/pom.xml index 792af328ce..70fea91f31 100644 --- a/spring-rest-query-language/pom.xml +++ b/spring-rest-query-language/pom.xml @@ -356,7 +356,7 @@ 3.5 - 1.6.1 + 1.7.0 1.1.3 From c0a5e019189f805fe069039c84755c03e0927fb5 Mon Sep 17 00:00:00 2001 From: cdjole Date: Mon, 12 Nov 2018 04:44:35 +0100 Subject: [PATCH 067/119] Pad string. (#5669) --- .../string/padding/StringPaddingUtil.java | 34 +++++++++++++ .../padding/StringPaddingUtilUnitTest.java | 50 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 java-strings/src/main/java/com/baeldung/string/padding/StringPaddingUtil.java create mode 100644 java-strings/src/test/java/com/baeldung/string/padding/StringPaddingUtilUnitTest.java diff --git a/java-strings/src/main/java/com/baeldung/string/padding/StringPaddingUtil.java b/java-strings/src/main/java/com/baeldung/string/padding/StringPaddingUtil.java new file mode 100644 index 0000000000..80d05bb42a --- /dev/null +++ b/java-strings/src/main/java/com/baeldung/string/padding/StringPaddingUtil.java @@ -0,0 +1,34 @@ +package com.baeldung.string.padding; + +public class StringPaddingUtil { + + public static String padLeftSpaces(String inputString, int length) { + if (inputString.length() >= length) { + return inputString; + } + StringBuilder sb = new StringBuilder(); + while (sb.length() < length - inputString.length()) { + sb.append(' '); + } + sb.append(inputString); + + return sb.toString(); + } + + public static String padLeft(String inputString, int length) { + if (inputString.length() >= length) { + return inputString; + } + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < length; i++) { + sb.append(' '); + } + return sb.substring(inputString.length()) + inputString; + } + + public static String padLeftZeros(String inputString, int length) { + return String + .format("%1$" + length + "s", inputString) + .replace(' ', '0'); + } +} diff --git a/java-strings/src/test/java/com/baeldung/string/padding/StringPaddingUtilUnitTest.java b/java-strings/src/test/java/com/baeldung/string/padding/StringPaddingUtilUnitTest.java new file mode 100644 index 0000000000..f6a077a88e --- /dev/null +++ b/java-strings/src/test/java/com/baeldung/string/padding/StringPaddingUtilUnitTest.java @@ -0,0 +1,50 @@ +package com.baeldung.string.padding; + +import com.google.common.base.Strings; +import org.apache.commons.lang3.StringUtils; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class StringPaddingUtilUnitTest { + + String inputString = "123456"; + String expectedPaddedStringSpaces = " 123456"; + String expectedPaddedStringZeros = "0000123456"; + int minPaddedStringLength = 10; + + @Test + public void givenString_whenPaddingWithSpaces_thenStringPaddedMatches() { + assertEquals(expectedPaddedStringSpaces, StringPaddingUtil.padLeftSpaces(inputString, minPaddedStringLength)); + } + + @Test + public void givenString_whenPaddingWithSpacesUsingSubstring_thenStringPaddedMatches() { + assertEquals(expectedPaddedStringSpaces, StringPaddingUtil.padLeft(inputString, minPaddedStringLength)); + } + + @Test + public void givenString_whenPaddingWithZeros_thenStringPaddedMatches() { + assertEquals(expectedPaddedStringZeros, StringPaddingUtil.padLeftZeros(inputString, minPaddedStringLength)); + } + + @Test + public void givenString_whenPaddingWithSpacesUsingStringUtils_thenStringPaddedMatches() { + assertEquals(expectedPaddedStringSpaces, StringUtils.leftPad(inputString, minPaddedStringLength)); + } + + @Test + public void givenString_whenPaddingWithZerosUsingStringUtils_thenStringPaddedMatches() { + assertEquals(expectedPaddedStringZeros, StringUtils.leftPad(inputString, minPaddedStringLength, "0")); + } + + @Test + public void givenString_whenPaddingWithSpacesUsingGuavaStrings_thenStringPaddedMatches() { + assertEquals(expectedPaddedStringSpaces, Strings.padStart(inputString, minPaddedStringLength, ' ')); + } + + @Test + public void givenString_whenPaddingWithZerosUsingGuavaStrings_thenStringPaddedMatches() { + assertEquals(expectedPaddedStringZeros, Strings.padStart(inputString, minPaddedStringLength, '0')); + } +} From d81cb4a874a7c3ce8dfbb288bf08ae4c460912f7 Mon Sep 17 00:00:00 2001 From: Ekaterina Galkina Date: Mon, 12 Nov 2018 14:57:44 +0500 Subject: [PATCH 068/119] renaming interface --- .../PublishSubscibeChannelExample.java | 27 ++++++------------ .../RouteToRecipientsExample.java | 16 ++--------- .../separateflows/SeparateFlowsExample.java | 28 ++++--------------- .../subflowchannel/FilterExample.java | 25 ++++------------- .../subflowmapping/RouterExample.java | 21 ++++---------- 5 files changed, 29 insertions(+), 88 deletions(-) diff --git a/spring-integration/src/main/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscibeChannelExample.java b/spring-integration/src/main/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscibeChannelExample.java index ad1535da6f..e26f938632 100644 --- a/spring-integration/src/main/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscibeChannelExample.java +++ b/spring-integration/src/main/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscibeChannelExample.java @@ -16,13 +16,10 @@ import org.springframework.integration.dsl.IntegrationFlow; @EnableIntegration @IntegrationComponentScan public class PublishSubscibeChannelExample { - @MessagingGateway - public interface I { - + public interface NumbersClassifier { @Gateway(requestChannel = "flow.input") - void flow(Collection is); - + void flow(Collection numbers); } @Bean @@ -43,30 +40,24 @@ public class PublishSubscibeChannelExample { @Bean public IntegrationFlow flow() { return flow -> flow.split() - .publishSubscribeChannel(s -> - s.subscribe(f -> f. filter(p -> p % 3 == 0).channel("multipleof3Channel")) - .subscribe(f -> f. filter(p -> p % 3 == 1).channel("remainderIs1Channel")) - .subscribe(f -> f. filter(p -> p % 3 == 2).channel("remainderIs2Channel")) - ); + .publishSubscribeChannel(s -> s.subscribe(f -> f. filter(p -> p % 3 == 0) + .channel("multipleof3Channel")) + .subscribe(f -> f. filter(p -> p % 3 == 1) + .channel("remainderIs1Channel")) + .subscribe(f -> f. filter(p -> p % 3 == 2) + .channel("remainderIs2Channel"))); } public static void main(String[] args) { final ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(PublishSubscibeChannelExample.class); - DirectChannel multipleof3Channel = ctx.getBean("multipleof3Channel", DirectChannel.class); multipleof3Channel.subscribe(x -> System.out.println("multipleof3Channel: " + x)); - DirectChannel remainderIs1Channel = ctx.getBean("remainderIs1Channel", DirectChannel.class); remainderIs1Channel.subscribe(x -> System.out.println("remainderIs1Channel: " + x)); - DirectChannel remainderIs2Channel = ctx.getBean("remainderIs2Channel", DirectChannel.class); remainderIs2Channel.subscribe(x -> System.out.println("remainderIs2Channel: " + x)); - - ctx.getBean(I.class) + ctx.getBean(NumbersClassifier.class) .flow(Arrays.asList(1, 2, 3, 4, 5, 6)); - ctx.close(); - } - } diff --git a/spring-integration/src/main/java/com/baeldung/subflows/routeToRecipients/RouteToRecipientsExample.java b/spring-integration/src/main/java/com/baeldung/subflows/routeToRecipients/RouteToRecipientsExample.java index c22072b1ff..04fdb87dfa 100644 --- a/spring-integration/src/main/java/com/baeldung/subflows/routeToRecipients/RouteToRecipientsExample.java +++ b/spring-integration/src/main/java/com/baeldung/subflows/routeToRecipients/RouteToRecipientsExample.java @@ -16,13 +16,10 @@ import org.springframework.integration.dsl.IntegrationFlow; @EnableIntegration @IntegrationComponentScan public class RouteToRecipientsExample { - @MessagingGateway - public interface I { - + public interface NumbersClassifier { @Gateway(requestChannel = "flow.input") - void flow(Collection is); - + void flow(Collection numbers); } @Bean @@ -43,7 +40,6 @@ public class RouteToRecipientsExample { @Bean public IntegrationFlow flow() { return flow -> flow.split() - .routeToRecipients(r -> r. recipient("multipleof3Channel", p -> p % 3 == 0)// filter . recipient("remainderIs1Channel", p -> p % 3 == 1) .recipientFlow(sf -> sf. filter(p -> p % 3 == 2) @@ -52,20 +48,14 @@ public class RouteToRecipientsExample { public static void main(String[] args) { final ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(RouteToRecipientsExample.class); - DirectChannel multipleof3Channel = ctx.getBean("multipleof3Channel", DirectChannel.class); multipleof3Channel.subscribe(x -> System.out.println("multipleof3Channel: " + x)); - DirectChannel remainderIs1Channel = ctx.getBean("remainderIs1Channel", DirectChannel.class); remainderIs1Channel.subscribe(x -> System.out.println("remainderIs1Channel: " + x)); - DirectChannel remainderIs2Channel = ctx.getBean("remainderIs2Channel", DirectChannel.class); remainderIs2Channel.subscribe(x -> System.out.println("remainderIs2Channel: " + x)); - - ctx.getBean(I.class) + ctx.getBean(NumbersClassifier.class) .flow(Arrays.asList(1, 2, 3, 4, 5, 6)); - ctx.close(); - } } \ No newline at end of file diff --git a/spring-integration/src/main/java/com/baeldung/subflows/separateflows/SeparateFlowsExample.java b/spring-integration/src/main/java/com/baeldung/subflows/separateflows/SeparateFlowsExample.java index ccd49affd0..8ed46ead87 100644 --- a/spring-integration/src/main/java/com/baeldung/subflows/separateflows/SeparateFlowsExample.java +++ b/spring-integration/src/main/java/com/baeldung/subflows/separateflows/SeparateFlowsExample.java @@ -16,10 +16,8 @@ import org.springframework.integration.dsl.IntegrationFlow; @EnableIntegration @IntegrationComponentScan public class SeparateFlowsExample { - @MessagingGateway - public interface I { - + public interface NumbersClassifier { @Gateway(requestChannel = "multipleof3Flow.input") void multipleof3(Collection is); @@ -27,8 +25,7 @@ public class SeparateFlowsExample { void remainderIs1(Collection is); @Gateway(requestChannel = "remainderIs2Flow.input") - void remainderIs2(Collection is); - + void remainderIs2(Collection numbers); } @Bean @@ -51,7 +48,6 @@ public class SeparateFlowsExample { return f -> f.split() . filter(p -> p % 3 == 0) .channel("multipleof3Channel"); - } @Bean @@ -59,7 +55,6 @@ public class SeparateFlowsExample { return f -> f.split() . filter(p -> p % 3 == 1) .channel("remainderIs1Channel"); - } @Bean @@ -67,33 +62,22 @@ public class SeparateFlowsExample { return f -> f.split() . filter(p -> p % 3 == 2) .channel("remainderIs2Channel"); - } public static void main(String[] args) { - final ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(SeparateFlowsExample.class); - DirectChannel multipleof3Channel = ctx.getBean("multipleof3Channel", DirectChannel.class); multipleof3Channel.subscribe(x -> System.out.println("multipleof3Channel: " + x)); - DirectChannel remainderIs1Channel = ctx.getBean("remainderIs1Channel", DirectChannel.class); remainderIs1Channel.subscribe(x -> System.out.println("remainderIs1Channel: " + x)); - DirectChannel remainderIs2Channel = ctx.getBean("remainderIs2Channel", DirectChannel.class); remainderIs2Channel.subscribe(x -> System.out.println("remainderIs2Channel: " + x)); - - ctx.getBean(I.class) + ctx.getBean(NumbersClassifier.class) .multipleof3(Arrays.asList(1, 2, 3, 4, 5, 6)); - - ctx.getBean(I.class) + ctx.getBean(NumbersClassifier.class) .remainderIs1(Arrays.asList(1, 2, 3, 4, 5, 6)); - - ctx.getBean(I.class) + ctx.getBean(NumbersClassifier.class) .remainderIs2(Arrays.asList(1, 2, 3, 4, 5, 6)); - ctx.close(); - } - -} +} \ No newline at end of file diff --git a/spring-integration/src/main/java/com/baeldung/subflows/subflowchannel/FilterExample.java b/spring-integration/src/main/java/com/baeldung/subflows/subflowchannel/FilterExample.java index f8034ab5bd..6db3741523 100644 --- a/spring-integration/src/main/java/com/baeldung/subflows/subflowchannel/FilterExample.java +++ b/spring-integration/src/main/java/com/baeldung/subflows/subflowchannel/FilterExample.java @@ -16,13 +16,10 @@ import org.springframework.integration.dsl.IntegrationFlow; @EnableIntegration @IntegrationComponentScan public class FilterExample { - @MessagingGateway - public interface I { - + public interface NumbersClassifier { @Gateway(requestChannel = "flow.input") - void flow(Collection is); - + void flow(Collection numbers); } @Bean @@ -43,33 +40,21 @@ public class FilterExample { @Bean public IntegrationFlow flow() { return flow -> flow.split() - - . filter(x -> x % 3 == 0, sf -> sf.discardFlow(subf -> subf - - . filter(x -> x % 3 == 1, ssf -> ssf.discardChannel("remainderIs2Channel")) - .channel("remainderIs1Channel") - - )) - + . filter(x -> x % 3 == 0, sf -> sf.discardFlow(subf -> subf. filter(x -> x % 3 == 1, ssf -> ssf.discardChannel("remainderIs2Channel")) + .channel("remainderIs1Channel"))) .channel("multipleof3Channel"); } public static void main(String[] args) { final ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(FilterExample.class); - DirectChannel multipleof3Channel = ctx.getBean("multipleof3Channel", DirectChannel.class); multipleof3Channel.subscribe(x -> System.out.println("multipleof3Channel: " + x)); - DirectChannel remainderIs1Channel = ctx.getBean("remainderIs1Channel", DirectChannel.class); remainderIs1Channel.subscribe(x -> System.out.println("remainderIs1Channel: " + x)); - DirectChannel remainderIs2Channel = ctx.getBean("remainderIs2Channel", DirectChannel.class); remainderIs2Channel.subscribe(x -> System.out.println("remainderIs2Channel: " + x)); - - ctx.getBean(I.class) + ctx.getBean(NumbersClassifier.class) .flow(Arrays.asList(1, 2, 3, 4, 5, 6)); - ctx.close(); - } } \ No newline at end of file diff --git a/spring-integration/src/main/java/com/baeldung/subflows/subflowmapping/RouterExample.java b/spring-integration/src/main/java/com/baeldung/subflows/subflowmapping/RouterExample.java index cbef3ca219..de1f11cf70 100644 --- a/spring-integration/src/main/java/com/baeldung/subflows/subflowmapping/RouterExample.java +++ b/spring-integration/src/main/java/com/baeldung/subflows/subflowmapping/RouterExample.java @@ -17,11 +17,9 @@ import org.springframework.integration.dsl.IntegrationFlow; @IntegrationComponentScan public class RouterExample { @MessagingGateway - public interface I { - + public interface NumbersClassifier { @Gateway(requestChannel = "flow.input") - void flow(Collection is); - + void flow(Collection numbers); } @Bean @@ -43,28 +41,21 @@ public class RouterExample { public IntegrationFlow flow() { return f -> f.split() . route(p -> p % 3, m -> m.channelMapping(0, "multipleof3Channel") - .subFlowMapping(1, sf -> sf .channel("remainderIs1Channel")) - .subFlowMapping(2, sf -> sf. handle((p,h)->p))) + .subFlowMapping(1, sf -> sf.channel("remainderIs1Channel")) + .subFlowMapping(2, sf -> sf. handle((p, h) -> p))) .channel("remainderIs2Channel"); } public static void main(String[] args) { final ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(RouterExample.class); - DirectChannel multipleof3Channel = ctx.getBean("multipleof3Channel", DirectChannel.class); multipleof3Channel.subscribe(x -> System.out.println("multipleof3Channel: " + x)); - DirectChannel remainderIs1Channel = ctx.getBean("remainderIs1Channel", DirectChannel.class); remainderIs1Channel.subscribe(x -> System.out.println("remainderIs1Channel: " + x)); - DirectChannel remainderIs2Channel = ctx.getBean("remainderIs2Channel", DirectChannel.class); remainderIs2Channel.subscribe(x -> System.out.println("remainderIs2Channel: " + x)); - - ctx.getBean(I.class) + ctx.getBean(NumbersClassifier.class) .flow(Arrays.asList(1, 2, 3, 4, 5, 6)); - ctx.close(); - } - -} +} \ No newline at end of file From 8d745e684e6c40e425ddcc6e509e1d15584764c0 Mon Sep 17 00:00:00 2001 From: Marcos Lopez Gonzalez Date: Mon, 12 Nov 2018 19:54:39 +0100 Subject: [PATCH 069/119] DummyEntity renamed to Message --- .../{DummyEntity.java => Message.java} | 9 ++++----- .../src/main/resources/META-INF/persistence.xml | 2 +- .../jpa/stringcast/SpringCastUnitTest.java | 17 +++++++---------- .../java-jpa/src/test/resources/persistence.xml | 2 +- 4 files changed, 13 insertions(+), 17 deletions(-) rename persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/{DummyEntity.java => Message.java} (76%) diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/DummyEntity.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/Message.java similarity index 76% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/DummyEntity.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/Message.java index 12b57ff112..fb521cfea6 100644 --- a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/DummyEntity.java +++ b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/Message.java @@ -3,13 +3,12 @@ package com.baeldung.jpa.stringcast; import javax.persistence.*; @SqlResultSetMapping(name = "textQueryMapping", classes = { - @ConstructorResult(targetClass = DummyEntity.class, columns = { + @ConstructorResult(targetClass = Message.class, columns = { @ColumnResult(name = "text") }) }) @Entity -@Table(name = "dummy") -public class DummyEntity { +public class Message { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -17,11 +16,11 @@ public class DummyEntity { private String text; - public DummyEntity() { + public Message() { } - public DummyEntity(String text) { + public Message(String text) { this.text = text; } diff --git a/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml index 6345e7f364..3fdc8ce27c 100644 --- a/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml +++ b/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml @@ -23,7 +23,7 @@ org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.stringcast.DummyEntity + com.baeldung.jpa.stringcast.Message diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastUnitTest.java b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastUnitTest.java index d9c3adef26..0a11725fc3 100644 --- a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastUnitTest.java +++ b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastUnitTest.java @@ -3,10 +3,7 @@ package com.baeldung.jpa.stringcast; import org.junit.BeforeClass; import org.junit.Test; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.EntityTransaction; -import javax.persistence.Persistence; +import javax.persistence.*; import java.util.List; import static org.junit.Assert.assertEquals; @@ -22,18 +19,18 @@ public class SpringCastUnitTest { em = emFactory.createEntityManager(); // insert an object into the db - DummyEntity dummyEntity = new DummyEntity(); - dummyEntity.setText("text"); + Message message = new Message(); + message.setText("text"); EntityTransaction tr = em.getTransaction(); tr.begin(); - em.persist(dummyEntity); + em.persist(message); tr.commit(); } @Test(expected = ClassCastException.class) public void givenExecutorNoCastCheck_whenQueryReturnsOneColumn_thenClassCastThrown() { - List results = QueryExecutor.executeNativeQueryNoCastCheck("select text from dummy", em); + List results = QueryExecutor.executeNativeQueryNoCastCheck("select text from message", em); // fails for (String[] row : results) { @@ -43,13 +40,13 @@ public class SpringCastUnitTest { @Test public void givenExecutorWithCastCheck_whenQueryReturnsOneColumn_thenNoClassCastThrown() { - List results = QueryExecutor.executeNativeQueryWithCastCheck("select text from dummy", em); + List results = QueryExecutor.executeNativeQueryWithCastCheck("select text from message", em); assertEquals("text", results.get(0)[0]); } @Test public void givenExecutorGeneric_whenQueryReturnsOneColumn_thenNoClassCastThrown() { - List results = QueryExecutor.executeNativeQueryGeneric("select text from dummy", "textQueryMapping", em); + List results = QueryExecutor.executeNativeQueryGeneric("select text from message", "textQueryMapping", em); assertEquals("text", results.get(0).getText()); } diff --git a/persistence-modules/java-jpa/src/test/resources/persistence.xml b/persistence-modules/java-jpa/src/test/resources/persistence.xml index b6cc51c3b3..c902e0a320 100644 --- a/persistence-modules/java-jpa/src/test/resources/persistence.xml +++ b/persistence-modules/java-jpa/src/test/resources/persistence.xml @@ -20,7 +20,7 @@ org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.stringcast.DummyEntity + com.baeldung.jpa.stringcast.Message From c7402e379cb78f26830dac3930464b3bf72c6a81 Mon Sep 17 00:00:00 2001 From: Emily Cheyne Date: Mon, 12 Nov 2018 17:11:58 -0500 Subject: [PATCH 070/119] BAEL-2272 Persisting DDD Aggregates Add readme --- ddd/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 ddd/README.md diff --git a/ddd/README.md b/ddd/README.md new file mode 100644 index 0000000000..60f3a43086 --- /dev/null +++ b/ddd/README.md @@ -0,0 +1,3 @@ +### Relevant articles + +- [Persisting DDD Aggregates](https://www.baeldung.com/spring-persisting-ddd-aggregates) From 6557cf256408722e6b7e019cb3e314151d86742d Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Tue, 13 Nov 2018 09:43:13 +0800 Subject: [PATCH 071/119] add performance test --- .../com/baeldung/random/RandomStringTest.kt | 58 ++++++++++++------- 1 file changed, 38 insertions(+), 20 deletions(-) diff --git a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt index 0795cd2a5b..0715870403 100644 --- a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt +++ b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt @@ -1,52 +1,70 @@ import org.apache.commons.lang3.RandomStringUtils +import org.junit.Before +import org.junit.jupiter.api.BeforeAll +import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test +import java.security.SecureRandom import java.util.concurrent.ThreadLocalRandom +import kotlin.experimental.and import kotlin.streams.asSequence import kotlin.test.assertEquals -const val STRING_LENGTH = 10; -const val ALPHANUMERIC_REGEX = "[a-zA-Z0-9]+"; +const val STRING_LENGTH = 10 +const val ALPHANUMERIC_REGEX = "[a-zA-Z0-9]+" class RandomStringTest { - @Test - fun generateRandomString_useJava_returnString() { - val charPool = ArrayList(); + val charPool = ArrayList() + + @BeforeEach + fun charPool() { charPool.addAll('a'..'z'); charPool.addAll('A'..'Z'); charPool.addAll('0'..'9'); + } + @Test + fun givenAStringLength_whenUsingJava_thenReturnAlphanumericString() { var randomString = ThreadLocalRandom.current() .ints(STRING_LENGTH.toLong(), 0, charPool.size) .asSequence() .map(charPool::get) .joinToString("") - assert(randomString.matches(Regex(ALPHANUMERIC_REGEX))); - assertEquals(STRING_LENGTH, randomString.length); + assert(randomString.matches(Regex(ALPHANUMERIC_REGEX))) + assertEquals(STRING_LENGTH, randomString.length) } @Test - fun generateRandomString_useKotlin_returnString() { - val charPool = ArrayList(); - charPool.addAll('a'..'z'); - charPool.addAll('A'..'Z'); - charPool.addAll('0'..'9'); - + fun givenAStringLength_whenUsingKotlin_thenReturnAlphanumericString() { var randomString = (1..STRING_LENGTH).map { i -> kotlin.random.Random.nextInt(0, charPool.size) } .map(charPool::get) - .joinToString(""); + .joinToString("") - assert(randomString.matches(Regex(ALPHANUMERIC_REGEX))); - assertEquals(STRING_LENGTH, randomString.length); + assert(randomString.matches(Regex(ALPHANUMERIC_REGEX))) + assertEquals(STRING_LENGTH, randomString.length) } @Test - fun generateRandomString_useApacheCommon_returnString() { - var randomString = RandomStringUtils.randomAlphanumeric(STRING_LENGTH); + fun givenAStringLength_whenUsingApacheCommon_thenReturnAlphanumericString() { + var randomString = RandomStringUtils.randomAlphanumeric(STRING_LENGTH) - assert(randomString.matches(Regex(ALPHANUMERIC_REGEX))); - assertEquals(STRING_LENGTH, randomString.length); + assert(randomString.matches(Regex(ALPHANUMERIC_REGEX))) + assertEquals(STRING_LENGTH, randomString.length) + } + + @Test + fun givenAStringLength_whenUsingRandomForBytes_thenReturnAlphanumericString() { + val random = SecureRandom() + val bytes = ByteArray(STRING_LENGTH) + random.nextBytes(bytes) + + var randomString = (0..bytes.size - 1).map { i -> + charPool.get((bytes[i] and 0xFF.toByte() and charPool.size.toByte()).toInt()) + }.joinToString("") + + assert(randomString.matches(Regex(ALPHANUMERIC_REGEX))) + assertEquals(STRING_LENGTH, randomString.length) } } \ No newline at end of file From 55ba7955f9d02fca9ac2f84227e2e6a54a1d4e20 Mon Sep 17 00:00:00 2001 From: geroza Date: Tue, 13 Nov 2018 00:36:08 -0200 Subject: [PATCH 072/119] Fixed: * SimpleDateFormatUnitTest test, which relied on the system locale, thus making it platform dependent * UppercaseFileReaderUnitTest, LowercaseFileReaderUnitTest and StandardFileReaderUnitTest, which were using an approach that seems to be efficient only on Windows; on Linux it raises an exception. The new approach should be good for all cases, but we need testing on a Windows environment --- .../LowercaseFileReaderUnitTest.java | 11 ++++++++--- .../StandardFileReaderUnitTest.java | 15 +++++++++++---- .../UppercaseFileReaderUnitTest.java | 7 ++++++- .../SimpleDateFormatUnitTest.java | 2 +- 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/abstractclasses/LowercaseFileReaderUnitTest.java b/core-java/src/test/java/com/baeldung/abstractclasses/LowercaseFileReaderUnitTest.java index 4058f6f03b..a97a68e0bd 100644 --- a/core-java/src/test/java/com/baeldung/abstractclasses/LowercaseFileReaderUnitTest.java +++ b/core-java/src/test/java/com/baeldung/abstractclasses/LowercaseFileReaderUnitTest.java @@ -2,17 +2,22 @@ package com.baeldung.abstractclasses; import com.baeldung.abstractclasses.filereaders.BaseFileReader; import com.baeldung.abstractclasses.filereaders.LowercaseFileReader; + +import java.net.URL; +import java.nio.file.Paths; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; public class LowercaseFileReaderUnitTest { - + @Test public void givenLowercaseFileReaderInstance_whenCalledreadFile_thenCorrect() throws Exception { - String filePath = getClass().getClassLoader().getResource("files/test.txt").getPath().substring(1); + // We'll transform the resource URL path to URI to load the file correctly in Windows + URL url = getClass().getClassLoader().getResource("files/test.txt"); + String filePath = Paths.get(url.toURI()).toString(); BaseFileReader lowercaseFileReader = new LowercaseFileReader(filePath); - + assertThat(lowercaseFileReader.readFile()).isInstanceOf(List.class); } } diff --git a/core-java/src/test/java/com/baeldung/abstractclasses/StandardFileReaderUnitTest.java b/core-java/src/test/java/com/baeldung/abstractclasses/StandardFileReaderUnitTest.java index e1c1435ef4..348b0f0366 100644 --- a/core-java/src/test/java/com/baeldung/abstractclasses/StandardFileReaderUnitTest.java +++ b/core-java/src/test/java/com/baeldung/abstractclasses/StandardFileReaderUnitTest.java @@ -1,16 +1,23 @@ package com.baeldung.abstractclasses; +import static org.assertj.core.api.Assertions.assertThat; + +import java.net.URL; +import java.nio.file.Paths; +import java.util.List; + +import org.junit.Test; + import com.baeldung.abstractclasses.filereaders.BaseFileReader; import com.baeldung.abstractclasses.filereaders.StandardFileReader; -import java.util.List; -import static org.assertj.core.api.Assertions.assertThat; -import org.junit.Test; public class StandardFileReaderUnitTest { @Test public void givenStandardFileReaderInstance_whenCalledreadFile_thenCorrect() throws Exception { - String filePath = getClass().getClassLoader().getResource("files/test.txt").getPath().substring(1); + // We'll transform the resource URL path to URI to load the file correctly in Windows + URL url = getClass().getClassLoader().getResource("files/test.txt"); + String filePath = Paths.get(url.toURI()).toString(); BaseFileReader standardFileReader = new StandardFileReader(filePath); assertThat(standardFileReader.readFile()).isInstanceOf(List.class); diff --git a/core-java/src/test/java/com/baeldung/abstractclasses/UppercaseFileReaderUnitTest.java b/core-java/src/test/java/com/baeldung/abstractclasses/UppercaseFileReaderUnitTest.java index f9c5fbf94d..d698cfe038 100644 --- a/core-java/src/test/java/com/baeldung/abstractclasses/UppercaseFileReaderUnitTest.java +++ b/core-java/src/test/java/com/baeldung/abstractclasses/UppercaseFileReaderUnitTest.java @@ -2,6 +2,9 @@ package com.baeldung.abstractclasses; import com.baeldung.abstractclasses.filereaders.BaseFileReader; import com.baeldung.abstractclasses.filereaders.UppercaseFileReader; + +import java.net.URL; +import java.nio.file.Paths; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; @@ -10,7 +13,9 @@ public class UppercaseFileReaderUnitTest { @Test public void givenUppercaseFileReaderInstance_whenCalledreadFile_thenCorrect() throws Exception { - String filePath = getClass().getClassLoader().getResource("files/test.txt").getPath().substring(1); + // We'll transform the resource URL path to URI to load the file correctly in Windows + URL url = getClass().getClassLoader().getResource("files/test.txt"); + String filePath = Paths.get(url.toURI()).toString(); BaseFileReader uppercaseFileReader = new UppercaseFileReader(filePath); assertThat(uppercaseFileReader.readFile()).isInstanceOf(List.class); diff --git a/core-java/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java b/core-java/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java index 4ae7b77089..7e1fcd9b3d 100644 --- a/core-java/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java +++ b/core-java/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java @@ -25,7 +25,7 @@ public class SimpleDateFormatUnitTest { @Test public void givenSpecificDate_whenFormattedUsingDateFormat_thenCheckFormatCorrect() throws Exception { - DateFormat formatter = DateFormat.getDateInstance(DateFormat.SHORT); + DateFormat formatter = DateFormat.getDateInstance(DateFormat.SHORT, Locale.US); assertEquals("5/24/77", formatter.format(new Date(233345223232L))); } From 93f505f9a995c5cfa6a11d6c47ffa07a2485626d Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Tue, 13 Nov 2018 19:45:52 +0530 Subject: [PATCH 073/119] BAEL-8874 Merge ejb projects -Merged ejb and spring-ejb modules into spring-ejb --- ejb/README.md | 6 -- ejb/ejb-client/pom.xml | 26 ----- .../src/main/resources/META-INF/ejb-jar.xml | 7 -- ejb/ejb-session-beans/pom.xml | 83 ---------------- ejb/pom.xml | 97 ------------------- .../src/main/resources/logback.xml | 13 --- .../src/main/resources/logback.xml | 13 --- spring-ejb/README.md | 4 + spring-ejb/ejb-beans/pom.xml | 57 ++++++++++- .../com/baeldung/ejb/stateful/EJBClient1.java | 0 .../com/baeldung/ejb/stateful/EJBClient2.java | 0 .../baeldung/ejb/stateful/StatefulEJB.java | 0 .../baeldung/ejb/stateless/EJBClient1.java | 0 .../baeldung/ejb/stateless/EJBClient2.java | 0 .../baeldung/ejb/stateless/StatelessEJB.java | 0 .../stateful/StatefulEJBIntegrationTest.java | 2 +- .../StatelessEJBIntegrationTest.java | 2 +- .../CountryStateCacheBeanUnitTest.java | 2 - spring-ejb/ejb-remote-for-spring/pom.xml | 75 -------------- .../src/main/resources/logback.xml | 13 --- spring-ejb/pom.xml | 10 +- spring-ejb/spring-ejb-client/pom.xml | 11 +-- .../com/baeldung/ejb/client/EJBClient.java | 2 +- .../baeldung/ejb/wildfly/TextApplication.java | 2 +- .../SpringEjbClientApplication.java | 2 +- .../resources/jboss-ejb-client.properties | 0 .../setup/test/EJBSetupIntegrationTest.java | 0 .../TextApplicationIntegrationTest.java | 0 .../spring-ejb-remote}/pom.xml | 24 +++-- .../ejb/tutorial/HelloStatefulWorld.java | 0 .../ejb/tutorial/HelloStatefulWorldBean.java | 0 .../ejb/tutorial/HelloStatelessWorld.java | 0 .../ejb/tutorial/HelloStatelessWorldBean.java | 0 .../com/baeldung/ejb/tutorial/HelloWorld.java | 0 .../baeldung/ejb/tutorial/HelloWorldBean.java | 0 .../ejb/wildfly/TextProcessorBean.java | 0 .../ejb/wildfly/TextProcessorRemote.java | 0 .../src/main/resources/META-INF/ejb-jar.xml | 2 +- .../src/main/resources/logback.xml | 0 .../HelloStatefulWorldTestUnitTest.java | 0 .../HelloStatelessWorldTestUnitTest.java | 0 {ejb => spring-ejb}/wildfly/pom.xml | 10 +- .../wildfly/widlfly-web/pom.xml | 0 .../src/main/java/TestEJBServlet.java | 0 .../src/main/java/TestJPAServlet.java | 0 .../src/main/resources/logback.xml | 0 .../src/main/webapp/WEB-INF/web.xml | 0 .../wildfly/wildfly-ear/pom.xml | 0 .../wildfly/wildfly-ejb-interfaces/pom.xml | 0 .../java/wildfly/beans/UserBeanLocal.java | 0 .../java/wildfly/beans/UserBeanRemote.java | 0 .../src/main/resources/logback.xml | 0 .../wildfly/wildfly-ejb/pom.xml | 0 .../src/main/java/wildfly/beans/UserBean.java | 0 .../src/main/resources/logback.xml | 0 .../wildfly/wildfly-jpa/pom.xml | 0 .../wildfly-jpa/src/main/java/model/User.java | 0 .../main/resources/META-INF/persistence.xml | 0 .../wildfly-jpa/src/main/resources/data.sql | 0 .../src/main/resources/logback.xml | 0 .../wildfly/wildfly-mdb/pom.xml | 0 .../baeldung/wildfly/mdb/ReadMessageMDB.java | 0 .../wildfly/mdb/SendMessageServlet.java | 0 63 files changed, 91 insertions(+), 372 deletions(-) delete mode 100644 ejb/README.md delete mode 100755 ejb/ejb-client/pom.xml delete mode 100755 ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml delete mode 100644 ejb/ejb-session-beans/pom.xml delete mode 100755 ejb/pom.xml delete mode 100644 ejb/wildfly/wildfly-ejb/src/main/resources/logback.xml delete mode 100644 ejb/wildfly/wildfly-jpa/src/main/resources/logback.xml rename {ejb/ejb-session-beans => spring-ejb/ejb-beans}/src/main/java/com/baeldung/ejb/stateful/EJBClient1.java (100%) rename {ejb/ejb-session-beans => spring-ejb/ejb-beans}/src/main/java/com/baeldung/ejb/stateful/EJBClient2.java (100%) rename {ejb/ejb-session-beans => spring-ejb/ejb-beans}/src/main/java/com/baeldung/ejb/stateful/StatefulEJB.java (100%) rename {ejb/ejb-session-beans => spring-ejb/ejb-beans}/src/main/java/com/baeldung/ejb/stateless/EJBClient1.java (100%) rename {ejb/ejb-session-beans => spring-ejb/ejb-beans}/src/main/java/com/baeldung/ejb/stateless/EJBClient2.java (100%) rename {ejb/ejb-session-beans => spring-ejb/ejb-beans}/src/main/java/com/baeldung/ejb/stateless/StatelessEJB.java (100%) rename {ejb/ejb-session-beans/src/test/java/com/baeldung/ejb/test => spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb}/stateful/StatefulEJBIntegrationTest.java (97%) rename {ejb/ejb-session-beans/src/test/java/com/baeldung/ejb/test => spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb}/stateless/StatelessEJBIntegrationTest.java (97%) delete mode 100755 spring-ejb/ejb-remote-for-spring/pom.xml delete mode 100644 spring-ejb/ejb-remote-for-spring/src/main/resources/logback.xml rename {ejb/ejb-client => spring-ejb/spring-ejb-client}/src/main/java/com/baeldung/ejb/client/EJBClient.java (97%) mode change 100755 => 100644 rename {ejb/ejb-client => spring-ejb/spring-ejb-client}/src/main/java/com/baeldung/ejb/wildfly/TextApplication.java (96%) rename {ejb/ejb-client => spring-ejb/spring-ejb-client}/src/main/resources/jboss-ejb-client.properties (100%) mode change 100755 => 100644 rename {ejb/ejb-client => spring-ejb/spring-ejb-client}/src/test/java/com/baeldung/ejb/setup/test/EJBSetupIntegrationTest.java (100%) mode change 100755 => 100644 rename {ejb/ejb-client => spring-ejb/spring-ejb-client}/src/test/java/com/baeldung/ejb/wildfly/TextApplicationIntegrationTest.java (100%) rename {ejb/ejb-remote => spring-ejb/spring-ejb-remote}/pom.xml (80%) mode change 100755 => 100644 rename spring-ejb/{ejb-remote-for-spring => spring-ejb-remote}/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorld.java (100%) rename spring-ejb/{ejb-remote-for-spring => spring-ejb-remote}/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorldBean.java (100%) rename spring-ejb/{ejb-remote-for-spring => spring-ejb-remote}/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorld.java (100%) mode change 100755 => 100644 rename spring-ejb/{ejb-remote-for-spring => spring-ejb-remote}/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorldBean.java (100%) mode change 100755 => 100644 rename {ejb/ejb-remote => spring-ejb/spring-ejb-remote}/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java (100%) mode change 100755 => 100644 rename {ejb/ejb-remote => spring-ejb/spring-ejb-remote}/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java (100%) mode change 100755 => 100644 rename {ejb/ejb-remote => spring-ejb/spring-ejb-remote}/src/main/java/com/baeldung/ejb/wildfly/TextProcessorBean.java (100%) rename {ejb/ejb-remote => spring-ejb/spring-ejb-remote}/src/main/java/com/baeldung/ejb/wildfly/TextProcessorRemote.java (100%) rename spring-ejb/{ejb-remote-for-spring => spring-ejb-remote}/src/main/resources/META-INF/ejb-jar.xml (84%) mode change 100755 => 100644 rename {ejb/ejb-client => spring-ejb/spring-ejb-remote}/src/main/resources/logback.xml (100%) rename spring-ejb/{ejb-remote-for-spring => spring-ejb-remote}/src/test/java/com/baeldung/ejb/tutorial/HelloStatefulWorldTestUnitTest.java (100%) rename spring-ejb/{ejb-remote-for-spring => spring-ejb-remote}/src/test/java/com/baeldung/ejb/tutorial/HelloStatelessWorldTestUnitTest.java (100%) rename {ejb => spring-ejb}/wildfly/pom.xml (94%) rename {ejb => spring-ejb}/wildfly/widlfly-web/pom.xml (100%) rename {ejb => spring-ejb}/wildfly/widlfly-web/src/main/java/TestEJBServlet.java (100%) rename {ejb => spring-ejb}/wildfly/widlfly-web/src/main/java/TestJPAServlet.java (100%) rename {ejb/ejb-remote => spring-ejb/wildfly/widlfly-web}/src/main/resources/logback.xml (100%) rename {ejb => spring-ejb}/wildfly/widlfly-web/src/main/webapp/WEB-INF/web.xml (100%) rename {ejb => spring-ejb}/wildfly/wildfly-ear/pom.xml (100%) rename {ejb => spring-ejb}/wildfly/wildfly-ejb-interfaces/pom.xml (100%) rename {ejb => spring-ejb}/wildfly/wildfly-ejb-interfaces/src/main/java/wildfly/beans/UserBeanLocal.java (100%) rename {ejb => spring-ejb}/wildfly/wildfly-ejb-interfaces/src/main/java/wildfly/beans/UserBeanRemote.java (100%) rename {ejb/ejb-session-beans => spring-ejb/wildfly/wildfly-ejb-interfaces}/src/main/resources/logback.xml (100%) rename {ejb => spring-ejb}/wildfly/wildfly-ejb/pom.xml (100%) rename {ejb => spring-ejb}/wildfly/wildfly-ejb/src/main/java/wildfly/beans/UserBean.java (100%) rename {ejb/wildfly/widlfly-web => spring-ejb/wildfly/wildfly-ejb}/src/main/resources/logback.xml (100%) rename {ejb => spring-ejb}/wildfly/wildfly-jpa/pom.xml (100%) rename {ejb => spring-ejb}/wildfly/wildfly-jpa/src/main/java/model/User.java (100%) rename {ejb => spring-ejb}/wildfly/wildfly-jpa/src/main/resources/META-INF/persistence.xml (100%) rename {ejb => spring-ejb}/wildfly/wildfly-jpa/src/main/resources/data.sql (100%) rename {ejb/wildfly/wildfly-ejb-interfaces => spring-ejb/wildfly/wildfly-jpa}/src/main/resources/logback.xml (100%) rename {ejb => spring-ejb}/wildfly/wildfly-mdb/pom.xml (100%) rename {ejb => spring-ejb}/wildfly/wildfly-mdb/src/com/baeldung/wildfly/mdb/ReadMessageMDB.java (100%) rename {ejb => spring-ejb}/wildfly/wildfly-mdb/src/com/baeldung/wildfly/mdb/SendMessageServlet.java (100%) diff --git a/ejb/README.md b/ejb/README.md deleted file mode 100644 index f47277bf8f..0000000000 --- a/ejb/README.md +++ /dev/null @@ -1,6 +0,0 @@ -## Relevant articles: - -- [Guide to EJB Set-up](http://www.baeldung.com/ejb-intro) -- [Java EE Session Beans](http://www.baeldung.com/ejb-session-beans) -- [Introduction to EJB JNDI Lookup on WildFly Application Server](http://www.baeldung.com/wildfly-ejb-jndi) -- [A Guide to Message Driven Beans in EJB](http://www.baeldung.com/ejb-message-driven-beans) diff --git a/ejb/ejb-client/pom.xml b/ejb/ejb-client/pom.xml deleted file mode 100755 index 6231030cec..0000000000 --- a/ejb/ejb-client/pom.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - 4.0.0 - ejb-client - EJB3 Client Maven - - - com.baeldung.ejb - ejb - 1.0-SNAPSHOT - - - - - org.wildfly - wildfly-ejb-client-bom - pom - - - com.baeldung.ejb - ejb-remote - ejb - - - \ No newline at end of file diff --git a/ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml b/ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml deleted file mode 100755 index d6c2200198..0000000000 --- a/ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - remote - - diff --git a/ejb/ejb-session-beans/pom.xml b/ejb/ejb-session-beans/pom.xml deleted file mode 100644 index da76169729..0000000000 --- a/ejb/ejb-session-beans/pom.xml +++ /dev/null @@ -1,83 +0,0 @@ - - 4.0.0 - ejb-session-beans - - - com.baeldung.ejb - ejb - 1.0-SNAPSHOT - - - - - - org.jboss.arquillian - arquillian-bom - ${arquillian-bom.version} - import - pom - - - - - - - javax - javaee-api - provided - - - org.jboss.arquillian.junit - arquillian-junit-container - test - - - - - - arquillian-glassfish-embedded - - true - - - - org.jboss.arquillian.container - arquillian-glassfish-embedded-3.1 - ${arquillian-glassfish-embedded-3.1.version} - test - - - org.glassfish.main.extras - glassfish-embedded-all - ${glassfish-embedded-all.version} - test - - - - - - - - - maven-war-plugin - ${maven-war-plugin.version} - - false - - - - - - - UTF-8 - 1.1.13.Final - 2.2.6 - 1.1.12.Final - 1.0.0.Final - 4.12 - 7.0 - 1.0.0.CR4 - 3.1.2 - - - \ No newline at end of file diff --git a/ejb/pom.xml b/ejb/pom.xml deleted file mode 100755 index 4cb700d087..0000000000 --- a/ejb/pom.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - 4.0.0 - com.baeldung.ejb - ejb - 1.0-SNAPSHOT - pom - ejb - EJB Tutorial - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - - - ejb-remote - ejb-session-beans - - - - - - com.baeldung.ejb - ejb-remote - ${ejb-remote.version} - ejb - - - com.baeldung.ejb - ejb-session-beans - ${ejb-session-beans.version} - ejb - - - javax - javaee-api - ${javaee-api.version} - provided - - - org.wildfly - wildfly-ejb-client-bom - ${wildfly-ejb-client-bom.version} - pom - import - - - - - - - - - maven-ejb-plugin - ${maven-ejb-plugin.version} - - ${ejbVersion} - - - - - - - - - jboss-public-repository-group - JBoss Public Maven Repository Group - http://repository.jboss.org/nexus/content/groups/public/ - default - - true - never - - - true - never - - - - - - 2.5.7 - 3.4.11 - 0.10 - 2.19.1 - 1.0-SNAPSHOT - 1.0-SNAPSHOT - 7.0 - 2.4 - 3.2 - 10.1.0.Final - - - \ No newline at end of file diff --git a/ejb/wildfly/wildfly-ejb/src/main/resources/logback.xml b/ejb/wildfly/wildfly-ejb/src/main/resources/logback.xml deleted file mode 100644 index 7d900d8ea8..0000000000 --- a/ejb/wildfly/wildfly-ejb/src/main/resources/logback.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - \ No newline at end of file diff --git a/ejb/wildfly/wildfly-jpa/src/main/resources/logback.xml b/ejb/wildfly/wildfly-jpa/src/main/resources/logback.xml deleted file mode 100644 index 7d900d8ea8..0000000000 --- a/ejb/wildfly/wildfly-jpa/src/main/resources/logback.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - \ No newline at end of file diff --git a/spring-ejb/README.md b/spring-ejb/README.md index d09b27db27..7b8696597d 100644 --- a/spring-ejb/README.md +++ b/spring-ejb/README.md @@ -1,4 +1,8 @@ ### Relevant Articles +- [Guide to EJB Set-up](http://www.baeldung.com/ejb-intro) +- [Java EE Session Beans](http://www.baeldung.com/ejb-session-beans) +- [Introduction to EJB JNDI Lookup on WildFly Application Server](http://www.baeldung.com/wildfly-ejb-jndi) +- [A Guide to Message Driven Beans in EJB](http://www.baeldung.com/ejb-message-driven-beans) - [Integration Guide for Spring and EJB](http://www.baeldung.com/spring-ejb) - [Singleton Session Bean in Java EE](http://www.baeldung.com/java-ee-singleton-session-bean) diff --git a/spring-ejb/ejb-beans/pom.xml b/spring-ejb/ejb-beans/pom.xml index 76c0afadee..168809ee6d 100644 --- a/spring-ejb/ejb-beans/pom.xml +++ b/spring-ejb/ejb-beans/pom.xml @@ -3,21 +3,31 @@ 4.0.0 com.baeldung.singletonsession ejb-beans - 1.0.0-SNAPSHOT - EJB Beans + spring-ejb-beans com.baeldung.spring.ejb spring-ejb - 1.0.1 + 1.0.0-SNAPSHOT + + + + org.jboss.arquillian + arquillian-bom + ${arquillian-bom.version} + import + pom + + + + javax javaee-api - ${javaee.version} provided @@ -26,10 +36,49 @@ tomee-embedded ${tomee-embedded.version} + + org.jboss.arquillian.junit + arquillian-junit-container + test + + + + arquillian-glassfish-embedded + + + org.jboss.arquillian.container + arquillian-glassfish-embedded-3.1 + ${arquillian-glassfish-embedded-3.1.version} + test + + + org.glassfish.main.extras + glassfish-embedded-all + ${glassfish-embedded-all.version} + test + + + + + + + + + maven-war-plugin + ${maven-war-plugin.version} + + false + + + + + 1.1.13.Final 1.7.5 + 3.1.2 + 1.0.0.CR4 diff --git a/ejb/ejb-session-beans/src/main/java/com/baeldung/ejb/stateful/EJBClient1.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/stateful/EJBClient1.java similarity index 100% rename from ejb/ejb-session-beans/src/main/java/com/baeldung/ejb/stateful/EJBClient1.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/stateful/EJBClient1.java diff --git a/ejb/ejb-session-beans/src/main/java/com/baeldung/ejb/stateful/EJBClient2.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/stateful/EJBClient2.java similarity index 100% rename from ejb/ejb-session-beans/src/main/java/com/baeldung/ejb/stateful/EJBClient2.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/stateful/EJBClient2.java diff --git a/ejb/ejb-session-beans/src/main/java/com/baeldung/ejb/stateful/StatefulEJB.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/stateful/StatefulEJB.java similarity index 100% rename from ejb/ejb-session-beans/src/main/java/com/baeldung/ejb/stateful/StatefulEJB.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/stateful/StatefulEJB.java diff --git a/ejb/ejb-session-beans/src/main/java/com/baeldung/ejb/stateless/EJBClient1.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/stateless/EJBClient1.java similarity index 100% rename from ejb/ejb-session-beans/src/main/java/com/baeldung/ejb/stateless/EJBClient1.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/stateless/EJBClient1.java diff --git a/ejb/ejb-session-beans/src/main/java/com/baeldung/ejb/stateless/EJBClient2.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/stateless/EJBClient2.java similarity index 100% rename from ejb/ejb-session-beans/src/main/java/com/baeldung/ejb/stateless/EJBClient2.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/stateless/EJBClient2.java diff --git a/ejb/ejb-session-beans/src/main/java/com/baeldung/ejb/stateless/StatelessEJB.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/stateless/StatelessEJB.java similarity index 100% rename from ejb/ejb-session-beans/src/main/java/com/baeldung/ejb/stateless/StatelessEJB.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/stateless/StatelessEJB.java diff --git a/ejb/ejb-session-beans/src/test/java/com/baeldung/ejb/test/stateful/StatefulEJBIntegrationTest.java b/spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/stateful/StatefulEJBIntegrationTest.java similarity index 97% rename from ejb/ejb-session-beans/src/test/java/com/baeldung/ejb/test/stateful/StatefulEJBIntegrationTest.java rename to spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/stateful/StatefulEJBIntegrationTest.java index cc35921e45..75f7132c62 100644 --- a/ejb/ejb-session-beans/src/test/java/com/baeldung/ejb/test/stateful/StatefulEJBIntegrationTest.java +++ b/spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/stateful/StatefulEJBIntegrationTest.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.test.stateful; +package com.baeldung.ejb.stateful; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; diff --git a/ejb/ejb-session-beans/src/test/java/com/baeldung/ejb/test/stateless/StatelessEJBIntegrationTest.java b/spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/stateless/StatelessEJBIntegrationTest.java similarity index 97% rename from ejb/ejb-session-beans/src/test/java/com/baeldung/ejb/test/stateless/StatelessEJBIntegrationTest.java rename to spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/stateless/StatelessEJBIntegrationTest.java index c80ca93c0d..a970ef90ae 100644 --- a/ejb/ejb-session-beans/src/test/java/com/baeldung/ejb/test/stateless/StatelessEJBIntegrationTest.java +++ b/spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/stateless/StatelessEJBIntegrationTest.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.test.stateless; +package com.baeldung.ejb.stateless; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; diff --git a/spring-ejb/ejb-beans/src/test/java/com/baeldung/singletonbean/CountryStateCacheBeanUnitTest.java b/spring-ejb/ejb-beans/src/test/java/com/baeldung/singletonbean/CountryStateCacheBeanUnitTest.java index 4cec01a4f7..615ddd1422 100644 --- a/spring-ejb/ejb-beans/src/test/java/com/baeldung/singletonbean/CountryStateCacheBeanUnitTest.java +++ b/spring-ejb/ejb-beans/src/test/java/com/baeldung/singletonbean/CountryStateCacheBeanUnitTest.java @@ -4,7 +4,6 @@ import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertNotNull; import java.util.Arrays; -import java.util.Collections; import java.util.List; import javax.ejb.embeddable.EJBContainer; @@ -22,7 +21,6 @@ public class CountryStateCacheBeanUnitTest { @Before public void init() { - ejbContainer = EJBContainer.createEJBContainer(); context = ejbContainer.getContext(); } diff --git a/spring-ejb/ejb-remote-for-spring/pom.xml b/spring-ejb/ejb-remote-for-spring/pom.xml deleted file mode 100755 index 21256fa801..0000000000 --- a/spring-ejb/ejb-remote-for-spring/pom.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - 4.0.0 - ejb-remote-for-spring - ejb - - - com.baeldung.spring.ejb - spring-ejb - 1.0.1 - - - - - javax - javaee-api - provided - - - org.assertj - assertj-core - ${assertj.version} - test - - - - - - - - wildfly-standalone - - false - - - - - org.codehaus.cargo - cargo-maven2-plugin - ${cargo-maven2-plugin.version} - - - - - wildfly10x - - http://download.jboss.org/wildfly/12.0.0.Final/wildfly-12.0.0.Final.zip - - - - - - 127.0.0.1 - standalone-full - 9990 - testUser:admin1234! - - - - - - - - - - - - 3.9.0 - 1.6.1 - - - - - diff --git a/spring-ejb/ejb-remote-for-spring/src/main/resources/logback.xml b/spring-ejb/ejb-remote-for-spring/src/main/resources/logback.xml deleted file mode 100644 index 7d900d8ea8..0000000000 --- a/spring-ejb/ejb-remote-for-spring/src/main/resources/logback.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - \ No newline at end of file diff --git a/spring-ejb/pom.xml b/spring-ejb/pom.xml index 055df9ea04..688f692757 100755 --- a/spring-ejb/pom.xml +++ b/spring-ejb/pom.xml @@ -4,7 +4,6 @@ 4.0.0 com.baeldung.spring.ejb spring-ejb - 1.0.1 pom spring-ejb Spring EJB Tutorial @@ -36,8 +35,8 @@ com.baeldung.spring.ejb - ejb-remote-for-spring - ${ejb-remote-for-spring.version} + spring-ejb-remote + ${spring-ejb-remote.version} ejb @@ -71,13 +70,14 @@ - ejb-remote-for-spring + spring-ejb-remote ejb-beans spring-ejb-client + wildfly - 1.0.1 + 1.0.0-SNAPSHOT 8.0 12.0.0.Final 2.4 diff --git a/spring-ejb/spring-ejb-client/pom.xml b/spring-ejb/spring-ejb-client/pom.xml index 50337e8b21..3d8003cbba 100644 --- a/spring-ejb/spring-ejb-client/pom.xml +++ b/spring-ejb/spring-ejb-client/pom.xml @@ -12,7 +12,7 @@ com.baeldung.spring.ejb spring-ejb - 1.0.1 + 1.0.0-SNAPSHOT @@ -36,14 +36,12 @@ org.wildfly wildfly-ejb-client-bom - ${wildfly-ejb.version} pom com.baeldung.spring.ejb - ejb-remote-for-spring - ${ejb-remote-for-spring.version} + spring-ejb-remote ejb @@ -70,9 +68,4 @@ - - 1.0.1 - 12.0.0.Final - - diff --git a/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java b/spring-ejb/spring-ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java old mode 100755 new mode 100644 similarity index 97% rename from ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java rename to spring-ejb/spring-ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java index ebd6ef1b97..0c87e927a6 --- a/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java +++ b/spring-ejb/spring-ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java @@ -41,7 +41,7 @@ public class EJBClient { // Since we haven't deployed the application as a .ear, the app name for // us will be an empty string final String appName = ""; - final String moduleName = "remote"; + final String moduleName = "spring-ejb-remote"; final String distinctName = ""; final String beanName = "HelloWorld"; final String viewClassName = HelloWorld.class.getName(); diff --git a/ejb/ejb-client/src/main/java/com/baeldung/ejb/wildfly/TextApplication.java b/spring-ejb/spring-ejb-client/src/main/java/com/baeldung/ejb/wildfly/TextApplication.java similarity index 96% rename from ejb/ejb-client/src/main/java/com/baeldung/ejb/wildfly/TextApplication.java rename to spring-ejb/spring-ejb-client/src/main/java/com/baeldung/ejb/wildfly/TextApplication.java index 3b63761c73..40264ff5e2 100644 --- a/ejb/ejb-client/src/main/java/com/baeldung/ejb/wildfly/TextApplication.java +++ b/spring-ejb/spring-ejb-client/src/main/java/com/baeldung/ejb/wildfly/TextApplication.java @@ -21,7 +21,7 @@ public class TextApplication { private static TextProcessorRemote lookupTextProcessorBean(String namespace) throws NamingException { Context ctx = createInitialContext(); final String appName = ""; - final String moduleName = "EJBModule"; + final String moduleName = "spring-ejb-remote"; final String distinctName = ""; final String beanName = TextProcessorBean.class.getSimpleName(); final String viewClassName = TextProcessorRemote.class.getName(); diff --git a/spring-ejb/spring-ejb-client/src/main/java/com/baeldung/springejbclient/SpringEjbClientApplication.java b/spring-ejb/spring-ejb-client/src/main/java/com/baeldung/springejbclient/SpringEjbClientApplication.java index 0a1e389113..554fac3417 100644 --- a/spring-ejb/spring-ejb-client/src/main/java/com/baeldung/springejbclient/SpringEjbClientApplication.java +++ b/spring-ejb/spring-ejb-client/src/main/java/com/baeldung/springejbclient/SpringEjbClientApplication.java @@ -37,7 +37,7 @@ public class SpringEjbClientApplication { @SuppressWarnings("rawtypes") private String getFullName(Class classType) { - String moduleName = "ejb-remote-for-spring/"; + String moduleName = "spring-ejb-remote/"; String beanName = classType.getSimpleName(); String viewClassName = classType.getName(); diff --git a/ejb/ejb-client/src/main/resources/jboss-ejb-client.properties b/spring-ejb/spring-ejb-client/src/main/resources/jboss-ejb-client.properties old mode 100755 new mode 100644 similarity index 100% rename from ejb/ejb-client/src/main/resources/jboss-ejb-client.properties rename to spring-ejb/spring-ejb-client/src/main/resources/jboss-ejb-client.properties diff --git a/ejb/ejb-client/src/test/java/com/baeldung/ejb/setup/test/EJBSetupIntegrationTest.java b/spring-ejb/spring-ejb-client/src/test/java/com/baeldung/ejb/setup/test/EJBSetupIntegrationTest.java old mode 100755 new mode 100644 similarity index 100% rename from ejb/ejb-client/src/test/java/com/baeldung/ejb/setup/test/EJBSetupIntegrationTest.java rename to spring-ejb/spring-ejb-client/src/test/java/com/baeldung/ejb/setup/test/EJBSetupIntegrationTest.java diff --git a/ejb/ejb-client/src/test/java/com/baeldung/ejb/wildfly/TextApplicationIntegrationTest.java b/spring-ejb/spring-ejb-client/src/test/java/com/baeldung/ejb/wildfly/TextApplicationIntegrationTest.java similarity index 100% rename from ejb/ejb-client/src/test/java/com/baeldung/ejb/wildfly/TextApplicationIntegrationTest.java rename to spring-ejb/spring-ejb-client/src/test/java/com/baeldung/ejb/wildfly/TextApplicationIntegrationTest.java diff --git a/ejb/ejb-remote/pom.xml b/spring-ejb/spring-ejb-remote/pom.xml old mode 100755 new mode 100644 similarity index 80% rename from ejb/ejb-remote/pom.xml rename to spring-ejb/spring-ejb-remote/pom.xml index dac2fefb84..4756846cc8 --- a/ejb/ejb-remote/pom.xml +++ b/spring-ejb/spring-ejb-remote/pom.xml @@ -2,13 +2,13 @@ 4.0.0 - ejb-remote + spring-ejb-remote ejb - com.baeldung.ejb - ejb - 1.0-SNAPSHOT + com.baeldung.spring.ejb + spring-ejb + 1.0.0-SNAPSHOT @@ -17,14 +17,21 @@ javaee-api provided + + org.assertj + assertj-core + ${assertj.version} + test + + - + wildfly-standalone - true + false @@ -38,13 +45,14 @@ wildfly10x - http://download.jboss.org/wildfly/10.1.0.Final/wildfly-10.1.0.Final.zip + http://download.jboss.org/wildfly/12.0.0.Final/wildfly-12.0.0.Final.zip 127.0.0.1 + standalone-full 9990 testUser:admin1234! @@ -82,7 +90,7 @@ - 7.0 + 3.9.0 1.6.1 1.1.0.Alpha5 diff --git a/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorld.java b/spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorld.java similarity index 100% rename from spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorld.java rename to spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorld.java diff --git a/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorldBean.java b/spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorldBean.java similarity index 100% rename from spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorldBean.java rename to spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorldBean.java diff --git a/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorld.java b/spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorld.java old mode 100755 new mode 100644 similarity index 100% rename from spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorld.java rename to spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorld.java diff --git a/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorldBean.java b/spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorldBean.java old mode 100755 new mode 100644 similarity index 100% rename from spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorldBean.java rename to spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorldBean.java diff --git a/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java b/spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java old mode 100755 new mode 100644 similarity index 100% rename from ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java rename to spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java diff --git a/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java b/spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java old mode 100755 new mode 100644 similarity index 100% rename from ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java rename to spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java diff --git a/ejb/ejb-remote/src/main/java/com/baeldung/ejb/wildfly/TextProcessorBean.java b/spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/wildfly/TextProcessorBean.java similarity index 100% rename from ejb/ejb-remote/src/main/java/com/baeldung/ejb/wildfly/TextProcessorBean.java rename to spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/wildfly/TextProcessorBean.java diff --git a/ejb/ejb-remote/src/main/java/com/baeldung/ejb/wildfly/TextProcessorRemote.java b/spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/wildfly/TextProcessorRemote.java similarity index 100% rename from ejb/ejb-remote/src/main/java/com/baeldung/ejb/wildfly/TextProcessorRemote.java rename to spring-ejb/spring-ejb-remote/src/main/java/com/baeldung/ejb/wildfly/TextProcessorRemote.java diff --git a/spring-ejb/ejb-remote-for-spring/src/main/resources/META-INF/ejb-jar.xml b/spring-ejb/spring-ejb-remote/src/main/resources/META-INF/ejb-jar.xml old mode 100755 new mode 100644 similarity index 84% rename from spring-ejb/ejb-remote-for-spring/src/main/resources/META-INF/ejb-jar.xml rename to spring-ejb/spring-ejb-remote/src/main/resources/META-INF/ejb-jar.xml index f51523ac14..e53ed00e98 --- a/spring-ejb/ejb-remote-for-spring/src/main/resources/META-INF/ejb-jar.xml +++ b/spring-ejb/spring-ejb-remote/src/main/resources/META-INF/ejb-jar.xml @@ -2,6 +2,6 @@ - ejb-remote-for-spring + spring-ejb-remote diff --git a/ejb/ejb-client/src/main/resources/logback.xml b/spring-ejb/spring-ejb-remote/src/main/resources/logback.xml similarity index 100% rename from ejb/ejb-client/src/main/resources/logback.xml rename to spring-ejb/spring-ejb-remote/src/main/resources/logback.xml diff --git a/spring-ejb/ejb-remote-for-spring/src/test/java/com/baeldung/ejb/tutorial/HelloStatefulWorldTestUnitTest.java b/spring-ejb/spring-ejb-remote/src/test/java/com/baeldung/ejb/tutorial/HelloStatefulWorldTestUnitTest.java similarity index 100% rename from spring-ejb/ejb-remote-for-spring/src/test/java/com/baeldung/ejb/tutorial/HelloStatefulWorldTestUnitTest.java rename to spring-ejb/spring-ejb-remote/src/test/java/com/baeldung/ejb/tutorial/HelloStatefulWorldTestUnitTest.java diff --git a/spring-ejb/ejb-remote-for-spring/src/test/java/com/baeldung/ejb/tutorial/HelloStatelessWorldTestUnitTest.java b/spring-ejb/spring-ejb-remote/src/test/java/com/baeldung/ejb/tutorial/HelloStatelessWorldTestUnitTest.java similarity index 100% rename from spring-ejb/ejb-remote-for-spring/src/test/java/com/baeldung/ejb/tutorial/HelloStatelessWorldTestUnitTest.java rename to spring-ejb/spring-ejb-remote/src/test/java/com/baeldung/ejb/tutorial/HelloStatelessWorldTestUnitTest.java diff --git a/ejb/wildfly/pom.xml b/spring-ejb/wildfly/pom.xml similarity index 94% rename from ejb/wildfly/pom.xml rename to spring-ejb/wildfly/pom.xml index 53d10a90ed..8f7d4c287a 100644 --- a/ejb/wildfly/pom.xml +++ b/spring-ejb/wildfly/pom.xml @@ -2,15 +2,15 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.baeldung.wildfly - wildfly + wildfly-example 0.0.1-SNAPSHOT pom - wildfly + wildfly-example - com.baeldung.ejb - ejb - 1.0-SNAPSHOT + com.baeldung.spring.ejb + spring-ejb + 1.0.0-SNAPSHOT diff --git a/ejb/wildfly/widlfly-web/pom.xml b/spring-ejb/wildfly/widlfly-web/pom.xml similarity index 100% rename from ejb/wildfly/widlfly-web/pom.xml rename to spring-ejb/wildfly/widlfly-web/pom.xml diff --git a/ejb/wildfly/widlfly-web/src/main/java/TestEJBServlet.java b/spring-ejb/wildfly/widlfly-web/src/main/java/TestEJBServlet.java similarity index 100% rename from ejb/wildfly/widlfly-web/src/main/java/TestEJBServlet.java rename to spring-ejb/wildfly/widlfly-web/src/main/java/TestEJBServlet.java diff --git a/ejb/wildfly/widlfly-web/src/main/java/TestJPAServlet.java b/spring-ejb/wildfly/widlfly-web/src/main/java/TestJPAServlet.java similarity index 100% rename from ejb/wildfly/widlfly-web/src/main/java/TestJPAServlet.java rename to spring-ejb/wildfly/widlfly-web/src/main/java/TestJPAServlet.java diff --git a/ejb/ejb-remote/src/main/resources/logback.xml b/spring-ejb/wildfly/widlfly-web/src/main/resources/logback.xml similarity index 100% rename from ejb/ejb-remote/src/main/resources/logback.xml rename to spring-ejb/wildfly/widlfly-web/src/main/resources/logback.xml diff --git a/ejb/wildfly/widlfly-web/src/main/webapp/WEB-INF/web.xml b/spring-ejb/wildfly/widlfly-web/src/main/webapp/WEB-INF/web.xml similarity index 100% rename from ejb/wildfly/widlfly-web/src/main/webapp/WEB-INF/web.xml rename to spring-ejb/wildfly/widlfly-web/src/main/webapp/WEB-INF/web.xml diff --git a/ejb/wildfly/wildfly-ear/pom.xml b/spring-ejb/wildfly/wildfly-ear/pom.xml similarity index 100% rename from ejb/wildfly/wildfly-ear/pom.xml rename to spring-ejb/wildfly/wildfly-ear/pom.xml diff --git a/ejb/wildfly/wildfly-ejb-interfaces/pom.xml b/spring-ejb/wildfly/wildfly-ejb-interfaces/pom.xml similarity index 100% rename from ejb/wildfly/wildfly-ejb-interfaces/pom.xml rename to spring-ejb/wildfly/wildfly-ejb-interfaces/pom.xml diff --git a/ejb/wildfly/wildfly-ejb-interfaces/src/main/java/wildfly/beans/UserBeanLocal.java b/spring-ejb/wildfly/wildfly-ejb-interfaces/src/main/java/wildfly/beans/UserBeanLocal.java similarity index 100% rename from ejb/wildfly/wildfly-ejb-interfaces/src/main/java/wildfly/beans/UserBeanLocal.java rename to spring-ejb/wildfly/wildfly-ejb-interfaces/src/main/java/wildfly/beans/UserBeanLocal.java diff --git a/ejb/wildfly/wildfly-ejb-interfaces/src/main/java/wildfly/beans/UserBeanRemote.java b/spring-ejb/wildfly/wildfly-ejb-interfaces/src/main/java/wildfly/beans/UserBeanRemote.java similarity index 100% rename from ejb/wildfly/wildfly-ejb-interfaces/src/main/java/wildfly/beans/UserBeanRemote.java rename to spring-ejb/wildfly/wildfly-ejb-interfaces/src/main/java/wildfly/beans/UserBeanRemote.java diff --git a/ejb/ejb-session-beans/src/main/resources/logback.xml b/spring-ejb/wildfly/wildfly-ejb-interfaces/src/main/resources/logback.xml similarity index 100% rename from ejb/ejb-session-beans/src/main/resources/logback.xml rename to spring-ejb/wildfly/wildfly-ejb-interfaces/src/main/resources/logback.xml diff --git a/ejb/wildfly/wildfly-ejb/pom.xml b/spring-ejb/wildfly/wildfly-ejb/pom.xml similarity index 100% rename from ejb/wildfly/wildfly-ejb/pom.xml rename to spring-ejb/wildfly/wildfly-ejb/pom.xml diff --git a/ejb/wildfly/wildfly-ejb/src/main/java/wildfly/beans/UserBean.java b/spring-ejb/wildfly/wildfly-ejb/src/main/java/wildfly/beans/UserBean.java similarity index 100% rename from ejb/wildfly/wildfly-ejb/src/main/java/wildfly/beans/UserBean.java rename to spring-ejb/wildfly/wildfly-ejb/src/main/java/wildfly/beans/UserBean.java diff --git a/ejb/wildfly/widlfly-web/src/main/resources/logback.xml b/spring-ejb/wildfly/wildfly-ejb/src/main/resources/logback.xml similarity index 100% rename from ejb/wildfly/widlfly-web/src/main/resources/logback.xml rename to spring-ejb/wildfly/wildfly-ejb/src/main/resources/logback.xml diff --git a/ejb/wildfly/wildfly-jpa/pom.xml b/spring-ejb/wildfly/wildfly-jpa/pom.xml similarity index 100% rename from ejb/wildfly/wildfly-jpa/pom.xml rename to spring-ejb/wildfly/wildfly-jpa/pom.xml diff --git a/ejb/wildfly/wildfly-jpa/src/main/java/model/User.java b/spring-ejb/wildfly/wildfly-jpa/src/main/java/model/User.java similarity index 100% rename from ejb/wildfly/wildfly-jpa/src/main/java/model/User.java rename to spring-ejb/wildfly/wildfly-jpa/src/main/java/model/User.java diff --git a/ejb/wildfly/wildfly-jpa/src/main/resources/META-INF/persistence.xml b/spring-ejb/wildfly/wildfly-jpa/src/main/resources/META-INF/persistence.xml similarity index 100% rename from ejb/wildfly/wildfly-jpa/src/main/resources/META-INF/persistence.xml rename to spring-ejb/wildfly/wildfly-jpa/src/main/resources/META-INF/persistence.xml diff --git a/ejb/wildfly/wildfly-jpa/src/main/resources/data.sql b/spring-ejb/wildfly/wildfly-jpa/src/main/resources/data.sql similarity index 100% rename from ejb/wildfly/wildfly-jpa/src/main/resources/data.sql rename to spring-ejb/wildfly/wildfly-jpa/src/main/resources/data.sql diff --git a/ejb/wildfly/wildfly-ejb-interfaces/src/main/resources/logback.xml b/spring-ejb/wildfly/wildfly-jpa/src/main/resources/logback.xml similarity index 100% rename from ejb/wildfly/wildfly-ejb-interfaces/src/main/resources/logback.xml rename to spring-ejb/wildfly/wildfly-jpa/src/main/resources/logback.xml diff --git a/ejb/wildfly/wildfly-mdb/pom.xml b/spring-ejb/wildfly/wildfly-mdb/pom.xml similarity index 100% rename from ejb/wildfly/wildfly-mdb/pom.xml rename to spring-ejb/wildfly/wildfly-mdb/pom.xml diff --git a/ejb/wildfly/wildfly-mdb/src/com/baeldung/wildfly/mdb/ReadMessageMDB.java b/spring-ejb/wildfly/wildfly-mdb/src/com/baeldung/wildfly/mdb/ReadMessageMDB.java similarity index 100% rename from ejb/wildfly/wildfly-mdb/src/com/baeldung/wildfly/mdb/ReadMessageMDB.java rename to spring-ejb/wildfly/wildfly-mdb/src/com/baeldung/wildfly/mdb/ReadMessageMDB.java diff --git a/ejb/wildfly/wildfly-mdb/src/com/baeldung/wildfly/mdb/SendMessageServlet.java b/spring-ejb/wildfly/wildfly-mdb/src/com/baeldung/wildfly/mdb/SendMessageServlet.java similarity index 100% rename from ejb/wildfly/wildfly-mdb/src/com/baeldung/wildfly/mdb/SendMessageServlet.java rename to spring-ejb/wildfly/wildfly-mdb/src/com/baeldung/wildfly/mdb/SendMessageServlet.java From 2801a4093878ddb5041b378a92dac5bc9a0aa199 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Tue, 13 Nov 2018 20:03:07 +0530 Subject: [PATCH 074/119] BAEL-8874 Merge ejb projects -Removed reference of ejb projects from parent pom.xml --- pom.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pom.xml b/pom.xml index 9526158656..109a49d985 100644 --- a/pom.xml +++ b/pom.xml @@ -374,8 +374,6 @@ persistence-modules/deltaspike dozer ethereum - ejb - ejb/ejb-client feign flips testing-modules/gatling From 9b809fcc6205852c136cce4d7124a33dc917e661 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Tue, 13 Nov 2018 21:06:36 +0530 Subject: [PATCH 075/119] BAEL-10313 Help with test fixes in Abstract Classes and SimpleDateFormat -Removed corrupted surefire config from core-java module --- core-java/pom.xml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/core-java/pom.xml b/core-java/pom.xml index 2106b45fab..fc2d44e233 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -1,7 +1,6 @@ 4.0.0 - com.baeldung core-java 0.1.0-SNAPSHOT jar @@ -173,21 +172,6 @@ - - org.apache.maven.plugins - maven-surefire-plugin - - - **/*LiveTest.java - **/*IntegrationTest.java - **/*IntTest.java - **/*LongRunningUnitTest.java - **/*ManualTest.java - - true - - - org.apache.maven.plugins maven-dependency-plugin From 43483cfecadead1303f3087c16d6422528d5ce5a Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Tue, 13 Nov 2018 23:52:32 +0200 Subject: [PATCH 076/119] Update pom.xml --- core-java/pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/core-java/pom.xml b/core-java/pom.xml index fc2d44e233..9fbc8f6810 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -529,5 +529,4 @@ 1.8.0 - From 99c3e0b207759792fbd5a235db15f5873d4f273b Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Wed, 14 Nov 2018 19:05:27 +0200 Subject: [PATCH 077/119] Update README.md --- spring-rest-simple/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-rest-simple/README.md b/spring-rest-simple/README.md index 57d6f50887..179e556202 100644 --- a/spring-rest-simple/README.md +++ b/spring-rest-simple/README.md @@ -2,7 +2,6 @@ - [Guide to UriComponentsBuilder in Spring](http://www.baeldung.com/spring-uricomponentsbuilder) - [Returning Custom Status Codes from Spring Controllers](http://www.baeldung.com/spring-mvc-controller-custom-http-status-code) -- [The Guide to RestTemplate](http://www.baeldung.com/rest-template) - [Spring RequestMapping](http://www.baeldung.com/spring-requestmapping) - [ETags for REST with Spring](http://www.baeldung.com/etags-for-rest-with-spring) - [Spring and Apache FileUpload](http://www.baeldung.com/spring-apache-file-upload) From d2dcc13054cea67ba4f1a786c3fccd82581d32a5 Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Wed, 14 Nov 2018 19:08:22 +0200 Subject: [PATCH 078/119] Update README.md --- spring-ejb/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-ejb/README.md b/spring-ejb/README.md index 7b8696597d..58ccb20e70 100644 --- a/spring-ejb/README.md +++ b/spring-ejb/README.md @@ -6,3 +6,4 @@ - [A Guide to Message Driven Beans in EJB](http://www.baeldung.com/ejb-message-driven-beans) - [Integration Guide for Spring and EJB](http://www.baeldung.com/spring-ejb) - [Singleton Session Bean in Java EE](http://www.baeldung.com/java-ee-singleton-session-bean) + From 42fac5dbcfa362e13b6322c98a4e58595b40a59a Mon Sep 17 00:00:00 2001 From: freddyaott Date: Thu, 15 Nov 2018 03:54:16 +0100 Subject: [PATCH 079/119] Java Math (#5684) --- .../com/baeldung/java/math/MathUnitTest.java | 175 ++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 core-java/src/test/java/com/baeldung/java/math/MathUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java/math/MathUnitTest.java b/core-java/src/test/java/com/baeldung/java/math/MathUnitTest.java new file mode 100644 index 0000000000..6d1872f05f --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/math/MathUnitTest.java @@ -0,0 +1,175 @@ +package com.baeldung.java.math; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class MathUnitTest { + + @Test + public void whenAbsInteger_thenReturnAbsoluteValue() { + assertEquals(5,Math.abs(-5)); + } + + @Test + public void whenMaxBetweenTwoValue_thenReturnMaximum() { + assertEquals(10, Math.max(5,10)); + } + + @Test + public void whenMinBetweenTwoValue_thenReturnMinimum() { + assertEquals(5, Math.min(5,10)); + } + + @Test + public void whenSignumWithNegativeNumber_thenReturnMinusOne() { + assertEquals(-1, Math.signum(-5), 0); + } + + @Test + public void whenCopySignWithNegativeSign_thenReturnNegativeArgument() { + assertEquals(-5, Math.copySign(5,-1), 0); + } + + @Test + public void whenPow_thenReturnPoweredValue() { + assertEquals(25, Math.pow(5,2),0); + } + + @Test + public void whenSqrt_thenReturnSquareRoot() { + assertEquals(5, Math.sqrt(25),0); + } + + @Test + public void whenCbrt_thenReturnCubeRoot() { + assertEquals(5, Math.cbrt(125),0); + } + + @Test + public void whenExp_thenReturnEulerNumberRaised() { + assertEquals(2.718, Math.exp(1),0.1); + } + + @Test + public void whenExpm1_thenReturnEulerNumberMinusOne() { + assertEquals(1.718, Math.expm1(1),0.1); + } + + @Test + public void whenGetExponent_thenReturnUnbiasedExponent() { + assertEquals(8, Math.getExponent(333.3),0); + assertEquals(7, Math.getExponent(222.2f),0); + } + + @Test + public void whenLog_thenReturnValue() { + assertEquals(1, Math.log(Math.E),0); + } + + @Test + public void whenLog10_thenReturnValue() { + assertEquals(1, Math.log10(10),0); + } + + @Test + public void whenLog1p_thenReturnValue() { + assertEquals(1.31, Math.log1p(Math.E),0.1); + } + + @Test + public void whenSin_thenReturnValue() { + assertEquals(1, Math.sin(Math.PI/2),0); + } + + @Test + public void whenCos_thenReturnValue() { + assertEquals(1, Math.cos(0),0); + } + + @Test + public void whenTan_thenReturnValue() { + assertEquals(1, Math.tan(Math.PI/4),0.1); + } + + @Test + public void whenAsin_thenReturnValue() { + assertEquals(Math.PI/2, Math.asin(1),0); + } + + @Test + public void whenAcos_thenReturnValue() { + assertEquals(Math.PI/2, Math.acos(0),0); + } + + @Test + public void whenAtan_thenReturnValue() { + assertEquals(Math.PI/4, Math.atan(1),0); + } + + @Test + public void whenAtan2_thenReturnValue() { + assertEquals(Math.PI/4, Math.atan2(1,1),0); + } + + @Test + public void whenToDegrees_thenReturnValue() { + assertEquals(180, Math.toDegrees(Math.PI),0); + } + + @Test + public void whenToRadians_thenReturnValue() { + assertEquals(Math.PI, Math.toRadians(180),0); + } + + @Test + public void whenCeil_thenReturnValue() { + assertEquals(4, Math.ceil(Math.PI),0); + } + + @Test + public void whenFloor_thenReturnValue() { + assertEquals(3, Math.floor(Math.PI),0); + } + + @Test + public void whenGetExponent_thenReturnValue() { + assertEquals(8, Math.getExponent(333.3),0); + } + + @Test + public void whenIEEERemainder_thenReturnValue() { + assertEquals(1.0, Math.IEEEremainder(5,2),0); + } + + @Test + public void whenNextAfter_thenReturnValue() { + assertEquals(1.9499999284744263, Math.nextAfter(1.95f,1),0.0000001); + } + + @Test + public void whenNextUp_thenReturnValue() { + assertEquals(1.9500002, Math.nextUp(1.95f),0.0000001); + } + + @Test + public void whenRint_thenReturnValue() { + assertEquals(2.0, Math.rint(1.95f),0.0); + } + + @Test + public void whenRound_thenReturnValue() { + assertEquals(2.0, Math.round(1.95f),0.0); + } + + @Test + public void whenScalb_thenReturnValue() { + assertEquals(48, Math.scalb(3, 4),0.0); + } + + @Test + public void whenHypot_thenReturnValue() { + assertEquals(5, Math.hypot(4, 3),0.0); + } + +} From de3a7e4727aeb0b454d5ff7947fe19cb645017af Mon Sep 17 00:00:00 2001 From: thoughtscript Date: Wed, 14 Nov 2018 20:39:48 -0800 Subject: [PATCH 080/119] support for swagger 2 boot 2.x --- spring-boot-mvc/README.md | 1 + spring-boot-mvc/pom.xml | 27 +++++-- .../com/baeldung/swaggerboot/Application.java | 15 ++++ .../com/baeldung/swaggerboot/Constants.java | 16 ++++ .../configuration/SpringFoxConfig.java | 73 +++++++++++++++++++ .../controller/RegularRestController.java | 22 ++++++ .../services/RegularWebService.java | 20 +++++ .../swaggerboot/transfer/CustomResponse.java | 31 ++++++++ 8 files changed, 200 insertions(+), 5 deletions(-) create mode 100644 spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Application.java create mode 100644 spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Constants.java create mode 100644 spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/configuration/SpringFoxConfig.java create mode 100644 spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/controller/RegularRestController.java create mode 100644 spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/services/RegularWebService.java create mode 100644 spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/transfer/CustomResponse.java diff --git a/spring-boot-mvc/README.md b/spring-boot-mvc/README.md index e7b42f8f50..bf32e4fc7c 100644 --- a/spring-boot-mvc/README.md +++ b/spring-boot-mvc/README.md @@ -9,3 +9,4 @@ - [Display RSS Feed with Spring MVC](http://www.baeldung.com/spring-mvc-rss-feed) - [A Controller, Service and DAO Example with Spring Boot and JSF](https://www.baeldung.com/jsf-spring-boot-controller-service-dao) - [Cache Eviction in Spring Boot](https://www.baeldung.com/spring-boot-evict-cache) +- [Setting Up Swagger 2 with a Spring REST API](http://www.baeldung.com/swagger-2-documentation-for-spring-rest-api) \ No newline at end of file diff --git a/spring-boot-mvc/pom.xml b/spring-boot-mvc/pom.xml index 5f6cdff85b..b219e53431 100644 --- a/spring-boot-mvc/pom.xml +++ b/spring-boot-mvc/pom.xml @@ -15,6 +15,7 @@ + org.springframework.boot spring-boot-starter-web @@ -23,6 +24,7 @@ org.apache.tomcat.embed tomcat-embed-jasper + org.glassfish @@ -30,17 +32,13 @@ 2.3.7 + org.springframework.boot spring-boot-starter-test test - - org.springframework.boot - spring-boot-starter-validation - - com.rometools @@ -48,6 +46,7 @@ ${rome.version} + org.hibernate.validator hibernate-validator @@ -56,6 +55,23 @@ javax.validation validation-api + + org.springframework.boot + spring-boot-starter-validation + + + + + io.springfox + springfox-swagger2 + ${spring.fox.version} + + + io.springfox + springfox-swagger-ui + ${spring.fox.version} + + @@ -72,6 +88,7 @@ + 2.9.2 1.10.0 com.baeldung.springbootmvc.SpringBootMvcApplication diff --git a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Application.java b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Application.java new file mode 100644 index 0000000000..2161597c4e --- /dev/null +++ b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Application.java @@ -0,0 +1,15 @@ +package com.baeldung.swaggerboot; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +@SpringBootApplication +@ComponentScan(basePackages = {"com.baeldung"}) +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} \ No newline at end of file diff --git a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Constants.java b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Constants.java new file mode 100644 index 0000000000..14b4162713 --- /dev/null +++ b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Constants.java @@ -0,0 +1,16 @@ +package com.baeldung.swaggerboot; + +public class Constants { + + public static final String DEFAULT_GREETING = "Howdy Cosmic Spheroid!"; + public static final String DEFAULT_ERROR = "Fail!"; + + /** + * API Endpoint. + */ + + public static final String REACTIVE_REST_URL = "/reactiverest"; + public static final String FUNCTIONAL_URL = "/functional"; + public static final String REGULAR_REST_URL = "/regularrest"; + +} \ No newline at end of file diff --git a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/configuration/SpringFoxConfig.java b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/configuration/SpringFoxConfig.java new file mode 100644 index 0000000000..babe70580c --- /dev/null +++ b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/configuration/SpringFoxConfig.java @@ -0,0 +1,73 @@ +package com.baeldung.swaggerboot.configuration; + +import com.fasterxml.classmate.TypeResolver; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger.web.*; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import java.util.Collections; + +@Configuration +@EnableSwagger2 +@ComponentScan("com.baeldung.swaggerboot.controller") +public class SpringFoxConfig { + + @Autowired + private TypeResolver typeResolver; + + private ApiInfo apiInfo() { + return new ApiInfo( + "My REST API", + "Some custom description of API.", + "API TOS", + "Terms of service", + new Contact("John Doe", "www.example.com", "myeaddress@company.com"), + "License of API", + "API license URL", + Collections.emptyList()); + } + + @Bean + public Docket api() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.any()) + .paths(PathSelectors.any()) + .build(); + } + + /** + * SwaggerUI information + */ + + @Bean + UiConfiguration uiConfig() { + return UiConfigurationBuilder.builder() + .deepLinking(true) + .displayOperationId(false) + .defaultModelsExpandDepth(1) + .defaultModelExpandDepth(1) + .defaultModelRendering(ModelRendering.EXAMPLE) + .displayRequestDuration(false) + .docExpansion(DocExpansion.NONE) + .filter(false) + .maxDisplayedTags(null) + .operationsSorter(OperationsSorter.ALPHA) + .showExtensions(false) + .tagsSorter(TagsSorter.ALPHA) + .supportedSubmitMethods(UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS) + .validatorUrl(null) + .build(); + } + +} diff --git a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/controller/RegularRestController.java b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/controller/RegularRestController.java new file mode 100644 index 0000000000..537e16d146 --- /dev/null +++ b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/controller/RegularRestController.java @@ -0,0 +1,22 @@ +package com.baeldung.swaggerboot.controller; + +import com.baeldung.swaggerboot.services.RegularWebService; +import com.baeldung.swaggerboot.transfer.CustomResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import static com.baeldung.swaggerboot.Constants.REGULAR_REST_URL; + +@RestController +public class RegularRestController { + + @Autowired + RegularWebService regularWebService; + + @GetMapping(REGULAR_REST_URL) + public CustomResponse getSession() { + return regularWebService.example(); + } + +} \ No newline at end of file diff --git a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/services/RegularWebService.java b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/services/RegularWebService.java new file mode 100644 index 0000000000..d13ed7a6a9 --- /dev/null +++ b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/services/RegularWebService.java @@ -0,0 +1,20 @@ +package com.baeldung.swaggerboot.services; + +import com.baeldung.swaggerboot.transfer.CustomResponse; +import org.springframework.stereotype.Service; + +import static com.baeldung.swaggerboot.Constants.DEFAULT_ERROR; +import static com.baeldung.swaggerboot.Constants.DEFAULT_GREETING; + +@Service +public class RegularWebService { + + public CustomResponse example() { + try { + return new CustomResponse(0, DEFAULT_GREETING); + } catch (Exception ex) { + return new CustomResponse(0, DEFAULT_ERROR); + } + } + +} \ No newline at end of file diff --git a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/transfer/CustomResponse.java b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/transfer/CustomResponse.java new file mode 100644 index 0000000000..d09e9f935e --- /dev/null +++ b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/transfer/CustomResponse.java @@ -0,0 +1,31 @@ +package com.baeldung.swaggerboot.transfer; + +public class CustomResponse { + + private int id; + private String note; + + public CustomResponse() {} + + public CustomResponse(int id, String note) { + this.id = id; + this.note = note; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } + +} From 927a8851aea72c2e0098845f70e2ffc05d6b3345 Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Thu, 15 Nov 2018 21:27:02 +0330 Subject: [PATCH 081/119] BAEL-2374: Added a simple reified generic example. --- core-kotlin/src/main/kotlin/com/baeldung/generic/Reified.kt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 core-kotlin/src/main/kotlin/com/baeldung/generic/Reified.kt diff --git a/core-kotlin/src/main/kotlin/com/baeldung/generic/Reified.kt b/core-kotlin/src/main/kotlin/com/baeldung/generic/Reified.kt new file mode 100644 index 0000000000..37a632fe41 --- /dev/null +++ b/core-kotlin/src/main/kotlin/com/baeldung/generic/Reified.kt @@ -0,0 +1,6 @@ +inline fun Iterable<*>.filterIsInstance() = filter { it is T } + +fun main(args: Array) { + val set = setOf("1984", 2, 3, "Brave new world", 11) + println(set.filterIsInstance()) +} \ No newline at end of file From f0f1eba7b91e9743f15fd4e7b5d53bbccd5bac41 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Fri, 16 Nov 2018 10:04:48 +0800 Subject: [PATCH 082/119] change from @before to init --- .../test/kotlin/com/baeldung/random/RandomStringTest.kt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt index 0715870403..f44b0cd437 100644 --- a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt +++ b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt @@ -16,11 +16,10 @@ class RandomStringTest { val charPool = ArrayList() - @BeforeEach - fun charPool() { - charPool.addAll('a'..'z'); - charPool.addAll('A'..'Z'); - charPool.addAll('0'..'9'); + init { + charPool.addAll('a'..'z') + charPool.addAll('A'..'Z') + charPool.addAll('0'..'9') } @Test From e27d5f4f1f81c5f3f0e9c69175d2bc21b751350e Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Fri, 16 Nov 2018 10:05:09 +0800 Subject: [PATCH 083/119] change from @before to init --- .../src/test/kotlin/com/baeldung/random/RandomStringTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt index f44b0cd437..a2a1ac58e3 100644 --- a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt +++ b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt @@ -14,7 +14,7 @@ const val ALPHANUMERIC_REGEX = "[a-zA-Z0-9]+" class RandomStringTest { - val charPool = ArrayList() + private val charPool = ArrayList() init { charPool.addAll('a'..'z') From 3ee9050138e10a087562d4b410d9d9eb7de158b4 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Fri, 16 Nov 2018 10:18:14 +0800 Subject: [PATCH 084/119] change from @before to init --- .../test/kotlin/com/baeldung/random/RandomStringTest.kt | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt index a2a1ac58e3..3c7bc44ea8 100644 --- a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt +++ b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt @@ -13,14 +13,7 @@ const val STRING_LENGTH = 10 const val ALPHANUMERIC_REGEX = "[a-zA-Z0-9]+" class RandomStringTest { - - private val charPool = ArrayList() - - init { - charPool.addAll('a'..'z') - charPool.addAll('A'..'Z') - charPool.addAll('0'..'9') - } + private val charPool : List = ('a'..'z') + ('A'..'Z') + ('0'..'9') @Test fun givenAStringLength_whenUsingJava_thenReturnAlphanumericString() { From 0b15affd0ecd22ba7fbd16d74da14dd707144c6a Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Fri, 16 Nov 2018 13:46:14 +0800 Subject: [PATCH 085/119] rename to RandomStringUnitTest --- .../random/{RandomStringTest.kt => RandomStringUnitTest.kt} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename core-kotlin/src/test/kotlin/com/baeldung/random/{RandomStringTest.kt => RandomStringUnitTest.kt} (98%) diff --git a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringUnitTest.kt similarity index 98% rename from core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt rename to core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringUnitTest.kt index 3c7bc44ea8..74085367e8 100644 --- a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringTest.kt +++ b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringUnitTest.kt @@ -12,7 +12,7 @@ import kotlin.test.assertEquals const val STRING_LENGTH = 10 const val ALPHANUMERIC_REGEX = "[a-zA-Z0-9]+" -class RandomStringTest { +class RandomStringUnitTest { private val charPool : List = ('a'..'z') + ('A'..'Z') + ('0'..'9') @Test From 007aa9b66eee29634b454279b42eda79708d054d Mon Sep 17 00:00:00 2001 From: Rahul Srivastava Date: Fri, 16 Nov 2018 11:22:18 +0530 Subject: [PATCH 086/119] Changing para to rhyme --- .../string/AddingNewLineToString.java | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/string/AddingNewLineToString.java b/core-java/src/main/java/com/baeldung/string/AddingNewLineToString.java index 0b3fd2ca92..b522f7337b 100644 --- a/core-java/src/main/java/com/baeldung/string/AddingNewLineToString.java +++ b/core-java/src/main/java/com/baeldung/string/AddingNewLineToString.java @@ -5,65 +5,65 @@ public class AddingNewLineToString { public static void main(String[] args) { String line1 = "Humpty Dumpty sat on a wall."; String line2 = "Humpty Dumpty had a great fall."; - String para = ""; + String rhyme = ""; System.out.println("***New Line in a String in Java***"); //1. Using "\n" System.out.println("1. Using \\n"); - para = line1 + "\n" + line2; - System.out.println(para); + rhyme = line1 + "\n" + line2; + System.out.println(rhyme); //2. Using "\r\n" System.out.println("2. Using \\r\\n"); - para = line1 + "\r\n" + line2; - System.out.println(para); + rhyme = line1 + "\r\n" + line2; + System.out.println(rhyme); //3. Using "\r" System.out.println("3. Using \\r"); - para = line1 + "\r" + line2; - System.out.println(para); + rhyme = line1 + "\r" + line2; + System.out.println(rhyme); //4. Using "\n\r" Note that this is not same as "\r\n" // Using "\n\r" is equivalent to adding two lines System.out.println("4. Using \\n\\r"); - para = line1 + "\n\r" + line2; - System.out.println(para); + rhyme = line1 + "\n\r" + line2; + System.out.println(rhyme); //5. Using System.lineSeparator() System.out.println("5. Using System.lineSeparator()"); - para = line1 + System.lineSeparator() + line2; - System.out.println(para); + rhyme = line1 + System.lineSeparator() + line2; + System.out.println(rhyme); //6. Using System.getProperty("line.separator") System.out.println("6. Using System.getProperty(\"line.separator\")"); - para = line1 + System.getProperty("line.separator") + line2; - System.out.println(para); + rhyme = line1 + System.getProperty("line.separator") + line2; + System.out.println(rhyme); System.out.println("***HTML to rendered in a browser***"); //1. Line break for HTML using
System.out.println("1. Line break for HTML using
"); - para = line1 + "
" + line2; - System.out.println(para); + rhyme = line1 + "
" + line2; + System.out.println(rhyme); //2. Line break for HTML using “ ” System.out.println("2. Line break for HTML using "); - para = line1 + " " + line2; - System.out.println(para); + rhyme = line1 + " " + line2; + System.out.println(rhyme); //3. Line break for HTML using “ ” System.out.println("3. Line break for HTML using "); - para = line1 + " " + line2; - System.out.println(para); + rhyme = line1 + " " + line2; + System.out.println(rhyme); //4. Line break for HTML using “ ;” System.out.println("4. Line break for HTML using "); - para = line1 + " " + line2; - System.out.println(para); + rhyme = line1 + " " + line2; + System.out.println(rhyme); //5. Line break for HTML using \n” System.out.println("5. Line break for HTML using \\n"); - para = line1 + "\n" + line2; - System.out.println(para); + rhyme = line1 + "\n" + line2; + System.out.println(rhyme); } } \ No newline at end of file From 99b8077bba5017fdcececd07f809b7d9be363dc2 Mon Sep 17 00:00:00 2001 From: amit2103 Date: Fri, 16 Nov 2018 16:06:20 +0530 Subject: [PATCH 087/119] [BAEL-10302] - Moved articles to core-java-collections --- core-java-collections/README.md | 7 +++++++ core-java-collections/pom.xml | 7 +++++++ .../baeldung/classcastexception/ClassCastException.java | 0 .../listInitialization/ListInitializationUnitTest.java | 0 .../test/java/org/baeldung/java/sorting/Employee.java | 0 .../org/baeldung/java/sorting/JavaSortingUnitTest.java | 0 core-java/README.md | 9 --------- 7 files changed, 14 insertions(+), 9 deletions(-) rename {core-java => core-java-collections}/src/main/java/com/baeldung/classcastexception/ClassCastException.java (100%) rename {core-java => core-java-collections}/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java (100%) rename {core-java => core-java-collections}/src/test/java/org/baeldung/java/sorting/Employee.java (100%) rename {core-java => core-java-collections}/src/test/java/org/baeldung/java/sorting/JavaSortingUnitTest.java (100%) diff --git a/core-java-collections/README.md b/core-java-collections/README.md index fbc8144954..0fcf7367c7 100644 --- a/core-java-collections/README.md +++ b/core-java-collections/README.md @@ -43,3 +43,10 @@ - [Converting a Collection to ArrayList in Java](https://www.baeldung.com/java-convert-collection-arraylist) - [Java 8 Streams: Find Items From One List Based On Values From Another List](https://www.baeldung.com/java-streams-find-list-items) - [Combining Different Types of Collections in Java](https://www.baeldung.com/java-combine-collections) +- [Sorting in Java](http://www.baeldung.com/java-sorting) +- [A Guide to the Java LinkedList](http://www.baeldung.com/java-linkedlist) +- [Java List UnsupportedOperationException](http://www.baeldung.com/java-list-unsupported-operation-exception) +- [Join and Split Arrays and Collections in Java](http://www.baeldung.com/java-join-and-split) +- [Check If Two Lists are Equal in Java](http://www.baeldung.com/java-test-a-list-for-ordinality-and-equality) +- [Java List Initialization in One Line](https://www.baeldung.com/java-init-list-one-line) +- [ClassCastException: Arrays$ArrayList cannot be cast to ArrayList](https://www.baeldung.com/java-classcastexception-arrays-arraylist) diff --git a/core-java-collections/pom.xml b/core-java-collections/pom.xml index 31f0d7419f..2201ee8b15 100644 --- a/core-java-collections/pom.xml +++ b/core-java-collections/pom.xml @@ -56,6 +56,12 @@ commons-exec 1.3 + + org.projectlombok + lombok + ${lombok.version} + provided + @@ -67,5 +73,6 @@ 1.7.0 3.11.1 7.1.0 + 1.16.12 diff --git a/core-java/src/main/java/com/baeldung/classcastexception/ClassCastException.java b/core-java-collections/src/main/java/com/baeldung/classcastexception/ClassCastException.java similarity index 100% rename from core-java/src/main/java/com/baeldung/classcastexception/ClassCastException.java rename to core-java-collections/src/main/java/com/baeldung/classcastexception/ClassCastException.java diff --git a/core-java/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java b/core-java-collections/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java rename to core-java-collections/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/sorting/Employee.java b/core-java-collections/src/test/java/org/baeldung/java/sorting/Employee.java similarity index 100% rename from core-java/src/test/java/org/baeldung/java/sorting/Employee.java rename to core-java-collections/src/test/java/org/baeldung/java/sorting/Employee.java diff --git a/core-java/src/test/java/org/baeldung/java/sorting/JavaSortingUnitTest.java b/core-java-collections/src/test/java/org/baeldung/java/sorting/JavaSortingUnitTest.java similarity index 100% rename from core-java/src/test/java/org/baeldung/java/sorting/JavaSortingUnitTest.java rename to core-java-collections/src/test/java/org/baeldung/java/sorting/JavaSortingUnitTest.java diff --git a/core-java/README.md b/core-java/README.md index 2be137add6..035efc673c 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -10,7 +10,6 @@ - [Guide to the Fork/Join Framework in Java](http://www.baeldung.com/java-fork-join) - [How to Print Screen in Java](http://www.baeldung.com/print-screen-in-java) - [A Guide To Java Regular Expressions API](http://www.baeldung.com/regular-expressions-java) -- [Sorting in Java](http://www.baeldung.com/java-sorting) - [Getting Started with Java Properties](http://www.baeldung.com/java-properties) - [Pattern Search with Grep in Java](http://www.baeldung.com/grep-in-java) - [URL Encoding and Decoding in Java](http://www.baeldung.com/java-url-encoding-decoding) @@ -39,7 +38,6 @@ - [Quick Guide to Java Stack](http://www.baeldung.com/java-stack) - [Guide to java.util.Formatter](http://www.baeldung.com/java-string-formatter) - [Guide to the Cipher Class](http://www.baeldung.com/java-cipher-class) -- [Implementing a Binary Tree in Java](http://www.baeldung.com/java-binary-tree) - [A Guide to ThreadLocalRandom in Java](http://www.baeldung.com/java-thread-local-random) - [Compiling Java *.class Files with javac](http://www.baeldung.com/javac) - [A Guide to Iterator in Java](http://www.baeldung.com/java-iterator) @@ -49,15 +47,10 @@ - [A Practical Guide to DecimalFormat](http://www.baeldung.com/java-decimalformat) - [How to Detect the OS Using Java](http://www.baeldung.com/java-detect-os) - [ASCII Art in Java](http://www.baeldung.com/ascii-art-in-java) -- [Finding Max/Min of a List or Collection](http://www.baeldung.com/java-collection-min-max) - [What is the serialVersionUID?](http://www.baeldung.com/java-serial-version-uid) - [A Guide To UDP In Java](http://www.baeldung.com/udp-in-java) -- [A Guide to the Java LinkedList](http://www.baeldung.com/java-linkedlist) - [A Guide to the ResourceBundle](http://www.baeldung.com/java-resourcebundle) - [Class Loaders in Java](http://www.baeldung.com/java-classloaders) -- [Java List UnsupportedOperationException](http://www.baeldung.com/java-list-unsupported-operation-exception) -- [Join and Split Arrays and Collections in Java](http://www.baeldung.com/java-join-and-split) -- [Check If Two Lists are Equal in Java](http://www.baeldung.com/java-test-a-list-for-ordinality-and-equality) - [Sending Emails with Java](http://www.baeldung.com/java-email) - [Introduction to SSL in Java](http://www.baeldung.com/java-ssl) - [Java KeyStore API](http://www.baeldung.com/java-keystore) @@ -80,8 +73,6 @@ - [Getting a File’s Mime Type in Java](http://www.baeldung.com/java-file-mime-type) - [Common Java Exceptions](http://www.baeldung.com/java-common-exceptions) - [Java Constructors vs Static Factory Methods](https://www.baeldung.com/java-constructors-vs-static-factory-methods) -- [Java List Initialization in One Line](https://www.baeldung.com/java-init-list-one-line) -- [ClassCastException: Arrays$ArrayList cannot be cast to ArrayList](https://www.baeldung.com/java-classcastexception-arrays-arraylist) - [Throw Exception in Optional in Java 8](https://www.baeldung.com/java-optional-throw-exception) - [Add a Character to a String at a Given Position](https://www.baeldung.com/java-add-character-to-string) - [Calculating the nth Root in Java](https://www.baeldung.com/java-nth-root) From a0a80af9d0c7ec9cd5a244efd4b294bf9c06c232 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Fri, 16 Nov 2018 23:39:40 +0800 Subject: [PATCH 088/119] Generate a random alphanumeric string in Kotlin Issue: BAEL-1913 --- core-kotlin/pom.xml | 6 ++ .../baeldung/random/RandomStringUnitTest.kt | 62 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringUnitTest.kt diff --git a/core-kotlin/pom.xml b/core-kotlin/pom.xml index 5cdb5f700e..2b559b19e0 100644 --- a/core-kotlin/pom.xml +++ b/core-kotlin/pom.xml @@ -18,6 +18,11 @@ commons-math3 ${commons-math3.version} + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + org.junit.platform junit-platform-runner @@ -70,6 +75,7 @@ 3.6.1 + 3.8.1 1.1.1 5.2.0 3.10.0 diff --git a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringUnitTest.kt b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringUnitTest.kt new file mode 100644 index 0000000000..74085367e8 --- /dev/null +++ b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringUnitTest.kt @@ -0,0 +1,62 @@ +import org.apache.commons.lang3.RandomStringUtils +import org.junit.Before +import org.junit.jupiter.api.BeforeAll +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import java.security.SecureRandom +import java.util.concurrent.ThreadLocalRandom +import kotlin.experimental.and +import kotlin.streams.asSequence +import kotlin.test.assertEquals + +const val STRING_LENGTH = 10 +const val ALPHANUMERIC_REGEX = "[a-zA-Z0-9]+" + +class RandomStringUnitTest { + private val charPool : List = ('a'..'z') + ('A'..'Z') + ('0'..'9') + + @Test + fun givenAStringLength_whenUsingJava_thenReturnAlphanumericString() { + var randomString = ThreadLocalRandom.current() + .ints(STRING_LENGTH.toLong(), 0, charPool.size) + .asSequence() + .map(charPool::get) + .joinToString("") + + assert(randomString.matches(Regex(ALPHANUMERIC_REGEX))) + assertEquals(STRING_LENGTH, randomString.length) + } + + @Test + fun givenAStringLength_whenUsingKotlin_thenReturnAlphanumericString() { + var randomString = (1..STRING_LENGTH).map { i -> kotlin.random.Random.nextInt(0, charPool.size) } + .map(charPool::get) + .joinToString("") + + assert(randomString.matches(Regex(ALPHANUMERIC_REGEX))) + assertEquals(STRING_LENGTH, randomString.length) + } + + @Test + fun givenAStringLength_whenUsingApacheCommon_thenReturnAlphanumericString() { + var randomString = RandomStringUtils.randomAlphanumeric(STRING_LENGTH) + + assert(randomString.matches(Regex(ALPHANUMERIC_REGEX))) + assertEquals(STRING_LENGTH, randomString.length) + } + + @Test + fun givenAStringLength_whenUsingRandomForBytes_thenReturnAlphanumericString() { + val random = SecureRandom() + val bytes = ByteArray(STRING_LENGTH) + random.nextBytes(bytes) + + var randomString = (0..bytes.size - 1).map { i -> + charPool.get((bytes[i] and 0xFF.toByte() and charPool.size.toByte()).toInt()) + }.joinToString("") + + assert(randomString.matches(Regex(ALPHANUMERIC_REGEX))) + assertEquals(STRING_LENGTH, randomString.length) + } + +} \ No newline at end of file From 47735dcd70a428659b27ab46fa86b4f65bf4c4c1 Mon Sep 17 00:00:00 2001 From: geroza Date: Fri, 16 Nov 2018 14:34:48 -0200 Subject: [PATCH 089/119] Fixed issues due to parent-boot-2 migration (migration to Spring-boot 2): * Configured Hiberante 5 correctly * Configured Git plugin correctly * Changed hibernate methods to comply with new method naming conventions * Removed and replaced deprecated properties * Updated Actuator test to use new response structure * Using random port in Mongo integration test, to avoid clashing with a potential instance using the mongo default port --- spring-boot/.attach_pid12812 | 0 spring-boot/pom.xml | 41 ++++++++++-- .../ContactInfoValidator.java | 2 +- .../DynamicValidationApp.java | 3 +- .../dao/ContactInfoExpressionRepository.java | 2 +- .../FailureAnalyzerApplication.java | 1 - .../InternationalizationApp.java | 1 - .../main/java/com/baeldung/rss/RssApp.java | 5 +- .../baeldung/toggle/ToggleApplication.java | 1 - .../session/exception/Application.java | 7 -- .../repository/FooRepositoryImpl.java | 9 +-- .../src/main/resources/application.properties | 3 +- ...otWithServletComponentIntegrationTest.java | 1 - ...ithoutServletComponentIntegrationTest.java | 1 - .../DisplayBeanIntegrationTest.java | 65 +++++++++++++------ .../baeldung/git/CommitIdIntegrationTest.java | 6 +- .../java/com/baeldung/intro/AppLiveTest.java | 1 - .../ManualEmbeddedMongoDbIntegrationTest.java | 7 +- .../src/test/resources/application.properties | 14 ++-- .../src/test/resources/exception.properties | 4 +- 20 files changed, 109 insertions(+), 65 deletions(-) create mode 100644 spring-boot/.attach_pid12812 diff --git a/spring-boot/.attach_pid12812 b/spring-boot/.attach_pid12812 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index f16460b7c3..dbb098ccc2 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -1,4 +1,5 @@ - 4.0.0 spring-boot @@ -55,6 +56,14 @@ org.springframework.boot spring-boot-starter-data-jpa + + org.ehcache + ehcache + + + org.hibernate + hibernate-ehcache + org.springframework.boot spring-boot-starter-actuator @@ -143,10 +152,10 @@ chaos-monkey-spring-boot ${chaos.monkey.version} - + - javax.validation - validation-api + javax.validation + validation-api @@ -170,6 +179,28 @@ pl.project13.maven git-commit-id-plugin ${git-commit-id-plugin.version} + + + + get-the-git-infos + + revision + + initialize + + + validate-the-git-infos + + validateRevision + + package + + + + + true + ${project.build.outputDirectory}/git.properties + @@ -223,7 +254,7 @@ 3.6.0 3.2.0 18.0 - 2.2.4 + 2.2.4
diff --git a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java index e079b9a665..cc05fd4fbd 100644 --- a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java +++ b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java @@ -30,7 +30,7 @@ public class ContactInfoValidator implements ConstraintValidator { - Optional findOne(String id); + Optional findById(String id); } diff --git a/spring-boot/src/main/java/com/baeldung/failureanalyzer/FailureAnalyzerApplication.java b/spring-boot/src/main/java/com/baeldung/failureanalyzer/FailureAnalyzerApplication.java index 3489732b6f..7bd5c36786 100644 --- a/spring-boot/src/main/java/com/baeldung/failureanalyzer/FailureAnalyzerApplication.java +++ b/spring-boot/src/main/java/com/baeldung/failureanalyzer/FailureAnalyzerApplication.java @@ -9,7 +9,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; public class FailureAnalyzerApplication { @RolesAllowed("*") public static void main(String[] args) { - System.setProperty("security.basic.enabled", "false"); SpringApplication.run(FailureAnalyzerApplication.class, args); } } diff --git a/spring-boot/src/main/java/com/baeldung/internationalization/InternationalizationApp.java b/spring-boot/src/main/java/com/baeldung/internationalization/InternationalizationApp.java index c92d1c32e6..c3af611f3b 100644 --- a/spring-boot/src/main/java/com/baeldung/internationalization/InternationalizationApp.java +++ b/spring-boot/src/main/java/com/baeldung/internationalization/InternationalizationApp.java @@ -9,7 +9,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; public class InternationalizationApp { @RolesAllowed("*") public static void main(String[] args) { - System.setProperty("security.basic.enabled", "false"); SpringApplication.run(InternationalizationApp.class, args); } } diff --git a/spring-boot/src/main/java/com/baeldung/rss/RssApp.java b/spring-boot/src/main/java/com/baeldung/rss/RssApp.java index d3d3d0241f..e067d3cfd1 100644 --- a/spring-boot/src/main/java/com/baeldung/rss/RssApp.java +++ b/spring-boot/src/main/java/com/baeldung/rss/RssApp.java @@ -1,18 +1,17 @@ package com.baeldung.rss; +import javax.annotation.security.RolesAllowed; + import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; -import javax.annotation.security.RolesAllowed; - @SpringBootApplication @ComponentScan(basePackages = "com.baeldung.rss") public class RssApp { @RolesAllowed("*") public static void main(String[] args) { - System.setProperty("security.basic.enabled", "false"); SpringApplication.run(RssApp.class, args); } diff --git a/spring-boot/src/main/java/com/baeldung/toggle/ToggleApplication.java b/spring-boot/src/main/java/com/baeldung/toggle/ToggleApplication.java index 27be6b7cca..fa84cf0d9b 100644 --- a/spring-boot/src/main/java/com/baeldung/toggle/ToggleApplication.java +++ b/spring-boot/src/main/java/com/baeldung/toggle/ToggleApplication.java @@ -9,7 +9,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; public class ToggleApplication { @RolesAllowed("*") public static void main(String[] args) { - System.setProperty("security.basic.enabled", "false"); SpringApplication.run(ToggleApplication.class, args); } } diff --git a/spring-boot/src/main/java/org/baeldung/session/exception/Application.java b/spring-boot/src/main/java/org/baeldung/session/exception/Application.java index 9132e710d1..354c64c258 100644 --- a/spring-boot/src/main/java/org/baeldung/session/exception/Application.java +++ b/spring-boot/src/main/java/org/baeldung/session/exception/Application.java @@ -4,8 +4,6 @@ import org.baeldung.demo.model.Foo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.domain.EntityScan; -import org.springframework.context.annotation.Bean; -import org.springframework.orm.jpa.vendor.HibernateJpaSessionFactoryBean; @EntityScan(basePackageClasses = Foo.class) @SpringBootApplication @@ -15,9 +13,4 @@ public class Application { System.setProperty("spring.profiles.active", "exception"); SpringApplication.run(Application.class, args); } - - @Bean - public HibernateJpaSessionFactoryBean sessionFactory() { - return new HibernateJpaSessionFactoryBean(); - } } diff --git a/spring-boot/src/main/java/org/baeldung/session/exception/repository/FooRepositoryImpl.java b/spring-boot/src/main/java/org/baeldung/session/exception/repository/FooRepositoryImpl.java index 52407a2117..607bae83ba 100644 --- a/spring-boot/src/main/java/org/baeldung/session/exception/repository/FooRepositoryImpl.java +++ b/spring-boot/src/main/java/org/baeldung/session/exception/repository/FooRepositoryImpl.java @@ -1,5 +1,7 @@ package org.baeldung.session.exception.repository; +import javax.persistence.EntityManagerFactory; + import org.baeldung.demo.model.Foo; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -10,16 +12,15 @@ import org.springframework.stereotype.Repository; @Repository public class FooRepositoryImpl implements FooRepository { @Autowired - private SessionFactory sessionFactory; + private EntityManagerFactory emf; @Override public void save(Foo foo) { - sessionFactory.getCurrentSession().saveOrUpdate(foo); + emf.unwrap(SessionFactory.class).getCurrentSession().saveOrUpdate(foo); } @Override public Foo get(Integer id) { - return sessionFactory.getCurrentSession().get(Foo.class, id); + return emf.unwrap(SessionFactory.class).getCurrentSession().get(Foo.class, id); } - } \ No newline at end of file diff --git a/spring-boot/src/main/resources/application.properties b/spring-boot/src/main/resources/application.properties index 629e880940..6a52dd1f70 100644 --- a/spring-boot/src/main/resources/application.properties +++ b/spring-boot/src/main/resources/application.properties @@ -7,7 +7,7 @@ spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto = update management.endpoints.jmx.domain=Spring Sample Application -management.endpoints.jmx.uniqueNames=true +spring.jmx.unique-names=true management.endpoints.web.exposure.include=* management.endpoint.shutdown.enabled=true @@ -17,7 +17,6 @@ management.endpoint.shutdown.enabled=true ##endpoints.jolokia.path=jolokia spring.jmx.enabled=true -management.endpoints.jmx.enabled=true ## for pretty printing of json when endpoints accessed over HTTP http.mappers.jsonPrettyPrint=true diff --git a/spring-boot/src/test/java/com/baeldung/annotation/servletcomponentscan/SpringBootWithServletComponentIntegrationTest.java b/spring-boot/src/test/java/com/baeldung/annotation/servletcomponentscan/SpringBootWithServletComponentIntegrationTest.java index 2c3ac2e159..8c85934fac 100644 --- a/spring-boot/src/test/java/com/baeldung/annotation/servletcomponentscan/SpringBootWithServletComponentIntegrationTest.java +++ b/spring-boot/src/test/java/com/baeldung/annotation/servletcomponentscan/SpringBootWithServletComponentIntegrationTest.java @@ -20,7 +20,6 @@ import static org.junit.Assert.assertTrue; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = SpringBootAnnotatedApp.class) -@TestPropertySource(properties = { "security.basic.enabled=false" }) public class SpringBootWithServletComponentIntegrationTest { @Autowired diff --git a/spring-boot/src/test/java/com/baeldung/annotation/servletcomponentscan/SpringBootWithoutServletComponentIntegrationTest.java b/spring-boot/src/test/java/com/baeldung/annotation/servletcomponentscan/SpringBootWithoutServletComponentIntegrationTest.java index a30d3ed3f2..c29cd75e9d 100644 --- a/spring-boot/src/test/java/com/baeldung/annotation/servletcomponentscan/SpringBootWithoutServletComponentIntegrationTest.java +++ b/spring-boot/src/test/java/com/baeldung/annotation/servletcomponentscan/SpringBootWithoutServletComponentIntegrationTest.java @@ -19,7 +19,6 @@ import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = SpringBootPlainApp.class) -@TestPropertySource(properties = { "security.basic.enabled=false" }) public class SpringBootWithoutServletComponentIntegrationTest { @Autowired diff --git a/spring-boot/src/test/java/com/baeldung/displayallbeans/DisplayBeanIntegrationTest.java b/spring-boot/src/test/java/com/baeldung/displayallbeans/DisplayBeanIntegrationTest.java index aab4836b6f..e933920a96 100644 --- a/spring-boot/src/test/java/com/baeldung/displayallbeans/DisplayBeanIntegrationTest.java +++ b/spring-boot/src/test/java/com/baeldung/displayallbeans/DisplayBeanIntegrationTest.java @@ -1,31 +1,34 @@ package com.baeldung.displayallbeans; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.BDDAssertions.then; + +import java.net.URI; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Map; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.actuate.beans.BeansEndpoint.ContextBeans; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.RequestEntity; import org.springframework.http.ResponseEntity; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.web.context.WebApplicationContext; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import static org.assertj.core.api.BDDAssertions.then; -import static org.hamcrest.CoreMatchers.hasItem; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; - @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@TestPropertySource(properties = { "management.port=0", "endpoints.beans.id=springbeans", "endpoints.beans.sensitive=false" }) +@TestPropertySource(properties = { "management.port=0", "management.endpoints.web.exposure.include=*" }) public class DisplayBeanIntegrationTest { @LocalServerPort @@ -40,6 +43,8 @@ public class DisplayBeanIntegrationTest { @Autowired private WebApplicationContext context; + private static final String ACTUATOR_PATH = "/actuator"; + @Test public void givenRestTemplate_whenAccessServerUrl_thenHttpStatusOK() throws Exception { ResponseEntity entity = this.testRestTemplate.getForEntity("http://localhost:" + this.port + "/displayallbeans", String.class); @@ -49,22 +54,27 @@ public class DisplayBeanIntegrationTest { @Test public void givenRestTemplate_whenAccessEndpointUrl_thenHttpStatusOK() throws Exception { - @SuppressWarnings("rawtypes") - ResponseEntity entity = this.testRestTemplate.getForEntity("http://localhost:" + this.mgt + "/springbeans", List.class); + ParameterizedTypeReference> responseType = new ParameterizedTypeReference>() { + }; + RequestEntity requestEntity = RequestEntity.get(new URI("http://localhost:" + this.mgt + ACTUATOR_PATH + "/beans")) + .accept(MediaType.APPLICATION_JSON) + .build(); + ResponseEntity> entity = this.testRestTemplate.exchange(requestEntity, responseType); then(entity.getStatusCode()).isEqualTo(HttpStatus.OK); } @Test public void givenRestTemplate_whenAccessEndpointUrl_thenReturnsBeanNames() throws Exception { - @SuppressWarnings("rawtypes") - ResponseEntity entity = this.testRestTemplate.getForEntity("http://localhost:" + this.mgt + "/springbeans", List.class); + RequestEntity requestEntity = RequestEntity.get(new URI("http://localhost:" + this.mgt + ACTUATOR_PATH + "/beans")) + .accept(MediaType.APPLICATION_JSON) + .build(); + ResponseEntity entity = this.testRestTemplate.exchange(requestEntity, BeanActuatorResponse.class); - List> allBeans = (List) ((Map) entity.getBody().get(0)).get("beans"); - List beanNamesList = allBeans.stream().map(x -> (String) x.get("bean")).collect(Collectors.toList()); + Collection beanNamesList = entity.getBody() + .getBeans(); - assertThat(beanNamesList, hasItem("fooController")); - assertThat(beanNamesList, hasItem("fooService")); + assertThat(beanNamesList).contains("fooController", "fooService"); } @Test @@ -72,7 +82,20 @@ public class DisplayBeanIntegrationTest { String[] beanNames = context.getBeanDefinitionNames(); List beanNamesList = Arrays.asList(beanNames); - assertTrue(beanNamesList.contains("fooController")); - assertTrue(beanNamesList.contains("fooService")); + assertThat(beanNamesList).contains("fooController", "fooService"); + } + + private static class BeanActuatorResponse { + private Map>>> contexts; + + public Collection getBeans() { + return this.contexts.get("application") + .get("beans") + .keySet(); + } + + public Map>>> getContexts() { + return contexts; + } } } diff --git a/spring-boot/src/test/java/com/baeldung/git/CommitIdIntegrationTest.java b/spring-boot/src/test/java/com/baeldung/git/CommitIdIntegrationTest.java index 348d594c05..d7399a4ff5 100644 --- a/spring-boot/src/test/java/com/baeldung/git/CommitIdIntegrationTest.java +++ b/spring-boot/src/test/java/com/baeldung/git/CommitIdIntegrationTest.java @@ -1,17 +1,19 @@ package com.baeldung.git; +import static org.assertj.core.api.Assertions.assertThat; + import org.junit.Test; import org.junit.runner.RunWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; -import static org.assertj.core.api.Assertions.assertThat; - @RunWith(SpringRunner.class) @ContextConfiguration(classes = CommitIdApplication.class) +@TestPropertySource(properties = { "spring.jmx.default-domain=test" }) public class CommitIdIntegrationTest { private static final Logger LOG = LoggerFactory.getLogger(CommitIdIntegrationTest.class); diff --git a/spring-boot/src/test/java/com/baeldung/intro/AppLiveTest.java b/spring-boot/src/test/java/com/baeldung/intro/AppLiveTest.java index 83b893ae5c..44461c0cf6 100644 --- a/spring-boot/src/test/java/com/baeldung/intro/AppLiveTest.java +++ b/spring-boot/src/test/java/com/baeldung/intro/AppLiveTest.java @@ -18,7 +18,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK) @AutoConfigureMockMvc -@TestPropertySource(properties = { "security.basic.enabled=false" }) public class AppLiveTest { @Autowired diff --git a/spring-boot/src/test/java/com/baeldung/mongodb/ManualEmbeddedMongoDbIntegrationTest.java b/spring-boot/src/test/java/com/baeldung/mongodb/ManualEmbeddedMongoDbIntegrationTest.java index 30a4d61fbd..c49b99ed99 100644 --- a/spring-boot/src/test/java/com/baeldung/mongodb/ManualEmbeddedMongoDbIntegrationTest.java +++ b/spring-boot/src/test/java/com/baeldung/mongodb/ManualEmbeddedMongoDbIntegrationTest.java @@ -7,6 +7,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.util.SocketUtils; import com.mongodb.BasicDBObjectBuilder; import com.mongodb.DBObject; @@ -32,16 +33,16 @@ class ManualEmbeddedMongoDbIntegrationTest { @BeforeEach void setup() throws Exception { String ip = "localhost"; - int port = 27017; + int randomPort = SocketUtils.findAvailableTcpPort(); IMongodConfig mongodConfig = new MongodConfigBuilder().version(Version.Main.PRODUCTION) - .net(new Net(ip, port, Network.localhostIsIPv6())) + .net(new Net(ip, randomPort, Network.localhostIsIPv6())) .build(); MongodStarter starter = MongodStarter.getDefaultInstance(); mongodExecutable = starter.prepare(mongodConfig); mongodExecutable.start(); - mongoTemplate = new MongoTemplate(new MongoClient(ip, port), "test"); + mongoTemplate = new MongoTemplate(new MongoClient(ip, randomPort), "test"); } @DisplayName("Given object When save object using MongoDB template Then object can be found") diff --git a/spring-boot/src/test/resources/application.properties b/spring-boot/src/test/resources/application.properties index 85e4e6e66f..9ad65e1815 100644 --- a/spring-boot/src/test/resources/application.properties +++ b/spring-boot/src/test/resources/application.properties @@ -2,7 +2,6 @@ spring.mail.host=localhost spring.mail.port=8025 spring.mail.properties.mail.smtp.auth=false -security.basic.enabled=false # spring.datasource.x spring.datasource.driver-class-name=org.h2.Driver @@ -11,9 +10,10 @@ spring.datasource.username=sa spring.datasource.password=sa # hibernate.X -hibernate.dialect=org.hibernate.dialect.H2Dialect -hibernate.show_sql=true -hibernate.hbm2ddl.auto=create-drop -hibernate.cache.use_second_level_cache=true -hibernate.cache.use_query_cache=true -hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory \ No newline at end of file +spring.jpa.hibernate.dialect=org.hibernate.dialect.H2Dialect +spring.jpa.hibernate.ddl-auto=create-drop +spring.jpa.hibernate.show_sql=true +spring.jpa.hibernate.hbm2ddl.auto=create-drop +spring.jpa.hibernate.cache.use_second_level_cache=true +spring.jpa.hibernate.cache.use_query_cache=true +spring.jpa.hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory diff --git a/spring-boot/src/test/resources/exception.properties b/spring-boot/src/test/resources/exception.properties index c55e415a3a..e82a482968 100644 --- a/spring-boot/src/test/resources/exception.properties +++ b/spring-boot/src/test/resources/exception.properties @@ -1,6 +1,6 @@ # Security -security.user.name=admin -security.user.password=password +spring.security.user.name=admin +spring.security.user.password=password spring.dao.exceptiontranslation.enabled=false spring.profiles.active=exception \ No newline at end of file From 7d5d9b3eb7aadd78768770bb131f397b3e539fbe Mon Sep 17 00:00:00 2001 From: Loredana Date: Fri, 16 Nov 2018 18:40:42 +0200 Subject: [PATCH 090/119] update eureka code to boot 2 --- spring-cloud/pom.xml | 4 ++-- spring-cloud/spring-cloud-eureka/pom.xml | 3 ++- .../spring-cloud-eureka-client/pom.xml | 18 +++--------------- .../eureka/client/EurekaClientApplication.java | 3 --- .../spring-cloud-eureka-feign-client/pom.xml | 14 +++++++------- .../feign/client/FeignClientApplication.java | 4 +--- .../cloud/feign/client/GreetingClient.java | 8 +++++--- .../spring-cloud-eureka-server/pom.xml | 2 +- .../eureka-client/pom.xml | 2 +- .../src/main/resources/application.yml | 2 +- .../eureka-server/pom.xml | 2 +- .../pom.xml | 4 +++- .../zuul-server/pom.xml | 8 ++------ .../src/main/resources/application.properties | 5 +---- 14 files changed, 30 insertions(+), 49 deletions(-) diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml index 2fd15202e6..28db4a7a3d 100644 --- a/spring-cloud/pom.xml +++ b/spring-cloud/pom.xml @@ -57,8 +57,8 @@ Brixton.SR7 1.2.2.RELEASE 1.2.2.RELEASE - 1.2.3.RELEASE - 1.2.3.RELEASE + 2.0.2.RELEASE + 1.4.6.RELEASE 1.2.3.RELEASE 1.3.0.RELEASE 1.4.2.RELEASE diff --git a/spring-cloud/spring-cloud-eureka/pom.xml b/spring-cloud/spring-cloud-eureka/pom.xml index 37571bc29a..7f7e2650d5 100644 --- a/spring-cloud/spring-cloud-eureka/pom.xml +++ b/spring-cloud/spring-cloud-eureka/pom.xml @@ -23,7 +23,8 @@ - 1.4.2.RELEASE + 2.0.1.RELEASE + Finchley.SR2 diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml index 8bc51adcab..0bf9547aff 100644 --- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml +++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml @@ -20,32 +20,20 @@ org.springframework.cloud - spring-cloud-starter-eureka + spring-cloud-starter-netflix-eureka-client ${spring-cloud-starter-eureka.version} org.springframework.boot spring-boot-starter-web - ${spring-boot-starter-web.version} + ${spring-boot.version} org.springframework.boot spring-boot-starter-test - 1.5.10.RELEASE + ${spring-boot.version} test - - org.springframework.boot - spring-boot-test - 1.5.10.RELEASE - test - - - org.springframework - spring-test - 4.0.5.RELEASE - test - diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/EurekaClientApplication.java b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/EurekaClientApplication.java index 48099eeaa2..82b5f6acb1 100644 --- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/EurekaClientApplication.java +++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/EurekaClientApplication.java @@ -5,13 +5,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.context.annotation.Lazy; -import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication -@EnableEurekaClient @RestController public class EurekaClientApplication implements GreetingController { @Autowired diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml index 4552c458ec..d572b10d40 100644 --- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml +++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml @@ -16,25 +16,25 @@ - - com.baeldung.spring.cloud - spring-cloud-eureka-client - ${spring-cloud-eureka-client.version} - org.springframework.cloud spring-cloud-starter-feign ${spring-cloud-starter-feign.version} + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + ${spring-cloud-starter-eureka.version} + org.springframework.boot spring-boot-starter-web - ${spring-boot-starter-web.version} + ${spring-boot.version} org.springframework.boot spring-boot-starter-thymeleaf - ${spring-boot-starter-web.version} + ${spring-boot.version} diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/src/main/java/com/baeldung/spring/cloud/feign/client/FeignClientApplication.java b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/src/main/java/com/baeldung/spring/cloud/feign/client/FeignClientApplication.java index 7beb51d1ac..b8a6c8232d 100644 --- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/src/main/java/com/baeldung/spring/cloud/feign/client/FeignClientApplication.java +++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/src/main/java/com/baeldung/spring/cloud/feign/client/FeignClientApplication.java @@ -3,14 +3,12 @@ package com.baeldung.spring.cloud.feign.client; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.netflix.eureka.EnableEurekaClient; -import org.springframework.cloud.netflix.feign.EnableFeignClients; +import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @SpringBootApplication -@EnableEurekaClient @EnableFeignClients @Controller public class FeignClientApplication { diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/src/main/java/com/baeldung/spring/cloud/feign/client/GreetingClient.java b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/src/main/java/com/baeldung/spring/cloud/feign/client/GreetingClient.java index 6bd444b347..a9977d86d6 100644 --- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/src/main/java/com/baeldung/spring/cloud/feign/client/GreetingClient.java +++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/src/main/java/com/baeldung/spring/cloud/feign/client/GreetingClient.java @@ -1,8 +1,10 @@ package com.baeldung.spring.cloud.feign.client; -import com.baeldung.spring.cloud.eureka.client.GreetingController; -import org.springframework.cloud.netflix.feign.FeignClient; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.RequestMapping; @FeignClient("spring-cloud-eureka-client") -public interface GreetingClient extends GreetingController { +public interface GreetingClient { + @RequestMapping("/greeting") + String greeting(); } diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml index 8082b30c33..da2c50d3c7 100644 --- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml +++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml @@ -18,7 +18,7 @@ org.springframework.cloud - spring-cloud-starter-eureka-server + spring-cloud-starter-netflix-eureka-server ${spring-cloud-starter-eureka.version} diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml index 9c27affb8b..6a5b7ddb55 100644 --- a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml @@ -17,7 +17,7 @@ org.springframework.cloud - spring-cloud-starter-eureka + spring-cloud-starter-netflix-eureka-client ${spring-cloud-starter-eureka.version} diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/resources/application.yml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/resources/application.yml index 9fa929e16b..903e34ce81 100644 --- a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/resources/application.yml +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/resources/application.yml @@ -3,7 +3,7 @@ spring: name: spring-cloud-eureka-client server: - port: 8081 + port: 8082 eureka: client: diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml index d694c9058b..e3c5109a26 100644 --- a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml @@ -17,7 +17,7 @@ org.springframework.cloud - spring-cloud-starter-eureka-server + spring-cloud-starter-netflix-eureka-server ${spring-cloud-starter-eureka.version} diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/pom.xml index f4166c7d34..4d3687134f 100644 --- a/spring-cloud/spring-cloud-zuul-eureka-integration/pom.xml +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/pom.xml @@ -24,9 +24,11 @@
- 1.4.2.RELEASE + 2.0.1.RELEASE 1.10 1.2.10 + 2.0.1.RELEASE + Finchley.SR2 diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml index 103b8334d3..e64ceb501e 100644 --- a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml @@ -16,11 +16,11 @@ org.springframework.cloud - spring-cloud-starter-zuul + spring-cloud-starter-netflix-zuul org.springframework.cloud - spring-cloud-starter-eureka + spring-cloud-starter-netflix-eureka-client commons-configuration @@ -32,10 +32,6 @@ rxjava ${rxjava.version} - - org.springframework.boot - spring-boot-starter-security - diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/resources/application.properties b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/resources/application.properties index cb1dca78c2..42b4f5eee4 100644 --- a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/resources/application.properties +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/resources/application.properties @@ -3,7 +3,4 @@ spring.application.name=zuul-server eureka.instance.preferIpAddress=true eureka.client.registerWithEureka=true eureka.client.fetchRegistry=true -eureka.serviceurl.defaultzone=http://localhost:8761/eureka/ -management.security.enabled=false -security.basic.enabled=false -hystrix.command.default.execution.timeout.enabled=false +eureka.client.serviceUrl.defaultZone=${EUREKA_URI:http://localhost:8761/eureka} \ No newline at end of file From 874a7ca051fedcaf4a0cb276eec510490e3d6bcd Mon Sep 17 00:00:00 2001 From: Loredana Date: Fri, 16 Nov 2018 18:58:12 +0200 Subject: [PATCH 091/119] fix port --- .../eureka-client/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/resources/application.yml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/resources/application.yml index 903e34ce81..9fa929e16b 100644 --- a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/resources/application.yml +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/resources/application.yml @@ -3,7 +3,7 @@ spring: name: spring-cloud-eureka-client server: - port: 8082 + port: 8081 eureka: client: From ac570c2bcc442daa8f7ba26eb47d559cfda3ad36 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Fri, 16 Nov 2018 23:16:39 +0530 Subject: [PATCH 092/119] Updating the url of openliberty jar --- java-ee-8-security-api/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-ee-8-security-api/pom.xml b/java-ee-8-security-api/pom.xml index 3d235e10a8..7546839492 100644 --- a/java-ee-8-security-api/pom.xml +++ b/java-ee-8-security-api/pom.xml @@ -41,7 +41,7 @@ - https://public.dhe.ibm.com/ibmdl/export/pub/software/openliberty/runtime/nightly/2018-05-25_1422/openliberty-all-20180525-1300.zip + https://public.dhe.ibm.com/ibmdl/export/pub/software/openliberty/runtime/release/2018-09-05_2337/openliberty-18.0.0.3.zip true From de37cc8af1b08a62ac6936d1d4745c09d133e2d4 Mon Sep 17 00:00:00 2001 From: geroza Date: Sat, 17 Nov 2018 01:14:10 -0200 Subject: [PATCH 093/119] Fixed LiveTests for migration of spring-boot module to Spring Boot 2 --- .../baeldung/kong/KongAdminAPILiveTest.java | 14 +++++--- .../kong/KongLoadBalanceLiveTest.java | 32 +++++++++++-------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/spring-boot/src/test/java/com/baeldung/kong/KongAdminAPILiveTest.java b/spring-boot/src/test/java/com/baeldung/kong/KongAdminAPILiveTest.java index 5cf19dd1db..92d2286518 100644 --- a/spring-boot/src/test/java/com/baeldung/kong/KongAdminAPILiveTest.java +++ b/spring-boot/src/test/java/com/baeldung/kong/KongAdminAPILiveTest.java @@ -55,7 +55,7 @@ public class KongAdminAPILiveTest { public void givenKongAdminAPI_whenAddAPI_thenAPIAccessibleViaKong() throws Exception { restTemplate.delete("http://localhost:8001/apis/stock-api"); - APIObject stockAPI = new APIObject("stock-api", "stock.api", "http://localhost:8080", "/"); + APIObject stockAPI = new APIObject("stock-api", "stock.api", "http://localhost:9090", "/"); HttpEntity apiEntity = new HttpEntity<>(stockAPI); ResponseEntity addAPIResp = restTemplate.postForEntity("http://localhost:8001/apis", apiEntity, String.class); @@ -69,7 +69,7 @@ public class KongAdminAPILiveTest { HttpHeaders headers = new HttpHeaders(); headers.set("Host", "stock.api"); - RequestEntity requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI("http://localhost:8000/stock/btc")); + RequestEntity requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI("http://localhost:8000/springbootapp/stock/btc")); ResponseEntity stockPriceResp = restTemplate.exchange(requestEntity, String.class); assertEquals("10000", stockPriceResp.getBody()); @@ -126,22 +126,26 @@ public class KongAdminAPILiveTest { givenKongAdminAPI_whenAddAPIConsumer_thenAdded(); } + PluginObject authPlugin = new PluginObject("key-auth"); + ResponseEntity enableAuthResp = restTemplate.postForEntity("http://localhost:8001/apis/stock-api/plugins", new HttpEntity<>(authPlugin), String.class); + assertTrue(HttpStatus.CREATED == enableAuthResp.getStatusCode() || HttpStatus.CONFLICT == enableAuthResp.getStatusCode()); + final String consumerKey = "eugenp.pass"; KeyAuthObject keyAuth = new KeyAuthObject(consumerKey); ResponseEntity keyAuthResp = restTemplate.postForEntity("http://localhost:8001/consumers/eugenp/key-auth", new HttpEntity<>(keyAuth), String.class); - + assertTrue(HttpStatus.CREATED == keyAuthResp.getStatusCode() || HttpStatus.CONFLICT == keyAuthResp.getStatusCode()); HttpHeaders headers = new HttpHeaders(); headers.set("Host", "stock.api"); headers.set("apikey", consumerKey); - RequestEntity requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI("http://localhost:8000/stock/btc")); + RequestEntity requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI("http://localhost:8000/springbootapp/stock/btc")); ResponseEntity stockPriceResp = restTemplate.exchange(requestEntity, String.class); assertEquals("10000", stockPriceResp.getBody()); headers.set("apikey", "wrongpass"); - requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI("http://localhost:8000/stock/btc")); + requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI("http://localhost:8000/springbootapp/stock/btc")); stockPriceResp = restTemplate.exchange(requestEntity, String.class); assertEquals(HttpStatus.FORBIDDEN, stockPriceResp.getStatusCode()); } diff --git a/spring-boot/src/test/java/com/baeldung/kong/KongLoadBalanceLiveTest.java b/spring-boot/src/test/java/com/baeldung/kong/KongLoadBalanceLiveTest.java index abc7151720..7cf67453a6 100644 --- a/spring-boot/src/test/java/com/baeldung/kong/KongLoadBalanceLiveTest.java +++ b/spring-boot/src/test/java/com/baeldung/kong/KongLoadBalanceLiveTest.java @@ -1,28 +1,34 @@ package com.baeldung.kong; -import com.baeldung.kong.domain.APIObject; -import com.baeldung.kong.domain.TargetObject; -import com.baeldung.kong.domain.UpstreamObject; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.DEFINED_PORT; + +import java.net.URI; + import org.junit.Before; 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.boot.test.web.client.TestRestTemplate; -import org.springframework.http.*; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.RequestEntity; +import org.springframework.http.ResponseEntity; import org.springframework.test.context.junit4.SpringRunner; -import java.net.URI; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.DEFINED_PORT; +import com.baeldung.kong.domain.APIObject; +import com.baeldung.kong.domain.TargetObject; +import com.baeldung.kong.domain.UpstreamObject; /** * @author aiet */ @RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = DEFINED_PORT, classes = StockApp.class) +@SpringBootTest(webEnvironment = DEFINED_PORT, classes = StockApp.class, properties = "server.servlet.contextPath=/springbootapp") public class KongLoadBalanceLiveTest { @Before @@ -55,13 +61,13 @@ public class KongLoadBalanceLiveTest { HttpHeaders headers = new HttpHeaders(); headers.set("Host", "balanced.stock.api"); for (int i = 0; i < 1000; i++) { - RequestEntity requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI("http://localhost:8000/stock/btc")); + RequestEntity requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI("http://localhost:8000/springbootapp/stock/btc")); ResponseEntity stockPriceResp = restTemplate.exchange(requestEntity, String.class); assertEquals("10000", stockPriceResp.getBody()); } - int releaseCount = restTemplate.getForObject("http://localhost:9090/stock/reqcount", Integer.class); - int testCount = restTemplate.getForObject("http://localhost:8080/stock/reqcount", Integer.class); + int releaseCount = restTemplate.getForObject("http://localhost:9090/springbootapp/stock/reqcount", Integer.class); + int testCount = restTemplate.getForObject("http://localhost:8080/springbootapp/stock/reqcount", Integer.class); assertTrue(Math.round(releaseCount * 1.0 / testCount) == 4); } From e4c7f7e72e650c7775f46b330b0db420d172b06c Mon Sep 17 00:00:00 2001 From: geroza Date: Sat, 17 Nov 2018 01:55:14 -0200 Subject: [PATCH 094/119] minor estetic changes --- spring-boot/pom.xml | 2 -- .../com/baeldung/dynamicvalidation/DynamicValidationApp.java | 2 -- 2 files changed, 4 deletions(-) diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index dbb098ccc2..1f6d39aabe 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -179,7 +179,6 @@ pl.project13.maven git-commit-id-plugin ${git-commit-id-plugin.version} - get-the-git-infos @@ -196,7 +195,6 @@ package - true ${project.build.outputDirectory}/git.properties diff --git a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/DynamicValidationApp.java b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/DynamicValidationApp.java index 78d5365047..6b04380ece 100644 --- a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/DynamicValidationApp.java +++ b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/DynamicValidationApp.java @@ -11,6 +11,4 @@ public class DynamicValidationApp { public static void main(String[] args) { SpringApplication.run(DynamicValidationApp.class, args); } - - } From 8967501aedf2ac3c887890c95f46804b754b70dd Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Sat, 17 Nov 2018 11:26:49 +0200 Subject: [PATCH 095/119] Update README.md --- core-java/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java/README.md b/core-java/README.md index 035efc673c..11d9fd2ee0 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -84,3 +84,4 @@ - [Understanding Memory Leaks in Java](https://www.baeldung.com/java-memory-leaks) - [A Guide to SimpleDateFormat](https://www.baeldung.com/java-simple-date-format) - [SSL Handshake Failures](https://www.baeldung.com/java-ssl-handshake-failures) +- [Implementing a Binary Tree in Java](https://www.baeldung.com/java-binary-tree) From c7daccbe6ec8b3da5457e5f25f5ea247d843aae8 Mon Sep 17 00:00:00 2001 From: Eugen Paraschiv Date: Sat, 17 Nov 2018 12:59:25 +0200 Subject: [PATCH 096/119] temporarily removing modules with external repos --- pom.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pom.xml b/pom.xml index 109a49d985..5ebf7ba4f3 100644 --- a/pom.xml +++ b/pom.xml @@ -376,8 +376,6 @@ ethereum feign flips - testing-modules/gatling - geotools testing-modules/groovy-spock google-cloud google-web-toolkit From 331988e40785223d66a2ee15eeec5d564474dac9 Mon Sep 17 00:00:00 2001 From: Akash Pandey Date: Sat, 17 Nov 2018 21:26:22 +0530 Subject: [PATCH 097/119] Bael-2227 1 (#5707) * BAEL-2159: Mini Article on "Separate double into integer and decimal parts" * BAEL-2227: Refactor: Replace designation with title. --- .../hibernate/entities/DeptEmployee.java | 14 +++++++------- .../service/EmployeeSearchService.java | 4 ++-- .../service/EmployeeSearchServiceImpl.java | 14 +++++++------- .../EmployeeSearchServiceIntegrationTest.java | 17 ++++++++--------- 4 files changed, 24 insertions(+), 25 deletions(-) diff --git a/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/entities/DeptEmployee.java b/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/entities/DeptEmployee.java index 27fff147b6..8b5d9c41f3 100644 --- a/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/entities/DeptEmployee.java +++ b/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/entities/DeptEmployee.java @@ -10,7 +10,7 @@ public class DeptEmployee { private String employeeNumber; - private String designation; + private String title; private String name; @@ -23,11 +23,11 @@ public class DeptEmployee { this.department = department; } - public DeptEmployee(String name, String employeeNumber, String designation, Department department) { + public DeptEmployee(String name, String employeeNumber, String title, Department department) { super(); this.name = name; this.employeeNumber = employeeNumber; - this.designation = designation; + this.title = title; this.department = department; } @@ -63,11 +63,11 @@ public class DeptEmployee { this.department = department; } - public String getDesignation() { - return designation; + public String getTitle() { + return title; } - public void setDesignation(String designation) { - this.designation = designation; + public void setTitle(String title) { + this.title = title; } } diff --git a/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/jpacriteriabuilder/service/EmployeeSearchService.java b/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/jpacriteriabuilder/service/EmployeeSearchService.java index 85cdffd54d..b7d1a537f0 100644 --- a/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/jpacriteriabuilder/service/EmployeeSearchService.java +++ b/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/jpacriteriabuilder/service/EmployeeSearchService.java @@ -6,9 +6,9 @@ import com.baeldung.hibernate.entities.DeptEmployee; public interface EmployeeSearchService { - List filterbyDesignationUsingCriteriaBuilder(List designaitons); + List filterbyTitleUsingCriteriaBuilder(List titles); - List filterbyDesignationUsingExpression(List aurhors); + List filterbyTitleUsingExpression(List titles); List searchByDepartmentQuery(String query); diff --git a/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/jpacriteriabuilder/service/EmployeeSearchServiceImpl.java b/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/jpacriteriabuilder/service/EmployeeSearchServiceImpl.java index a9981b8066..e79168a451 100644 --- a/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/jpacriteriabuilder/service/EmployeeSearchServiceImpl.java +++ b/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/jpacriteriabuilder/service/EmployeeSearchServiceImpl.java @@ -25,12 +25,12 @@ public class EmployeeSearchServiceImpl implements EmployeeSearchService { } @Override - public List filterbyDesignationUsingCriteriaBuilder(List designations) { + public List filterbyTitleUsingCriteriaBuilder(List titles) { CriteriaQuery criteriaQuery = createCriteriaQuery(DeptEmployee.class); Root root = criteriaQuery.from(DeptEmployee.class); - In inClause = criteriaBuilder.in(root.get("designation")); - for (String designaiton : designations) { - inClause.value(designaiton); + In inClause = criteriaBuilder.in(root.get("title")); + for (String title : titles) { + inClause.value(title); } criteriaQuery.select(root) .where(inClause); @@ -39,12 +39,12 @@ public class EmployeeSearchServiceImpl implements EmployeeSearchService { } @Override - public List filterbyDesignationUsingExpression(List designations) { + public List filterbyTitleUsingExpression(List titles) { CriteriaQuery criteriaQuery = createCriteriaQuery(DeptEmployee.class); Root root = criteriaQuery.from(DeptEmployee.class); criteriaQuery.select(root) - .where(root.get("designation") - .in(designations)); + .where(root.get("title") + .in(titles)); TypedQuery query = entityManager.createQuery(criteriaQuery); return query.getResultList(); } diff --git a/persistence-modules/hibernate5/src/test/java/com/baeldung/hibernate/jpacriteriabuilder/EmployeeSearchServiceIntegrationTest.java b/persistence-modules/hibernate5/src/test/java/com/baeldung/hibernate/jpacriteriabuilder/EmployeeSearchServiceIntegrationTest.java index c7a1bc7b2a..2b12734a10 100644 --- a/persistence-modules/hibernate5/src/test/java/com/baeldung/hibernate/jpacriteriabuilder/EmployeeSearchServiceIntegrationTest.java +++ b/persistence-modules/hibernate5/src/test/java/com/baeldung/hibernate/jpacriteriabuilder/EmployeeSearchServiceIntegrationTest.java @@ -81,42 +81,41 @@ public class EmployeeSearchServiceIntegrationTest { @Test public final void givenCriteriaQuery_whenSearchedUsingCriteriaBuilderWithListofAuthors_thenResultIsFilteredByAuthorNames() { - List designations = new ArrayList() { + List titles = new ArrayList() { { add("Manager"); add("Senior Manager"); add("Director"); } }; - List result = searchService.filterbyDesignationUsingCriteriaBuilder(designations); + List result = searchService.filterbyTitleUsingCriteriaBuilder(titles); assertEquals("Number of Employees does not match with expected.", 6, result.size()); assertThat(result.stream() - .map(DeptEmployee::getDesignation) + .map(DeptEmployee::getTitle) .distinct() - .collect(Collectors.toList()), containsInAnyOrder(designations.toArray())); + .collect(Collectors.toList()), containsInAnyOrder(titles.toArray())); } @Test public final void givenCriteriaQuery_whenSearchedUsingExpressionWithListofAuthors_thenResultIsFilteredByAuthorNames() { - List designations = new ArrayList() { + List titles = new ArrayList() { { add("Manager"); add("Senior Manager"); add("Director"); } }; - List result = searchService.filterbyDesignationUsingExpression(designations); + List result = searchService.filterbyTitleUsingExpression(titles); assertEquals("Number of Employees does not match with expected.", 6, result.size()); assertThat(result.stream() - .map(DeptEmployee::getDesignation) + .map(DeptEmployee::getTitle) .distinct() - .collect(Collectors.toList()), containsInAnyOrder(designations.toArray())); + .collect(Collectors.toList()), containsInAnyOrder(titles.toArray())); } @Test public final void givenCriteriaQuery_whenSearchedDepartmentLike_thenResultIsFilteredByDepartment() { List result = searchService.searchByDepartmentQuery("Sales"); assertEquals("Number of Employees does not match with expected.", 7, result.size()); - // assertThat(result.stream().map(DeptEmployee::getDesignation).distinct().collect(Collectors.toList()), containsInAnyOrder(designations.toArray())); } } From d2d77c56f83868222a432a3c58a6c148efa42fea Mon Sep 17 00:00:00 2001 From: "nnhai1991@gmail.com" Date: Sun, 18 Nov 2018 00:16:35 +0800 Subject: [PATCH 098/119] BAEL-1913 fix possible index out of bound --- .../src/test/kotlin/com/baeldung/random/RandomStringUnitTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringUnitTest.kt b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringUnitTest.kt index 74085367e8..62e8dfe720 100644 --- a/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringUnitTest.kt +++ b/core-kotlin/src/test/kotlin/com/baeldung/random/RandomStringUnitTest.kt @@ -52,7 +52,7 @@ class RandomStringUnitTest { random.nextBytes(bytes) var randomString = (0..bytes.size - 1).map { i -> - charPool.get((bytes[i] and 0xFF.toByte() and charPool.size.toByte()).toInt()) + charPool.get((bytes[i] and 0xFF.toByte() and (charPool.size-1).toByte()).toInt()) }.joinToString("") assert(randomString.matches(Regex(ALPHANUMERIC_REGEX))) From 3defeb3e9653555cef7c7b689d7ad8771e414ae5 Mon Sep 17 00:00:00 2001 From: eric-martin Date: Sat, 17 Nov 2018 11:20:06 -0600 Subject: [PATCH 099/119] Moved AddingNewLineToString from core-java to java-strings --- .../src/main/java/com/baeldung/string/AddingNewLineToString.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {core-java => java-strings}/src/main/java/com/baeldung/string/AddingNewLineToString.java (100%) diff --git a/core-java/src/main/java/com/baeldung/string/AddingNewLineToString.java b/java-strings/src/main/java/com/baeldung/string/AddingNewLineToString.java similarity index 100% rename from core-java/src/main/java/com/baeldung/string/AddingNewLineToString.java rename to java-strings/src/main/java/com/baeldung/string/AddingNewLineToString.java From 301ffdbc752c79c1f6e622dc76d21996dd412aa0 Mon Sep 17 00:00:00 2001 From: chrisoberle Date: Sat, 17 Nov 2018 13:24:21 -0500 Subject: [PATCH 100/119] BAEL-2174: proxies in core java (#5628) --- .../proxies/CommandLineProxyDemo.java | 17 ++++++++++ .../networking/proxies/DirectProxyDemo.java | 20 ++++++++++++ .../networking/proxies/SocksProxyDemo.java | 32 +++++++++++++++++++ .../proxies/SystemPropertyProxyDemo.java | 23 +++++++++++++ .../proxies/UrlConnectionUtils.java | 21 ++++++++++++ .../networking/proxies/WebProxyDemo.java | 23 +++++++++++++ 6 files changed, 136 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/networking/proxies/CommandLineProxyDemo.java create mode 100644 core-java/src/main/java/com/baeldung/networking/proxies/DirectProxyDemo.java create mode 100644 core-java/src/main/java/com/baeldung/networking/proxies/SocksProxyDemo.java create mode 100644 core-java/src/main/java/com/baeldung/networking/proxies/SystemPropertyProxyDemo.java create mode 100644 core-java/src/main/java/com/baeldung/networking/proxies/UrlConnectionUtils.java create mode 100644 core-java/src/main/java/com/baeldung/networking/proxies/WebProxyDemo.java diff --git a/core-java/src/main/java/com/baeldung/networking/proxies/CommandLineProxyDemo.java b/core-java/src/main/java/com/baeldung/networking/proxies/CommandLineProxyDemo.java new file mode 100644 index 0000000000..bbc8a81c98 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/networking/proxies/CommandLineProxyDemo.java @@ -0,0 +1,17 @@ +package com.baeldung.networking.proxies; + +import java.net.URL; +import java.net.URLConnection; + +public class CommandLineProxyDemo { + + public static final String RESOURCE_URL = "http://www.google.com"; + + public static void main(String[] args) throws Exception { + + URL url = new URL(RESOURCE_URL); + URLConnection con = url.openConnection(); + System.out.println(UrlConnectionUtils.contentAsString(con)); + } + +} \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/networking/proxies/DirectProxyDemo.java b/core-java/src/main/java/com/baeldung/networking/proxies/DirectProxyDemo.java new file mode 100644 index 0000000000..07a7880886 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/networking/proxies/DirectProxyDemo.java @@ -0,0 +1,20 @@ +package com.baeldung.networking.proxies; + +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.Proxy; +import java.net.URL; + +public class DirectProxyDemo { + + private static final String URL_STRING = "http://www.google.com"; + + public static void main(String... args) throws IOException { + + URL weburl = new URL(URL_STRING); + HttpURLConnection directConnection + = (HttpURLConnection) weburl.openConnection(Proxy.NO_PROXY); + System.out.println(UrlConnectionUtils.contentAsString(directConnection)); + } + +} diff --git a/core-java/src/main/java/com/baeldung/networking/proxies/SocksProxyDemo.java b/core-java/src/main/java/com/baeldung/networking/proxies/SocksProxyDemo.java new file mode 100644 index 0000000000..e7ac3c0264 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/networking/proxies/SocksProxyDemo.java @@ -0,0 +1,32 @@ +package com.baeldung.networking.proxies; + +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.InetSocketAddress; +import java.net.Proxy; +import java.net.Socket; +import java.net.URL; + +public class SocksProxyDemo { + + private static final String URL_STRING = "http://www.google.com"; + private static final String SOCKET_SERVER_HOST = "someserver.baeldung.com"; + private static final int SOCKET_SERVER_PORT = 1111; + + public static void main(String... args) throws IOException { + + URL weburl = new URL(URL_STRING); + Proxy socksProxy + = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("127.0.0.1", 1080)); + HttpURLConnection socksConnection + = (HttpURLConnection) weburl.openConnection(socksProxy); + System.out.println(UrlConnectionUtils.contentAsString(socksConnection)); + + Socket proxySocket = new Socket(socksProxy); + InetSocketAddress socketHost + = new InetSocketAddress(SOCKET_SERVER_HOST, SOCKET_SERVER_PORT); + proxySocket.connect(socketHost); + // do stuff with the socket + } + +} diff --git a/core-java/src/main/java/com/baeldung/networking/proxies/SystemPropertyProxyDemo.java b/core-java/src/main/java/com/baeldung/networking/proxies/SystemPropertyProxyDemo.java new file mode 100644 index 0000000000..1f589eac58 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/networking/proxies/SystemPropertyProxyDemo.java @@ -0,0 +1,23 @@ +package com.baeldung.networking.proxies; + +import java.net.URL; +import java.net.URLConnection; + +public class SystemPropertyProxyDemo { + + public static final String RESOURCE_URL = "http://www.google.com"; + + public static void main(String[] args) throws Exception { + + System.setProperty("http.proxyHost", "127.0.0.1"); + System.setProperty("http.proxyPort", "3128"); + + URL url = new URL(RESOURCE_URL); + URLConnection con = url.openConnection(); + System.out.println(UrlConnectionUtils.contentAsString(con)); + + System.setProperty("http.proxyHost", null); + // proxy will no longer be used for http connections + } + +} diff --git a/core-java/src/main/java/com/baeldung/networking/proxies/UrlConnectionUtils.java b/core-java/src/main/java/com/baeldung/networking/proxies/UrlConnectionUtils.java new file mode 100644 index 0000000000..aa12824a90 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/networking/proxies/UrlConnectionUtils.java @@ -0,0 +1,21 @@ +package com.baeldung.networking.proxies; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URLConnection; + +class UrlConnectionUtils { + + public static String contentAsString(URLConnection con) throws IOException { + StringBuilder builder = new StringBuilder(); + try (BufferedReader reader + = new BufferedReader(new InputStreamReader(con.getInputStream()))){ + while (reader.ready()) { + builder.append(reader.readLine()); + } + } + return builder.toString(); + } + +} diff --git a/core-java/src/main/java/com/baeldung/networking/proxies/WebProxyDemo.java b/core-java/src/main/java/com/baeldung/networking/proxies/WebProxyDemo.java new file mode 100644 index 0000000000..41caaf3439 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/networking/proxies/WebProxyDemo.java @@ -0,0 +1,23 @@ +package com.baeldung.networking.proxies; + +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.InetSocketAddress; +import java.net.Proxy; +import java.net.URL; + +public class WebProxyDemo { + + private static final String URL_STRING = "http://www.google.com"; + + public static void main(String... args) throws IOException { + + URL weburl = new URL(URL_STRING); + Proxy webProxy + = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 3128)); + HttpURLConnection webProxyConnection + = (HttpURLConnection) weburl.openConnection(webProxy); + System.out.println(UrlConnectionUtils.contentAsString(webProxyConnection)); + } + +} From 0cd4d76c15d35dfb2bfc6eaf05db86817cf056fd Mon Sep 17 00:00:00 2001 From: codehunter34 <31874661+codehunter34@users.noreply.github.com> Date: Sat, 17 Nov 2018 14:52:12 -0500 Subject: [PATCH 101/119] BAEL-2293: Guide to ReflectionTestUtils and uses in Unit Testing (#5681) * BAEL-2293: Guide to ReflectionTestUtils and uses in Unit Testing * BAEL-2293: Guide to ReflectionTestUtils and uses in Unit Testing * BAEL-2293: Guide to ReflectionTestUtils and uses in Unit Testing * Update ReflectionTestUtilsUnitTest.java --- .../repository/Employee.java | 23 ++++++++++ .../repository/EmployeeService.java | 14 ++++++ .../repository/HRService.java | 11 +++++ .../ReflectionTestUtilsUnitTest.java | 46 +++++++++++++++++++ 4 files changed, 94 insertions(+) create mode 100644 testing-modules/spring-testing/src/main/java/org/baeldung/reflectiontestutils/repository/Employee.java create mode 100644 testing-modules/spring-testing/src/main/java/org/baeldung/reflectiontestutils/repository/EmployeeService.java create mode 100644 testing-modules/spring-testing/src/main/java/org/baeldung/reflectiontestutils/repository/HRService.java create mode 100644 testing-modules/spring-testing/src/test/java/org/baeldung/reflectiontestutils/ReflectionTestUtilsUnitTest.java diff --git a/testing-modules/spring-testing/src/main/java/org/baeldung/reflectiontestutils/repository/Employee.java b/testing-modules/spring-testing/src/main/java/org/baeldung/reflectiontestutils/repository/Employee.java new file mode 100644 index 0000000000..0677b05d66 --- /dev/null +++ b/testing-modules/spring-testing/src/main/java/org/baeldung/reflectiontestutils/repository/Employee.java @@ -0,0 +1,23 @@ +package org.baeldung.reflectiontestutils.repository; + +public class Employee { + private Integer id; + private String name; + + public Integer getId() { + return id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + private String employeeToString() { + return "id: " + getId() + "; name: " + getName(); + } + +} diff --git a/testing-modules/spring-testing/src/main/java/org/baeldung/reflectiontestutils/repository/EmployeeService.java b/testing-modules/spring-testing/src/main/java/org/baeldung/reflectiontestutils/repository/EmployeeService.java new file mode 100644 index 0000000000..699ec3236c --- /dev/null +++ b/testing-modules/spring-testing/src/main/java/org/baeldung/reflectiontestutils/repository/EmployeeService.java @@ -0,0 +1,14 @@ +package org.baeldung.reflectiontestutils.repository; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class EmployeeService { + @Autowired + private HRService hrService; + + public String findEmployeeStatus(Integer employeeId) { + return "Employee " + employeeId + " status: " + hrService.getEmployeeStatus(employeeId); + } +} diff --git a/testing-modules/spring-testing/src/main/java/org/baeldung/reflectiontestutils/repository/HRService.java b/testing-modules/spring-testing/src/main/java/org/baeldung/reflectiontestutils/repository/HRService.java new file mode 100644 index 0000000000..e693aca764 --- /dev/null +++ b/testing-modules/spring-testing/src/main/java/org/baeldung/reflectiontestutils/repository/HRService.java @@ -0,0 +1,11 @@ +package org.baeldung.reflectiontestutils.repository; + +import org.springframework.stereotype.Component; + +@Component +public class HRService { + + public String getEmployeeStatus(Integer employeeId) { + return "Inactive"; + } +} diff --git a/testing-modules/spring-testing/src/test/java/org/baeldung/reflectiontestutils/ReflectionTestUtilsUnitTest.java b/testing-modules/spring-testing/src/test/java/org/baeldung/reflectiontestutils/ReflectionTestUtilsUnitTest.java new file mode 100644 index 0000000000..64c7ca19ef --- /dev/null +++ b/testing-modules/spring-testing/src/test/java/org/baeldung/reflectiontestutils/ReflectionTestUtilsUnitTest.java @@ -0,0 +1,46 @@ +package org.baeldung.reflectiontestutils; + +import static org.junit.Assert.*; +import static org.mockito.Mockito.mock; + +import org.baeldung.reflectiontestutils.repository.Employee; +import org.baeldung.reflectiontestutils.repository.EmployeeService; +import org.baeldung.reflectiontestutils.repository.HRService; +import org.junit.Test; +import org.springframework.test.util.ReflectionTestUtils; + +import static org.mockito.Mockito.when; + +public class ReflectionTestUtilsUnitTest { + + @Test + public void whenNonPublicField_thenReflectionTestUtilsSetField() { + Employee employee = new Employee(); + ReflectionTestUtils.setField(employee, "id", 1); + assertTrue(employee.getId().equals(1)); + + } + + @Test + public void whenNonPublicMethod_thenReflectionTestUtilsInvokeMethod() { + Employee employee = new Employee(); + ReflectionTestUtils.setField(employee, "id", 1); + employee.setName("Smith, John"); + assertTrue(ReflectionTestUtils.invokeMethod(employee, "employeeToString").equals("id: 1; name: Smith, John")); + } + + @Test + public void whenInjectingMockOfDependency_thenReflectionTestUtilsSetField() { + Employee employee = new Employee(); + ReflectionTestUtils.setField(employee, "id", 1); + employee.setName("Smith, John"); + + HRService hrService = mock(HRService.class); + when(hrService.getEmployeeStatus(employee.getId())).thenReturn("Active"); + EmployeeService employeeService = new EmployeeService(); + + // Inject mock into the private field + ReflectionTestUtils.setField(employeeService, "hrService", hrService); + assertEquals("Employee " + employee.getId() + " status: Active", employeeService.findEmployeeStatus(employee.getId())); + } +} From f9ae5001c1281ea0cd1835a3269fd55770791137 Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Sat, 17 Nov 2018 22:12:10 +0200 Subject: [PATCH 102/119] Update README.MD --- spring-boot/README.MD | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-boot/README.MD b/spring-boot/README.MD index f09ab27fb5..016d2841d7 100644 --- a/spring-boot/README.MD +++ b/spring-boot/README.MD @@ -34,4 +34,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Introduction to Chaos Monkey](https://www.baeldung.com/spring-boot-chaos-monkey) - [Spring Component Scanning](https://www.baeldung.com/spring-component-scanning) - [Load Spring Boot Properties From a JSON File](https://www.baeldung.com/spring-boot-json-properties) -- [Display Auto-Configuration Report in Spring Boot](https://www.baeldung.com/spring-boot-auto-configuration-report) \ No newline at end of file +- [Display Auto-Configuration Report in Spring Boot](https://www.baeldung.com/spring-boot-auto-configuration-report) +- [Injecting Git Information Into Spring](https://www.baeldung.com/spring-git-information) From d10c8d012bfc8f1984a66d8e677f234434a0aea6 Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Sat, 17 Nov 2018 22:12:53 +0200 Subject: [PATCH 103/119] Update demo.properties --- spring-boot/src/main/resources/demo.properties | 4 ---- 1 file changed, 4 deletions(-) diff --git a/spring-boot/src/main/resources/demo.properties b/spring-boot/src/main/resources/demo.properties index 649b64f59b..6b4cbeb7a0 100644 --- a/spring-boot/src/main/resources/demo.properties +++ b/spring-boot/src/main/resources/demo.properties @@ -1,6 +1,2 @@ spring.output.ansi.enabled=never server.port=7070 - -# Security -security.user.name=admin -security.user.password=password \ No newline at end of file From 89fb5f39b8db7460f5716685120dca8efc00fd6e Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Sat, 17 Nov 2018 22:13:40 +0200 Subject: [PATCH 104/119] Update exception.properties --- spring-boot/src/test/resources/exception.properties | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/spring-boot/src/test/resources/exception.properties b/spring-boot/src/test/resources/exception.properties index e82a482968..2d17b64a25 100644 --- a/spring-boot/src/test/resources/exception.properties +++ b/spring-boot/src/test/resources/exception.properties @@ -1,6 +1,2 @@ -# Security -spring.security.user.name=admin -spring.security.user.password=password - spring.dao.exceptiontranslation.enabled=false -spring.profiles.active=exception \ No newline at end of file +spring.profiles.active=exception From 7baa99bc34483f1d248ae21520590fdd938da9d5 Mon Sep 17 00:00:00 2001 From: amit2103 Date: Sun, 18 Nov 2018 18:05:41 +0530 Subject: [PATCH 105/119] [BAEL-10135] - Updated graphql code with latest version --- spring-boot/pom.xml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index f16460b7c3..ac9873a770 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -70,6 +70,11 @@ graphql-java-tools ${graphql-java-tools.version} + + com.graphql-java + graphiql-spring-boot-starter + ${graphiql-spring-boot-starter.version} + org.springframework.boot @@ -220,8 +225,9 @@ 2.4.1.Final 1.9.0 2.0.0 - 3.6.0 - 3.2.0 + 5.0.2 + 5.0.2 + 5.2.4 18.0 2.2.4 From a98df2add7bb73f10d7a40253c24fe6d5a1ff96d Mon Sep 17 00:00:00 2001 From: amit2103 Date: Sun, 18 Nov 2018 20:09:03 +0530 Subject: [PATCH 106/119] [BAEL-10218] - Updated code to the latest version and modified code --- grpc/pom.xml | 6 +++--- grpc/src/main/java/org/baeldung/grpc/client/GrpcClient.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/grpc/pom.xml b/grpc/pom.xml index 949f26d376..bbdfe9bfb2 100644 --- a/grpc/pom.xml +++ b/grpc/pom.xml @@ -71,9 +71,9 @@ - 1.5.0 - 1.5.0.Final - 0.5.0 + 1.16.1 + 1.6.1 + 0.6.1 diff --git a/grpc/src/main/java/org/baeldung/grpc/client/GrpcClient.java b/grpc/src/main/java/org/baeldung/grpc/client/GrpcClient.java index 1a1809387f..f653e17910 100644 --- a/grpc/src/main/java/org/baeldung/grpc/client/GrpcClient.java +++ b/grpc/src/main/java/org/baeldung/grpc/client/GrpcClient.java @@ -10,7 +10,7 @@ import io.grpc.ManagedChannelBuilder; public class GrpcClient { public static void main(String[] args) throws InterruptedException { ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 8080) - .usePlaintext(true) + .usePlaintext() .build(); HelloServiceGrpc.HelloServiceBlockingStub stub From 9ec41d973b89f1542bf26c1b40c0f2daac0c142f Mon Sep 17 00:00:00 2001 From: Loredana Date: Sun, 18 Nov 2018 17:12:59 +0200 Subject: [PATCH 107/119] simplify swagger ex, fix start --- .../com/baeldung/swaggerboot/Application.java | 2 -- .../com/baeldung/swaggerboot/Constants.java | 16 ---------- .../configuration/SpringFoxConfig.java | 5 --- .../controller/RegularRestController.java | 14 ++------- .../services/RegularWebService.java | 20 ------------ .../swaggerboot/transfer/CustomResponse.java | 31 ------------------- .../src/main/resources/application.properties | 1 + 7 files changed, 4 insertions(+), 85 deletions(-) delete mode 100644 spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Constants.java delete mode 100644 spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/services/RegularWebService.java delete mode 100644 spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/transfer/CustomResponse.java diff --git a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Application.java b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Application.java index 2161597c4e..14e46b2306 100644 --- a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Application.java +++ b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Application.java @@ -2,10 +2,8 @@ package com.baeldung.swaggerboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.ComponentScan; @SpringBootApplication -@ComponentScan(basePackages = {"com.baeldung"}) public class Application { public static void main(String[] args) { diff --git a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Constants.java b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Constants.java deleted file mode 100644 index 14b4162713..0000000000 --- a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/Constants.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.baeldung.swaggerboot; - -public class Constants { - - public static final String DEFAULT_GREETING = "Howdy Cosmic Spheroid!"; - public static final String DEFAULT_ERROR = "Fail!"; - - /** - * API Endpoint. - */ - - public static final String REACTIVE_REST_URL = "/reactiverest"; - public static final String FUNCTIONAL_URL = "/functional"; - public static final String REGULAR_REST_URL = "/regularrest"; - -} \ No newline at end of file diff --git a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/configuration/SpringFoxConfig.java b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/configuration/SpringFoxConfig.java index babe70580c..3041dfdcc8 100644 --- a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/configuration/SpringFoxConfig.java +++ b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/configuration/SpringFoxConfig.java @@ -1,7 +1,5 @@ package com.baeldung.swaggerboot.configuration; -import com.fasterxml.classmate.TypeResolver; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @@ -21,9 +19,6 @@ import java.util.Collections; @ComponentScan("com.baeldung.swaggerboot.controller") public class SpringFoxConfig { - @Autowired - private TypeResolver typeResolver; - private ApiInfo apiInfo() { return new ApiInfo( "My REST API", diff --git a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/controller/RegularRestController.java b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/controller/RegularRestController.java index 537e16d146..676937f7d7 100644 --- a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/controller/RegularRestController.java +++ b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/controller/RegularRestController.java @@ -1,22 +1,14 @@ package com.baeldung.swaggerboot.controller; -import com.baeldung.swaggerboot.services.RegularWebService; -import com.baeldung.swaggerboot.transfer.CustomResponse; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; -import static com.baeldung.swaggerboot.Constants.REGULAR_REST_URL; - @RestController public class RegularRestController { - @Autowired - RegularWebService regularWebService; - - @GetMapping(REGULAR_REST_URL) - public CustomResponse getSession() { - return regularWebService.example(); + @GetMapping("home") + public String getSession() { + return "Hello"; } } \ No newline at end of file diff --git a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/services/RegularWebService.java b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/services/RegularWebService.java deleted file mode 100644 index d13ed7a6a9..0000000000 --- a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/services/RegularWebService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.baeldung.swaggerboot.services; - -import com.baeldung.swaggerboot.transfer.CustomResponse; -import org.springframework.stereotype.Service; - -import static com.baeldung.swaggerboot.Constants.DEFAULT_ERROR; -import static com.baeldung.swaggerboot.Constants.DEFAULT_GREETING; - -@Service -public class RegularWebService { - - public CustomResponse example() { - try { - return new CustomResponse(0, DEFAULT_GREETING); - } catch (Exception ex) { - return new CustomResponse(0, DEFAULT_ERROR); - } - } - -} \ No newline at end of file diff --git a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/transfer/CustomResponse.java b/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/transfer/CustomResponse.java deleted file mode 100644 index d09e9f935e..0000000000 --- a/spring-boot-mvc/src/main/java/com/baeldung/swaggerboot/transfer/CustomResponse.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.baeldung.swaggerboot.transfer; - -public class CustomResponse { - - private int id; - private String note; - - public CustomResponse() {} - - public CustomResponse(int id, String note) { - this.id = id; - this.note = note; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getNote() { - return note; - } - - public void setNote(String note) { - this.note = note; - } - -} diff --git a/spring-boot-mvc/src/main/resources/application.properties b/spring-boot-mvc/src/main/resources/application.properties index e69de29bb2..709574239b 100644 --- a/spring-boot-mvc/src/main/resources/application.properties +++ b/spring-boot-mvc/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.main.allow-bean-definition-overriding=true \ No newline at end of file From 86184f827018900a34aae0c666e26a341d47b4dc Mon Sep 17 00:00:00 2001 From: Alejandro Gervasio Date: Sun, 18 Nov 2018 12:54:57 -0300 Subject: [PATCH 108/119] BAEL-2312 - Abstract Classes in Java (#5704) * Initial Commit * Fixed project files * Update UppercaseFileReaderUnitTest.java * Update UppercaseFileReaderUnitTest.java * Refactored File Reader SubClasses * Update UppercaseFileReaderUnitTest.java --- .../application/Application.java | 27 +++++++++---------- .../filereaders/BaseFileReader.java | 16 ++++++++--- .../filereaders/LowercaseFileReader.java | 18 +++++-------- .../filereaders/StandardFileReader.java | 19 ------------- .../filereaders/UppercaseFileReader.java | 18 +++++-------- .../StandardFileReaderUnitTest.java | 25 ----------------- .../LowercaseFileReaderUnitTest.java | 15 +++++------ .../UppercaseFileReaderUnitTest.java | 13 ++++----- 8 files changed, 48 insertions(+), 103 deletions(-) delete mode 100644 core-java/src/main/java/com/baeldung/abstractclasses/filereaders/StandardFileReader.java delete mode 100644 core-java/src/test/java/com/baeldung/abstractclasses/StandardFileReaderUnitTest.java rename core-java/src/test/java/com/baeldung/abstractclasses/{ => test}/LowercaseFileReaderUnitTest.java (63%) rename core-java/src/test/java/com/baeldung/abstractclasses/{ => test}/UppercaseFileReaderUnitTest.java (62%) diff --git a/core-java/src/main/java/com/baeldung/abstractclasses/application/Application.java b/core-java/src/main/java/com/baeldung/abstractclasses/application/Application.java index fe30c66484..3180762227 100644 --- a/core-java/src/main/java/com/baeldung/abstractclasses/application/Application.java +++ b/core-java/src/main/java/com/baeldung/abstractclasses/application/Application.java @@ -2,29 +2,28 @@ package com.baeldung.abstractclasses.application; import com.baeldung.abstractclasses.filereaders.BaseFileReader; import com.baeldung.abstractclasses.filereaders.LowercaseFileReader; -import com.baeldung.abstractclasses.filereaders.StandardFileReader; import com.baeldung.abstractclasses.filereaders.UppercaseFileReader; import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Path; +import java.nio.file.Paths; public class Application { - public static void main(String[] args) throws IOException { - + public static void main(String[] args) throws IOException, URISyntaxException { + Application application = new Application(); - String filePath = application.getFilePathFromResourcesFolder("files/test.txt"); - - BaseFileReader lowercaseFileReader = new LowercaseFileReader(filePath); + Path path = application.getPathFromResourcesFile("files/test.txt"); + BaseFileReader lowercaseFileReader = new LowercaseFileReader(path); lowercaseFileReader.readFile().forEach(line -> System.out.println(line)); + + BaseFileReader uppercaseFileReader = new UppercaseFileReader(path); + uppercaseFileReader.readFile().forEach(line -> System.out.println(line)); - BaseFileReader upperCaseFileReader = new UppercaseFileReader(filePath); - upperCaseFileReader.readFile().forEach(line -> System.out.println(line)); - - BaseFileReader standardFileReader = new StandardFileReader(filePath); - standardFileReader.readFile().forEach(line -> System.out.println(line)); - } - private String getFilePathFromResourcesFolder(String fileName) { - return getClass().getClassLoader().getResource(fileName).getPath().substring(1); + private Path getPathFromResourcesFile(String filePath) throws URISyntaxException { + return Paths.get(getClass().getClassLoader().getResource(filePath).toURI()); + } } diff --git a/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java b/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java index 659913f046..97452a9eca 100644 --- a/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java +++ b/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java @@ -1,19 +1,27 @@ package com.baeldung.abstractclasses.filereaders; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.List; +import java.util.stream.Collectors; public abstract class BaseFileReader { - protected String filePath; + protected Path filePath; - protected BaseFileReader(String filePath) { + protected BaseFileReader(Path filePath) { this.filePath = filePath; } - public String getFilePath() { + public Path getFilePath() { return filePath; } - public abstract List readFile() throws IOException; + public List readFile() throws IOException { + return Files.lines(filePath) + .map(this::mapFileLine).collect(Collectors.toList()); + } + + protected abstract String mapFileLine(String line); } diff --git a/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java b/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java index 0bbef45eb8..53820d393c 100644 --- a/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java +++ b/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java @@ -1,21 +1,15 @@ package com.baeldung.abstractclasses.filereaders; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.List; -import java.util.stream.Collectors; +import java.nio.file.Path; public class LowercaseFileReader extends BaseFileReader { - public LowercaseFileReader(String filePath) { + public LowercaseFileReader(Path filePath) { super(filePath); } - + @Override - public List readFile() throws IOException { - return Files.lines(Paths.get(filePath)) - .map(String::toLowerCase) - .collect(Collectors.toList()); - } + public String mapFileLine(String line) { + return line.toLowerCase(); + } } diff --git a/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/StandardFileReader.java b/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/StandardFileReader.java deleted file mode 100644 index 0a90d53c38..0000000000 --- a/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/StandardFileReader.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.abstractclasses.filereaders; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.List; -import java.util.stream.Collectors; - -public class StandardFileReader extends BaseFileReader { - - public StandardFileReader(String filePath) { - super(filePath); - } - - @Override - public List readFile() throws IOException { - return Files.lines(Paths.get(filePath)).collect(Collectors.toList()); - } -} diff --git a/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java b/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java index 4e8f150964..3144a4f27f 100644 --- a/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java +++ b/core-java/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java @@ -1,21 +1,15 @@ package com.baeldung.abstractclasses.filereaders; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.List; -import java.util.stream.Collectors; +import java.nio.file.Path; public class UppercaseFileReader extends BaseFileReader { - - public UppercaseFileReader(String filePath) { + + public UppercaseFileReader(Path filePath) { super(filePath); } - + @Override - public List readFile() throws IOException { - return Files.lines(Paths.get(filePath)) - .map(String::toUpperCase) - .collect(Collectors.toList()); + public String mapFileLine(String line) { + return line.toUpperCase(); } } diff --git a/core-java/src/test/java/com/baeldung/abstractclasses/StandardFileReaderUnitTest.java b/core-java/src/test/java/com/baeldung/abstractclasses/StandardFileReaderUnitTest.java deleted file mode 100644 index 348b0f0366..0000000000 --- a/core-java/src/test/java/com/baeldung/abstractclasses/StandardFileReaderUnitTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.abstractclasses; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.net.URL; -import java.nio.file.Paths; -import java.util.List; - -import org.junit.Test; - -import com.baeldung.abstractclasses.filereaders.BaseFileReader; -import com.baeldung.abstractclasses.filereaders.StandardFileReader; - -public class StandardFileReaderUnitTest { - - @Test - public void givenStandardFileReaderInstance_whenCalledreadFile_thenCorrect() throws Exception { - // We'll transform the resource URL path to URI to load the file correctly in Windows - URL url = getClass().getClassLoader().getResource("files/test.txt"); - String filePath = Paths.get(url.toURI()).toString(); - BaseFileReader standardFileReader = new StandardFileReader(filePath); - - assertThat(standardFileReader.readFile()).isInstanceOf(List.class); - } -} diff --git a/core-java/src/test/java/com/baeldung/abstractclasses/LowercaseFileReaderUnitTest.java b/core-java/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java similarity index 63% rename from core-java/src/test/java/com/baeldung/abstractclasses/LowercaseFileReaderUnitTest.java rename to core-java/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java index a97a68e0bd..4f0d3a7cd5 100644 --- a/core-java/src/test/java/com/baeldung/abstractclasses/LowercaseFileReaderUnitTest.java +++ b/core-java/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java @@ -1,23 +1,20 @@ -package com.baeldung.abstractclasses; +package com.baeldung.abstractclasses.test; import com.baeldung.abstractclasses.filereaders.BaseFileReader; import com.baeldung.abstractclasses.filereaders.LowercaseFileReader; - -import java.net.URL; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; public class LowercaseFileReaderUnitTest { - + @Test public void givenLowercaseFileReaderInstance_whenCalledreadFile_thenCorrect() throws Exception { - // We'll transform the resource URL path to URI to load the file correctly in Windows - URL url = getClass().getClassLoader().getResource("files/test.txt"); - String filePath = Paths.get(url.toURI()).toString(); - BaseFileReader lowercaseFileReader = new LowercaseFileReader(filePath); - + Path path = Paths.get(getClass().getClassLoader().getResource("files/test.txt").toURI()); + BaseFileReader lowercaseFileReader = new LowercaseFileReader(path); + assertThat(lowercaseFileReader.readFile()).isInstanceOf(List.class); } } diff --git a/core-java/src/test/java/com/baeldung/abstractclasses/UppercaseFileReaderUnitTest.java b/core-java/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java similarity index 62% rename from core-java/src/test/java/com/baeldung/abstractclasses/UppercaseFileReaderUnitTest.java rename to core-java/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java index d698cfe038..e11db57000 100644 --- a/core-java/src/test/java/com/baeldung/abstractclasses/UppercaseFileReaderUnitTest.java +++ b/core-java/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java @@ -1,9 +1,8 @@ -package com.baeldung.abstractclasses; +package com.baeldung.abstractclasses.test; import com.baeldung.abstractclasses.filereaders.BaseFileReader; import com.baeldung.abstractclasses.filereaders.UppercaseFileReader; - -import java.net.URL; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @@ -13,11 +12,9 @@ public class UppercaseFileReaderUnitTest { @Test public void givenUppercaseFileReaderInstance_whenCalledreadFile_thenCorrect() throws Exception { - // We'll transform the resource URL path to URI to load the file correctly in Windows - URL url = getClass().getClassLoader().getResource("files/test.txt"); - String filePath = Paths.get(url.toURI()).toString(); - BaseFileReader uppercaseFileReader = new UppercaseFileReader(filePath); + Path path = Paths.get(getClass().getClassLoader().getResource("files/test.txt").toURI()); + BaseFileReader uppercaseFileReader = new UppercaseFileReader(path); assertThat(uppercaseFileReader.readFile()).isInstanceOf(List.class); - } + } } From 3fa720b91e1ec5a0a3d21408204989a14309098c Mon Sep 17 00:00:00 2001 From: Loredana Date: Sun, 18 Nov 2018 19:35:28 +0200 Subject: [PATCH 109/119] fix regex matcher unit test --- .../optmization/OptimizedMatcherUnitTest.java | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/regexp/optmization/OptimizedMatcherUnitTest.java b/core-java/src/test/java/com/baeldung/regexp/optmization/OptimizedMatcherUnitTest.java index f21a755b01..2be6b6ad4b 100644 --- a/core-java/src/test/java/com/baeldung/regexp/optmization/OptimizedMatcherUnitTest.java +++ b/core-java/src/test/java/com/baeldung/regexp/optmization/OptimizedMatcherUnitTest.java @@ -1,6 +1,5 @@ package com.baeldung.regexp.optmization; -import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -14,13 +13,15 @@ import static org.junit.Assert.assertTrue; public class OptimizedMatcherUnitTest { - private long time; - private long mstimePreCompiled; - private long mstimeNotPreCompiled; - private String action; private List items; + + private class TimeWrapper { + private long time; + private long mstimePreCompiled; + private long mstimeNotPreCompiled; + } @Before public void setup() { @@ -48,27 +49,27 @@ public class OptimizedMatcherUnitTest { @Test public void givenANotPreCompiledAndAPreCompiledPatternA_whenMatcheItems_thenPreCompiledFasterThanNotPreCompiled() { - - testPatterns("A*"); - assertTrue(mstimePreCompiled < mstimeNotPreCompiled); + TimeWrapper timeObj = new TimeWrapper(); + testPatterns("A*", timeObj); + assertTrue(timeObj.mstimePreCompiled < timeObj.mstimeNotPreCompiled); } @Test public void givenANotPreCompiledAndAPreCompiledPatternABC_whenMatcheItems_thenPreCompiledFasterThanNotPreCompiled() { - - testPatterns("A*B*C*"); - assertTrue(mstimePreCompiled < mstimeNotPreCompiled); + TimeWrapper timeObj = new TimeWrapper(); + testPatterns("A*B*C*", timeObj); + assertTrue(timeObj.mstimePreCompiled < timeObj.mstimeNotPreCompiled); } @Test public void givenANotPreCompiledAndAPreCompiledPatternECWF_whenMatcheItems_thenPreCompiledFasterThanNotPreCompiled() { - - testPatterns("E*C*W*F*"); - assertTrue(mstimePreCompiled < mstimeNotPreCompiled); + TimeWrapper timeObj = new TimeWrapper(); + testPatterns("E*C*W*F*", timeObj); + assertTrue(timeObj.mstimePreCompiled < timeObj.mstimeNotPreCompiled); } - private void testPatterns(String regex) { - time = System.nanoTime(); + private void testPatterns(String regex, TimeWrapper timeObj) { + timeObj.time = System.nanoTime(); int matched = 0; int unmatched = 0; @@ -83,10 +84,10 @@ public class OptimizedMatcherUnitTest { this.action = "uncompiled: regex=" + regex + " matched=" + matched + " unmatched=" + unmatched; - this.mstimeNotPreCompiled = (System.nanoTime() - time) / 1000000; - System.out.println(this.action + ": " + mstimeNotPreCompiled + "ms"); + timeObj.mstimeNotPreCompiled = (System.nanoTime() - timeObj.time) / 1000000; + System.out.println(this.action + ": " + timeObj.mstimeNotPreCompiled + "ms"); - time = System.nanoTime(); + timeObj.time = System.nanoTime(); Matcher matcher = Pattern.compile(regex).matcher(""); matched = 0; @@ -103,7 +104,7 @@ public class OptimizedMatcherUnitTest { this.action = "compiled: regex=" + regex + " matched=" + matched + " unmatched=" + unmatched; - this.mstimePreCompiled = (System.nanoTime() - time) / 1000000; - System.out.println(this.action + ": " + mstimePreCompiled + "ms"); + timeObj.mstimePreCompiled = (System.nanoTime() - timeObj.time) / 1000000; + System.out.println(this.action + ": " + timeObj.mstimePreCompiled + "ms"); } } From ea1b7c45d4db33cb41774239bca534b565176376 Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Sun, 18 Nov 2018 19:54:11 +0200 Subject: [PATCH 110/119] Update pom.xml --- grpc/pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/grpc/pom.xml b/grpc/pom.xml index bbdfe9bfb2..725bec3e70 100644 --- a/grpc/pom.xml +++ b/grpc/pom.xml @@ -75,5 +75,4 @@ 1.6.1 0.6.1 - From cc48f3bdcf11d44c3e5c1bce100085dbd3592523 Mon Sep 17 00:00:00 2001 From: Loredana Date: Sun, 18 Nov 2018 20:07:29 +0200 Subject: [PATCH 111/119] update guava rangemap --- .../java/org/baeldung/guava/GuavaRangeMapUnitTest.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/guava-collections/src/test/java/org/baeldung/guava/GuavaRangeMapUnitTest.java b/guava-collections/src/test/java/org/baeldung/guava/GuavaRangeMapUnitTest.java index 81ba72373c..67a7d6a1f7 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/GuavaRangeMapUnitTest.java +++ b/guava-collections/src/test/java/org/baeldung/guava/GuavaRangeMapUnitTest.java @@ -2,6 +2,9 @@ package org.baeldung.guava; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; import java.util.Map; import org.junit.Test; import com.google.common.collect.ImmutableRangeMap; @@ -98,8 +101,8 @@ public class GuavaRangeMapUnitTest { final RangeMap experiencedSubRangeDesignationMap = experienceRangeDesignationMap.subRangeMap(Range.closed(4, 14)); assertNull(experiencedSubRangeDesignationMap.get(3)); - assertEquals("Executive Director", experiencedSubRangeDesignationMap.get(14)); - assertEquals("Vice President", experiencedSubRangeDesignationMap.get(7)); + assertTrue(experiencedSubRangeDesignationMap.asMapOfRanges().values().containsAll(Arrays.asList("Executive Director", "Vice President", "Executive Director"))); + } @Test From dad9467f97b8fac1a9d77ba0d53270320e40cbf2 Mon Sep 17 00:00:00 2001 From: Loredana Date: Sun, 18 Nov 2018 20:09:39 +0200 Subject: [PATCH 112/119] fix formatting --- .../test/java/org/baeldung/guava/GuavaRangeMapUnitTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/guava-collections/src/test/java/org/baeldung/guava/GuavaRangeMapUnitTest.java b/guava-collections/src/test/java/org/baeldung/guava/GuavaRangeMapUnitTest.java index 67a7d6a1f7..c0c5efea23 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/GuavaRangeMapUnitTest.java +++ b/guava-collections/src/test/java/org/baeldung/guava/GuavaRangeMapUnitTest.java @@ -101,7 +101,8 @@ public class GuavaRangeMapUnitTest { final RangeMap experiencedSubRangeDesignationMap = experienceRangeDesignationMap.subRangeMap(Range.closed(4, 14)); assertNull(experiencedSubRangeDesignationMap.get(3)); - assertTrue(experiencedSubRangeDesignationMap.asMapOfRanges().values().containsAll(Arrays.asList("Executive Director", "Vice President", "Executive Director"))); + assertTrue(experiencedSubRangeDesignationMap.asMapOfRanges().values() + .containsAll(Arrays.asList("Executive Director", "Vice President", "Executive Director"))); } From 31825c7b3bdcb5d35da481ecf65ca817d1d35232 Mon Sep 17 00:00:00 2001 From: geroza Date: Sun, 18 Nov 2018 19:29:38 -0200 Subject: [PATCH 113/119] Fixed one other scenario not working properly --- .../main/resources/META-INF/spring.factories | 1 + .../FailureAnalyzerAppIntegrationTest.java | 47 +++++++++++++++++++ .../failureanalyzer/utils/ListAppender.java | 25 ++++++++++ .../src/test/resources/logback-test.xml | 15 ++++++ 4 files changed, 88 insertions(+) create mode 100644 spring-boot/src/main/resources/META-INF/spring.factories create mode 100644 spring-boot/src/test/java/com/baeldung/failureanalyzer/FailureAnalyzerAppIntegrationTest.java create mode 100644 spring-boot/src/test/java/com/baeldung/failureanalyzer/utils/ListAppender.java create mode 100644 spring-boot/src/test/resources/logback-test.xml diff --git a/spring-boot/src/main/resources/META-INF/spring.factories b/spring-boot/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000000..e3d3aa4c8e --- /dev/null +++ b/spring-boot/src/main/resources/META-INF/spring.factories @@ -0,0 +1 @@ +org.springframework.boot.diagnostics.FailureAnalyzer=com.baeldung.failureanalyzer.MyBeanNotOfRequiredTypeFailureAnalyzer \ No newline at end of file diff --git a/spring-boot/src/test/java/com/baeldung/failureanalyzer/FailureAnalyzerAppIntegrationTest.java b/spring-boot/src/test/java/com/baeldung/failureanalyzer/FailureAnalyzerAppIntegrationTest.java new file mode 100644 index 0000000000..b3555f55da --- /dev/null +++ b/spring-boot/src/test/java/com/baeldung/failureanalyzer/FailureAnalyzerAppIntegrationTest.java @@ -0,0 +1,47 @@ +package com.baeldung.failureanalyzer; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Collection; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.BeanCreationException; +import org.springframework.boot.SpringApplication; + +import com.baeldung.failureanalyzer.utils.ListAppender; + +import ch.qos.logback.classic.spi.ILoggingEvent; + +public class FailureAnalyzerAppIntegrationTest { + + private static final String EXPECTED_ANALYSIS_DESCRIPTION_TITLE = "Description:"; + private static final String EXPECTED_ANALYSIS_DESCRIPTION_CONTENT = "The bean myDAO could not be injected as com.baeldung.failureanalyzer.MyDAO because it is of type com.baeldung.failureanalyzer.MySecondDAO"; + private static final String EXPECTED_ANALYSIS_ACTION_TITLE = "Action:"; + private static final String EXPECTED_ANALYSIS_ACTION_CONTENT = "Consider creating a bean with name myDAO of type com.baeldung.failureanalyzer.MyDAO"; + + @BeforeEach + public void clearLogList() { + ListAppender.clearEventList(); + } + + @Test + public void givenBeanCreationErrorInContext_whenContextLoaded_thenFailureAnalyzerLogsReport() { + try { + SpringApplication.run(FailureAnalyzerApplication.class); + } catch (BeanCreationException e) { + Collection allLoggedEntries = ListAppender.getEvents() + .stream() + .map(ILoggingEvent::getFormattedMessage) + .collect(Collectors.toList()); + assertThat(allLoggedEntries).anyMatch(entry -> entry.contains(EXPECTED_ANALYSIS_DESCRIPTION_TITLE)) + .anyMatch(entry -> entry.contains(EXPECTED_ANALYSIS_DESCRIPTION_CONTENT)) + .anyMatch(entry -> entry.contains(EXPECTED_ANALYSIS_ACTION_TITLE)) + .anyMatch(entry -> entry.contains(EXPECTED_ANALYSIS_ACTION_CONTENT)); + return; + } + throw new IllegalStateException("Context load should be failing due to a BeanCreationException!"); + } + +} diff --git a/spring-boot/src/test/java/com/baeldung/failureanalyzer/utils/ListAppender.java b/spring-boot/src/test/java/com/baeldung/failureanalyzer/utils/ListAppender.java new file mode 100644 index 0000000000..a298f49ff5 --- /dev/null +++ b/spring-boot/src/test/java/com/baeldung/failureanalyzer/utils/ListAppender.java @@ -0,0 +1,25 @@ +package com.baeldung.failureanalyzer.utils; + +import java.util.ArrayList; +import java.util.List; + +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.AppenderBase; + +public class ListAppender extends AppenderBase { + + static private List events = new ArrayList<>(); + + @Override + protected void append(ILoggingEvent eventObject) { + events.add(eventObject); + } + + public static List getEvents() { + return events; + } + + public static void clearEventList() { + events.clear(); + } +} \ No newline at end of file diff --git a/spring-boot/src/test/resources/logback-test.xml b/spring-boot/src/test/resources/logback-test.xml new file mode 100644 index 0000000000..9e0f4e221f --- /dev/null +++ b/spring-boot/src/test/resources/logback-test.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + \ No newline at end of file From eba76ca5a2e8e6b9cb8081c3e2519513663cfbfb Mon Sep 17 00:00:00 2001 From: kyleandari <44148335+kyleandari@users.noreply.github.com> Date: Sun, 18 Nov 2018 22:56:37 -0500 Subject: [PATCH 114/119] BAEL-2330 (#5694) * Implementing Hexagonal Architecture in java * Removing duplicates from a string * Fix for the code review feedback - removing the hexagonal architecture code - removing the methods removeDuplicatesUsingCharArray - adding some meaningful sentences to test * Fix for the code review feedback - fix for removeDuplicatesUsingCharArray - adding unit testing - adding brackets around for loops * Fix for the code review feedback --- .../RemoveDuplicateFromString.java | 95 +++++++++++++++++++ .../RemoveDuplicateFromStringUnitTest.java | 58 +++++++++++ 2 files changed, 153 insertions(+) create mode 100644 java-strings/src/main/java/com/baeldung/stringduplicates/RemoveDuplicateFromString.java create mode 100644 java-strings/src/test/java/com/baeldung/stringduplicates/RemoveDuplicateFromStringUnitTest.java diff --git a/java-strings/src/main/java/com/baeldung/stringduplicates/RemoveDuplicateFromString.java b/java-strings/src/main/java/com/baeldung/stringduplicates/RemoveDuplicateFromString.java new file mode 100644 index 0000000000..eeba81f334 --- /dev/null +++ b/java-strings/src/main/java/com/baeldung/stringduplicates/RemoveDuplicateFromString.java @@ -0,0 +1,95 @@ +package com.baeldung.stringduplicates; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.Set; + +public class RemoveDuplicateFromString { + + + String removeDuplicatesUsingCharArray(String str) { + + char[] chars = str.toCharArray(); + StringBuilder sb = new StringBuilder(); + int repeatedCtr; + for (int i = 0; i < chars.length; i++) { + repeatedCtr = 0; + for (int j = i + 1; j < chars.length; j++) { + if (chars[i] == chars[j]) { + repeatedCtr++; + } + } + if (repeatedCtr == 0) { + sb.append(chars[i]); + } + } + return sb.toString(); + } + + String removeDuplicatesUsinglinkedHashSet(String str) { + + StringBuilder sb = new StringBuilder(); + Set linkedHashSet = new LinkedHashSet<>(); + + for (int i = 0; i < str.length(); i++) { + linkedHashSet.add(str.charAt(i)); + } + + for (Character c : linkedHashSet) { + sb.append(c); + } + + return sb.toString(); + } + + String removeDuplicatesUsingSorting(String str) { + + char[] chars = str.toCharArray(); + + Arrays.sort(chars); + + StringBuilder sb = new StringBuilder(); + sb.append(chars[0]); + for (int i = 1; i < chars.length; i++) { + if (chars[i] != chars[i - 1]) { + sb.append(chars[i]); + } + } + + return sb.toString(); + } + + String removeDuplicatesUsingHashSet(String str) { + + StringBuilder sb = new StringBuilder(); + Set hashSet = new HashSet<>(); + + for (int i = 0; i < str.length(); i++) { + hashSet.add(str.charAt(i)); + } + + for (Character c : hashSet) { + sb.append(c); + } + + return sb.toString(); + } + + String removeDuplicatesUsingIndexOf(String str) { + + StringBuilder sb = new StringBuilder(); + int idx; + for (int i = 0; i < str.length(); i++) { + char c = str.charAt(i); + idx = str.indexOf(c, i + 1); + if (idx == -1) { + sb.append(c); + } + } + return sb.toString(); + } + +} + + diff --git a/java-strings/src/test/java/com/baeldung/stringduplicates/RemoveDuplicateFromStringUnitTest.java b/java-strings/src/test/java/com/baeldung/stringduplicates/RemoveDuplicateFromStringUnitTest.java new file mode 100644 index 0000000000..cf7819ced3 --- /dev/null +++ b/java-strings/src/test/java/com/baeldung/stringduplicates/RemoveDuplicateFromStringUnitTest.java @@ -0,0 +1,58 @@ +package com.baeldung.stringduplicates; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class RemoveDuplicateFromStringUnitTest { + + private final static String STR1 = "racecar"; + private final static String STR2 = "J2ee programming"; + private RemoveDuplicateFromString removeDuplicateFromString; + + @Before + public void executedBeforeEach() { + removeDuplicateFromString = new RemoveDuplicateFromString(); + } + + + @Test + public void whenUsingCharArray_DuplicatesShouldBeRemovedWithoutKeepingStringOrder() { + String str1 = removeDuplicateFromString.removeDuplicatesUsingCharArray(STR1); + String str2 = removeDuplicateFromString.removeDuplicatesUsingCharArray(STR2); + Assert.assertEquals("ecar", str1); + Assert.assertEquals("J2e poraming", str2); + } + + @Test + public void whenUsingLinkedHashSet_DuplicatesShouldBeRemovedAndItKeepStringOrder() { + String str1 = removeDuplicateFromString.removeDuplicatesUsinglinkedHashSet(STR1); + String str2 = removeDuplicateFromString.removeDuplicatesUsinglinkedHashSet(STR2); + Assert.assertEquals("race", str1); + Assert.assertEquals("J2e progamin", str2); + } + + @Test + public void whenUsingSorting_DuplicatesShouldBeRemovedWithoutKeepingStringOrder() { + String str1 = removeDuplicateFromString.removeDuplicatesUsingSorting(STR1); + String str2 = removeDuplicateFromString.removeDuplicatesUsingSorting(STR2); + Assert.assertEquals("acer", str1); + Assert.assertEquals(" 2Jaegimnopr", str2); + } + + @Test + public void whenUsingHashSet_DuplicatesShouldBeRemovedWithoutKeepingStringOrder() { + String str1 = removeDuplicateFromString.removeDuplicatesUsingHashSet(STR1); + String str2 = removeDuplicateFromString.removeDuplicatesUsingHashSet(STR2); + Assert.assertEquals("arce", str1); + Assert.assertEquals(" pa2regiJmno", str2); + } + + @Test + public void whenUsingIndexOf_DuplicatesShouldBeRemovedWithoutKeepingStringOrder() { + String str1 = removeDuplicateFromString.removeDuplicatesUsingIndexOf(STR1); + String str2 = removeDuplicateFromString.removeDuplicatesUsingIndexOf(STR2); + Assert.assertEquals("ecar", str1); + Assert.assertEquals("J2e poraming", str2); + } +} From d751dc2eae3ef58b02215b77c019cd210a7890cc Mon Sep 17 00:00:00 2001 From: KevinGilmore Date: Sun, 18 Nov 2018 22:55:50 -0600 Subject: [PATCH 115/119] BAEL-2166 BAEL-2302 update README (#5728) * BAEL-2015: add link back to article * BAEL-2166 BAEL-2302 add links back to articles --- java-strings/README.md | 1 + spring-data-rest/README.md | 1 + 2 files changed, 2 insertions(+) diff --git a/java-strings/README.md b/java-strings/README.md index 1b24a2b821..2847a0d0a8 100644 --- a/java-strings/README.md +++ b/java-strings/README.md @@ -36,3 +36,4 @@ - [String Performance Hints](https://www.baeldung.com/java-string-performance) - [Using indexOf to Find All Occurrences of a Word in a String](https://www.baeldung.com/java-indexOf-find-string-occurrences) - [Java Base64 Encoding and Decoding](https://www.baeldung.com/java-base64-encode-and-decode) +- [Generate a Secure Random Password in Java](https://www.baeldung.com/java-generate-secure-password) diff --git a/spring-data-rest/README.md b/spring-data-rest/README.md index 09f8391406..db94a86a6f 100644 --- a/spring-data-rest/README.md +++ b/spring-data-rest/README.md @@ -20,3 +20,4 @@ To view the running application, visit [http://localhost:8080](http://localhost: - [List of In-Memory Databases](http://www.baeldung.com/java-in-memory-databases) - [Projections and Excerpts in Spring Data REST](http://www.baeldung.com/spring-data-rest-projections-excerpts) - [Spring Data REST Events with @RepositoryEventHandler](http://www.baeldung.com/spring-data-rest-events) +- [Customizing HTTP Endpoints in Spring Data REST](https://www.baeldung.com/spring-data-rest-customize-http-endpoints) From ba98695605ce454c0e0ddeb98ee899e9c7054af4 Mon Sep 17 00:00:00 2001 From: Laurentiu Delcea Date: Mon, 19 Nov 2018 17:05:05 +0200 Subject: [PATCH 116/119] Convert between String and Timestamp Issue: BAEL-2325 --- .../StringToTimestampConverterUnitTest.java | 22 +++++++++++++++++++ .../TimestampToStringConverterTest.java | 19 ++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 java-dates/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java create mode 100644 java-dates/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java diff --git a/java-dates/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java b/java-dates/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java new file mode 100644 index 0000000000..2be646eb51 --- /dev/null +++ b/java-dates/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java @@ -0,0 +1,22 @@ +package com.baeldung.timestamp; + +import org.junit.Assert; +import org.junit.Test; + +import java.sql.Timestamp; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class StringToTimestampConverterUnitTest { + + @Test + public void givenDatePattern_whenParsing_thenTimestampIsCorrect() { + String pattern = "MMM dd, yyyy HH:mm:ss.SSSSSSSS"; + String timestampAsString = "Nov 12, 2018 13:02:56.12345678"; + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); + LocalDateTime localDateTime = LocalDateTime.from(formatter.parse(timestampAsString)); + + Timestamp timestamp = Timestamp.valueOf(localDateTime); + Assert.assertEquals("2018-11-12 13:02:56.12345678", timestamp.toString()); + } +} \ No newline at end of file diff --git a/java-dates/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java b/java-dates/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java new file mode 100644 index 0000000000..b25ff2edb3 --- /dev/null +++ b/java-dates/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java @@ -0,0 +1,19 @@ +package com.baeldung.timestamp; + +import org.junit.Assert; +import org.junit.jupiter.api.Test; + +import java.sql.Timestamp; +import java.time.format.DateTimeFormatter; + +public class TimestampToStringConverterTest { + + @Test + public void givenDatePattern_whenFormatting_thenResultingStringIsCorrect() { + Timestamp timestamp = Timestamp.valueOf("2018-12-12 01:02:03.123456789"); + DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; + + String timestampAsString = formatter.format(timestamp.toLocalDateTime()); + Assert.assertEquals("2018-12-12T01:02:03.123456789", timestampAsString); + } +} \ No newline at end of file From 5145b900990719bc316fec5231bb797ba4542242 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Mon, 19 Nov 2018 18:37:13 +0100 Subject: [PATCH 117/119] added example code for BAEL-2366 (#5730) --- .../StringReplaceAndRemoveUnitTest.java | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 core-java/src/test/java/com/baeldung/string/StringReplaceAndRemoveUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/string/StringReplaceAndRemoveUnitTest.java b/core-java/src/test/java/com/baeldung/string/StringReplaceAndRemoveUnitTest.java new file mode 100644 index 0000000000..d952d2383b --- /dev/null +++ b/core-java/src/test/java/com/baeldung/string/StringReplaceAndRemoveUnitTest.java @@ -0,0 +1,83 @@ +package com.baeldung.string; + + +import org.apache.commons.lang3.StringUtils; +import org.junit.Test; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class StringReplaceAndRemoveUnitTest { + + + @Test + public void givenTestStrings_whenReplace_thenProcessedString() { + + String master = "Hello World Baeldung!"; + String target = "Baeldung"; + String replacement = "Java"; + String processed = master.replace(target, replacement); + assertTrue(processed.contains(replacement)); + assertFalse(processed.contains(target)); + + } + + @Test + public void givenTestStrings_whenReplaceAll_thenProcessedString() { + + String master2 = "Welcome to Baeldung, Hello World Baeldung"; + String regexTarget= "(Baeldung)$"; + String replacement = "Java"; + String processed2 = master2.replaceAll(regexTarget, replacement); + assertTrue(processed2.endsWith("Java")); + + } + + @Test + public void givenTestStrings_whenStringBuilderMethods_thenProcessedString() { + + String master = "Hello World Baeldung!"; + String target = "Baeldung"; + String replacement = "Java"; + + int startIndex = master.indexOf(target); + int stopIndex = startIndex + target.length(); + + StringBuilder builder = new StringBuilder(master); + + + builder.delete(startIndex, stopIndex); + assertFalse(builder.toString().contains(target)); + + + builder.replace(startIndex, stopIndex, replacement); + assertTrue(builder.toString().contains(replacement)); + + + } + + + @Test + public void givenTestStrings_whenStringUtilsMethods_thenProcessedStrings() { + + String master = "Hello World Baeldung!"; + String target = "Baeldung"; + String replacement = "Java"; + + String processed = StringUtils.replace(master, target, replacement); + assertTrue(processed.contains(replacement)); + + String master2 = "Hello World Baeldung!"; + String target2 = "baeldung"; + String processed2 = StringUtils.replaceIgnoreCase(master2, target2, replacement); + assertFalse(processed2.contains(target)); + + } + + + + + + + +} From fcca31572b20af0e346beaef4d51ddcf598cda62 Mon Sep 17 00:00:00 2001 From: myluckagain Date: Mon, 19 Nov 2018 23:34:38 +0500 Subject: [PATCH 118/119] Spring Integration Subflows Issue: BAEL-2276 --- .../subflows/discardflow/FilterExample.java | 57 ++++++++++ .../PublishSubscibeChannelExample.java | 59 +++++------ .../RouteToRecipientsExample.java | 59 +++++------ .../separateflows/SeparateFlowsExample.java | 100 ++++++++---------- .../subflowchannel/FilterExample.java | 60 ----------- .../subflowmapping/RouterExample.java | 63 +++++------ .../subflows/discardflow/FilterUnitTest.java | 62 +++++++++++ .../PublishSubscribeChannelUnitTest.java | 62 +++++++++++ .../RouteToRecipientsUnitTest.java | 63 +++++++++++ .../separateflows/SeparateFlowsUnitTest.java | 75 +++++++++++++ .../subflowmapping/RouterUnitTest.java | 62 +++++++++++ 11 files changed, 517 insertions(+), 205 deletions(-) create mode 100644 spring-integration/src/main/java/com/baeldung/subflows/discardflow/FilterExample.java delete mode 100644 spring-integration/src/main/java/com/baeldung/subflows/subflowchannel/FilterExample.java create mode 100644 spring-integration/src/test/java/com/baeldung/subflows/discardflow/FilterUnitTest.java create mode 100644 spring-integration/src/test/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscribeChannelUnitTest.java create mode 100644 spring-integration/src/test/java/com/baeldung/subflows/routetorecipients/RouteToRecipientsUnitTest.java create mode 100644 spring-integration/src/test/java/com/baeldung/subflows/separateflows/SeparateFlowsUnitTest.java create mode 100644 spring-integration/src/test/java/com/baeldung/subflows/subflowmapping/RouterUnitTest.java diff --git a/spring-integration/src/main/java/com/baeldung/subflows/discardflow/FilterExample.java b/spring-integration/src/main/java/com/baeldung/subflows/discardflow/FilterExample.java new file mode 100644 index 0000000000..f0e12f9333 --- /dev/null +++ b/spring-integration/src/main/java/com/baeldung/subflows/discardflow/FilterExample.java @@ -0,0 +1,57 @@ +package com.baeldung.subflows.discardflow; + +import java.util.Collection; +import org.springframework.context.annotation.Bean; +import org.springframework.integration.annotation.Gateway; +import org.springframework.integration.annotation.IntegrationComponentScan; +import org.springframework.integration.annotation.MessagingGateway; +import org.springframework.integration.channel.QueueChannel; +import org.springframework.integration.config.EnableIntegration; +import org.springframework.integration.dsl.IntegrationFlow; + +@EnableIntegration +@IntegrationComponentScan +public class FilterExample { + @MessagingGateway + public interface NumbersClassifier { + @Gateway(requestChannel = "classify.input") + void classify(Collection numbers); + } + + @Bean + QueueChannel multipleofThreeChannel() { + return new QueueChannel(); + } + + @Bean + QueueChannel remainderIsOneChannel() { + return new QueueChannel(); + } + + @Bean + QueueChannel remainderIsTwoChannel() { + return new QueueChannel(); + } + boolean isMultipleOfThree(Integer number) { + return number % 3 == 0; + } + + boolean isRemainderOne(Integer number) { + return number % 3 == 1; + } + + boolean isRemainderTwo(Integer number) { + return number % 3 == 2; + } + @Bean + public IntegrationFlow classify() { + return flow -> flow.split() + . filter(this::isMultipleOfThree, notMultiple -> notMultiple + .discardFlow(oneflow -> oneflow + . filter(this::isRemainderOne, + twoflow -> twoflow .discardChannel("remainderIsTwoChannel")) + .channel("remainderIsOneChannel"))) + .channel("multipleofThreeChannel"); + } + +} \ No newline at end of file diff --git a/spring-integration/src/main/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscibeChannelExample.java b/spring-integration/src/main/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscibeChannelExample.java index e26f938632..a1a448fc03 100644 --- a/spring-integration/src/main/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscibeChannelExample.java +++ b/spring-integration/src/main/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscibeChannelExample.java @@ -1,15 +1,13 @@ package com.baeldung.subflows.publishsubscribechannel; -import java.util.Arrays; import java.util.Collection; -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.integration.annotation.Gateway; import org.springframework.integration.annotation.IntegrationComponentScan; import org.springframework.integration.annotation.MessagingGateway; -import org.springframework.integration.channel.DirectChannel; + +import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.config.EnableIntegration; import org.springframework.integration.dsl.IntegrationFlow; @@ -18,46 +16,45 @@ import org.springframework.integration.dsl.IntegrationFlow; public class PublishSubscibeChannelExample { @MessagingGateway public interface NumbersClassifier { - @Gateway(requestChannel = "flow.input") - void flow(Collection numbers); + @Gateway(requestChannel = "classify.input") + void classify(Collection numbers); } @Bean - DirectChannel multipleof3Channel() { - return new DirectChannel(); + QueueChannel multipleofThreeChannel() { + return new QueueChannel(); } @Bean - DirectChannel remainderIs1Channel() { - return new DirectChannel(); + QueueChannel remainderIsOneChannel() { + return new QueueChannel(); } @Bean - DirectChannel remainderIs2Channel() { - return new DirectChannel(); + QueueChannel remainderIsTwoChannel() { + return new QueueChannel(); + } + boolean isMultipleOfThree(Integer number) { + return number % 3 == 0; } + boolean isRemainderOne(Integer number) { + return number % 3 == 1; + } + + boolean isRemainderTwo(Integer number) { + return number % 3 == 2; + } @Bean - public IntegrationFlow flow() { + public IntegrationFlow classify() { return flow -> flow.split() - .publishSubscribeChannel(s -> s.subscribe(f -> f. filter(p -> p % 3 == 0) - .channel("multipleof3Channel")) - .subscribe(f -> f. filter(p -> p % 3 == 1) - .channel("remainderIs1Channel")) - .subscribe(f -> f. filter(p -> p % 3 == 2) - .channel("remainderIs2Channel"))); + .publishSubscribeChannel(subscription -> subscription.subscribe(subflow -> subflow. filter(this::isMultipleOfThree) + .channel("multipleofThreeChannel")) + .subscribe(subflow -> subflow. filter(this::isRemainderOne) + .channel("remainderIsOneChannel")) + .subscribe(subflow -> subflow. filter(this::isRemainderTwo) + .channel("remainderIsTwoChannel"))); } + - public static void main(String[] args) { - final ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(PublishSubscibeChannelExample.class); - DirectChannel multipleof3Channel = ctx.getBean("multipleof3Channel", DirectChannel.class); - multipleof3Channel.subscribe(x -> System.out.println("multipleof3Channel: " + x)); - DirectChannel remainderIs1Channel = ctx.getBean("remainderIs1Channel", DirectChannel.class); - remainderIs1Channel.subscribe(x -> System.out.println("remainderIs1Channel: " + x)); - DirectChannel remainderIs2Channel = ctx.getBean("remainderIs2Channel", DirectChannel.class); - remainderIs2Channel.subscribe(x -> System.out.println("remainderIs2Channel: " + x)); - ctx.getBean(NumbersClassifier.class) - .flow(Arrays.asList(1, 2, 3, 4, 5, 6)); - ctx.close(); - } } diff --git a/spring-integration/src/main/java/com/baeldung/subflows/routeToRecipients/RouteToRecipientsExample.java b/spring-integration/src/main/java/com/baeldung/subflows/routeToRecipients/RouteToRecipientsExample.java index 04fdb87dfa..e0b4841736 100644 --- a/spring-integration/src/main/java/com/baeldung/subflows/routeToRecipients/RouteToRecipientsExample.java +++ b/spring-integration/src/main/java/com/baeldung/subflows/routeToRecipients/RouteToRecipientsExample.java @@ -1,15 +1,12 @@ -package com.baeldung.subflows.routeToRecipients; +package com.baeldung.subflows.routetorecipients; -import java.util.Arrays; import java.util.Collection; -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.integration.annotation.Gateway; import org.springframework.integration.annotation.IntegrationComponentScan; import org.springframework.integration.annotation.MessagingGateway; -import org.springframework.integration.channel.DirectChannel; +import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.config.EnableIntegration; import org.springframework.integration.dsl.IntegrationFlow; @@ -18,44 +15,46 @@ import org.springframework.integration.dsl.IntegrationFlow; public class RouteToRecipientsExample { @MessagingGateway public interface NumbersClassifier { - @Gateway(requestChannel = "flow.input") - void flow(Collection numbers); + @Gateway(requestChannel = "classify.input") + void classify(Collection numbers); } @Bean - DirectChannel multipleof3Channel() { - return new DirectChannel(); + QueueChannel multipleofThreeChannel() { + return new QueueChannel(); } @Bean - DirectChannel remainderIs1Channel() { - return new DirectChannel(); + QueueChannel remainderIsOneChannel() { + return new QueueChannel(); } @Bean - DirectChannel remainderIs2Channel() { - return new DirectChannel(); + QueueChannel remainderIsTwoChannel() { + return new QueueChannel(); + } + boolean isMultipleOfThree(Integer number) { + return number % 3 == 0; + } + + boolean isRemainderOne(Integer number) { + return number % 3 == 1; + } + + boolean isRemainderTwo(Integer number) { + return number % 3 == 2; } @Bean - public IntegrationFlow flow() { + public IntegrationFlow classify() { return flow -> flow.split() - .routeToRecipients(r -> r. recipient("multipleof3Channel", p -> p % 3 == 0)// filter - . recipient("remainderIs1Channel", p -> p % 3 == 1) - .recipientFlow(sf -> sf. filter(p -> p % 3 == 2) - .channel("remainderIs2Channel"))); + .routeToRecipients(route -> route + .recipientFlow(subflow -> subflow + . filter(this::isMultipleOfThree) + .channel("multipleofThreeChannel")) + . recipient("remainderIsOneChannel",this::isRemainderOne) + . recipient("remainderIsTwoChannel",this::isRemainderTwo)); } + - public static void main(String[] args) { - final ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(RouteToRecipientsExample.class); - DirectChannel multipleof3Channel = ctx.getBean("multipleof3Channel", DirectChannel.class); - multipleof3Channel.subscribe(x -> System.out.println("multipleof3Channel: " + x)); - DirectChannel remainderIs1Channel = ctx.getBean("remainderIs1Channel", DirectChannel.class); - remainderIs1Channel.subscribe(x -> System.out.println("remainderIs1Channel: " + x)); - DirectChannel remainderIs2Channel = ctx.getBean("remainderIs2Channel", DirectChannel.class); - remainderIs2Channel.subscribe(x -> System.out.println("remainderIs2Channel: " + x)); - ctx.getBean(NumbersClassifier.class) - .flow(Arrays.asList(1, 2, 3, 4, 5, 6)); - ctx.close(); - } } \ No newline at end of file diff --git a/spring-integration/src/main/java/com/baeldung/subflows/separateflows/SeparateFlowsExample.java b/spring-integration/src/main/java/com/baeldung/subflows/separateflows/SeparateFlowsExample.java index 8ed46ead87..457b8045c5 100644 --- a/spring-integration/src/main/java/com/baeldung/subflows/separateflows/SeparateFlowsExample.java +++ b/spring-integration/src/main/java/com/baeldung/subflows/separateflows/SeparateFlowsExample.java @@ -1,15 +1,13 @@ package com.baeldung.subflows.separateflows; -import java.util.Arrays; import java.util.Collection; -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.integration.annotation.Gateway; import org.springframework.integration.annotation.IntegrationComponentScan; import org.springframework.integration.annotation.MessagingGateway; -import org.springframework.integration.channel.DirectChannel; + +import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.config.EnableIntegration; import org.springframework.integration.dsl.IntegrationFlow; @@ -18,66 +16,62 @@ import org.springframework.integration.dsl.IntegrationFlow; public class SeparateFlowsExample { @MessagingGateway public interface NumbersClassifier { - @Gateway(requestChannel = "multipleof3Flow.input") - void multipleof3(Collection is); + @Gateway(requestChannel = "multipleOfThreeFlow.input") + void multipleofThree(Collection numbers); - @Gateway(requestChannel = "remainderIs1Flow.input") - void remainderIs1(Collection is); + @Gateway(requestChannel = "remainderIsOneFlow.input") + void remainderIsOne(Collection numbers); - @Gateway(requestChannel = "remainderIs2Flow.input") - void remainderIs2(Collection numbers); + @Gateway(requestChannel = "remainderIsTwoFlow.input") + void remainderIsTwo(Collection numbers); + } + + @Bean + QueueChannel multipleOfThreeChannel() { + return new QueueChannel(); + } + + @Bean + QueueChannel remainderIsOneChannel() { + return new QueueChannel(); + } + + @Bean + QueueChannel remainderIsTwoChannel() { + return new QueueChannel(); + } + + boolean isMultipleOfThree(Integer number) { + return number % 3 == 0; + } + + boolean isRemainderOne(Integer number) { + return number % 3 == 1; + } + + boolean isRemainderTwo(Integer number) { + return number % 3 == 2; } @Bean - DirectChannel multipleof3Channel() { - return new DirectChannel(); + public IntegrationFlow multipleOfThreeFlow() { + return flow -> flow.split() + . filter(this::isMultipleOfThree) + .channel("multipleOfThreeChannel"); } @Bean - DirectChannel remainderIs1Channel() { - return new DirectChannel(); + public IntegrationFlow remainderIsOneFlow() { + return flow -> flow.split() + . filter(this::isRemainderOne) + .channel("remainderIsOneChannel"); } @Bean - DirectChannel remainderIs2Channel() { - return new DirectChannel(); + public IntegrationFlow remainderIsTwoFlow() { + return flow -> flow.split() + . filter(this::isRemainderTwo) + .channel("remainderIsTwoChannel"); } - @Bean - public IntegrationFlow multipleof3Flow() { - return f -> f.split() - . filter(p -> p % 3 == 0) - .channel("multipleof3Channel"); - } - - @Bean - public IntegrationFlow remainderIs1Flow() { - return f -> f.split() - . filter(p -> p % 3 == 1) - .channel("remainderIs1Channel"); - } - - @Bean - public IntegrationFlow remainderIs2Flow() { - return f -> f.split() - . filter(p -> p % 3 == 2) - .channel("remainderIs2Channel"); - } - - public static void main(String[] args) { - final ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(SeparateFlowsExample.class); - DirectChannel multipleof3Channel = ctx.getBean("multipleof3Channel", DirectChannel.class); - multipleof3Channel.subscribe(x -> System.out.println("multipleof3Channel: " + x)); - DirectChannel remainderIs1Channel = ctx.getBean("remainderIs1Channel", DirectChannel.class); - remainderIs1Channel.subscribe(x -> System.out.println("remainderIs1Channel: " + x)); - DirectChannel remainderIs2Channel = ctx.getBean("remainderIs2Channel", DirectChannel.class); - remainderIs2Channel.subscribe(x -> System.out.println("remainderIs2Channel: " + x)); - ctx.getBean(NumbersClassifier.class) - .multipleof3(Arrays.asList(1, 2, 3, 4, 5, 6)); - ctx.getBean(NumbersClassifier.class) - .remainderIs1(Arrays.asList(1, 2, 3, 4, 5, 6)); - ctx.getBean(NumbersClassifier.class) - .remainderIs2(Arrays.asList(1, 2, 3, 4, 5, 6)); - ctx.close(); - } } \ No newline at end of file diff --git a/spring-integration/src/main/java/com/baeldung/subflows/subflowchannel/FilterExample.java b/spring-integration/src/main/java/com/baeldung/subflows/subflowchannel/FilterExample.java deleted file mode 100644 index 6db3741523..0000000000 --- a/spring-integration/src/main/java/com/baeldung/subflows/subflowchannel/FilterExample.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.baeldung.subflows.subflowchannel; - -import java.util.Arrays; -import java.util.Collection; - -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.integration.annotation.Gateway; -import org.springframework.integration.annotation.IntegrationComponentScan; -import org.springframework.integration.annotation.MessagingGateway; -import org.springframework.integration.channel.DirectChannel; -import org.springframework.integration.config.EnableIntegration; -import org.springframework.integration.dsl.IntegrationFlow; - -@EnableIntegration -@IntegrationComponentScan -public class FilterExample { - @MessagingGateway - public interface NumbersClassifier { - @Gateway(requestChannel = "flow.input") - void flow(Collection numbers); - } - - @Bean - DirectChannel multipleof3Channel() { - return new DirectChannel(); - } - - @Bean - DirectChannel remainderIs1Channel() { - return new DirectChannel(); - } - - @Bean - DirectChannel remainderIs2Channel() { - return new DirectChannel(); - } - - @Bean - public IntegrationFlow flow() { - return flow -> flow.split() - . filter(x -> x % 3 == 0, sf -> sf.discardFlow(subf -> subf. filter(x -> x % 3 == 1, ssf -> ssf.discardChannel("remainderIs2Channel")) - .channel("remainderIs1Channel"))) - .channel("multipleof3Channel"); - } - - public static void main(String[] args) { - final ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(FilterExample.class); - DirectChannel multipleof3Channel = ctx.getBean("multipleof3Channel", DirectChannel.class); - multipleof3Channel.subscribe(x -> System.out.println("multipleof3Channel: " + x)); - DirectChannel remainderIs1Channel = ctx.getBean("remainderIs1Channel", DirectChannel.class); - remainderIs1Channel.subscribe(x -> System.out.println("remainderIs1Channel: " + x)); - DirectChannel remainderIs2Channel = ctx.getBean("remainderIs2Channel", DirectChannel.class); - remainderIs2Channel.subscribe(x -> System.out.println("remainderIs2Channel: " + x)); - ctx.getBean(NumbersClassifier.class) - .flow(Arrays.asList(1, 2, 3, 4, 5, 6)); - ctx.close(); - } -} \ No newline at end of file diff --git a/spring-integration/src/main/java/com/baeldung/subflows/subflowmapping/RouterExample.java b/spring-integration/src/main/java/com/baeldung/subflows/subflowmapping/RouterExample.java index de1f11cf70..c0e902e739 100644 --- a/spring-integration/src/main/java/com/baeldung/subflows/subflowmapping/RouterExample.java +++ b/spring-integration/src/main/java/com/baeldung/subflows/subflowmapping/RouterExample.java @@ -1,15 +1,11 @@ package com.baeldung.subflows.subflowmapping; -import java.util.Arrays; import java.util.Collection; - -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.integration.annotation.Gateway; import org.springframework.integration.annotation.IntegrationComponentScan; import org.springframework.integration.annotation.MessagingGateway; -import org.springframework.integration.channel.DirectChannel; +import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.config.EnableIntegration; import org.springframework.integration.dsl.IntegrationFlow; @@ -18,44 +14,49 @@ import org.springframework.integration.dsl.IntegrationFlow; public class RouterExample { @MessagingGateway public interface NumbersClassifier { - @Gateway(requestChannel = "flow.input") - void flow(Collection numbers); + @Gateway(requestChannel = "classify.input") + void classify(Collection numbers); } @Bean - DirectChannel multipleof3Channel() { - return new DirectChannel(); + QueueChannel multipleofThreeChannel() { + return new QueueChannel(); } @Bean - DirectChannel remainderIs1Channel() { - return new DirectChannel(); + QueueChannel remainderIsOneChannel() { + return new QueueChannel(); } @Bean - DirectChannel remainderIs2Channel() { - return new DirectChannel(); + QueueChannel remainderIsTwoChannel() { + return new QueueChannel(); + } + + boolean isMultipleOfThree(Integer number) { + return number % 3 == 0; + } + + boolean isRemainderOne(Integer number) { + return number % 3 == 1; + } + + boolean isRemainderTwo(Integer number) { + return number % 3 == 2; } @Bean - public IntegrationFlow flow() { - return f -> f.split() - . route(p -> p % 3, m -> m.channelMapping(0, "multipleof3Channel") - .subFlowMapping(1, sf -> sf.channel("remainderIs1Channel")) - .subFlowMapping(2, sf -> sf. handle((p, h) -> p))) - .channel("remainderIs2Channel"); + public IntegrationFlow classify() { + return flow -> flow.split() + . route(number -> number % 3, + mapping -> mapping + .channelMapping(0, "multipleofThreeChannel") + .subFlowMapping(1, subflow -> subflow.channel("remainderIsOneChannel")) + .subFlowMapping(2, subflow -> subflow + . handle((payload, headers) -> { + // do extra work on the payload + return payload; + }))).channel("remainderIsTwoChannel"); } - public static void main(String[] args) { - final ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(RouterExample.class); - DirectChannel multipleof3Channel = ctx.getBean("multipleof3Channel", DirectChannel.class); - multipleof3Channel.subscribe(x -> System.out.println("multipleof3Channel: " + x)); - DirectChannel remainderIs1Channel = ctx.getBean("remainderIs1Channel", DirectChannel.class); - remainderIs1Channel.subscribe(x -> System.out.println("remainderIs1Channel: " + x)); - DirectChannel remainderIs2Channel = ctx.getBean("remainderIs2Channel", DirectChannel.class); - remainderIs2Channel.subscribe(x -> System.out.println("remainderIs2Channel: " + x)); - ctx.getBean(NumbersClassifier.class) - .flow(Arrays.asList(1, 2, 3, 4, 5, 6)); - ctx.close(); - } } \ No newline at end of file diff --git a/spring-integration/src/test/java/com/baeldung/subflows/discardflow/FilterUnitTest.java b/spring-integration/src/test/java/com/baeldung/subflows/discardflow/FilterUnitTest.java new file mode 100644 index 0000000000..3b3106212b --- /dev/null +++ b/spring-integration/src/test/java/com/baeldung/subflows/discardflow/FilterUnitTest.java @@ -0,0 +1,62 @@ +package com.baeldung.subflows.discardflow; + +import static org.junit.Assert.assertEquals; + +import java.util.Arrays; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.integration.channel.QueueChannel; +import org.springframework.messaging.Message; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.subflows.discardflow.FilterExample.NumbersClassifier; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { FilterExample.class }) +public class FilterUnitTest { + @Autowired + private QueueChannel multipleofThreeChannel; + + @Autowired + private QueueChannel remainderIsOneChannel; + + @Autowired + private QueueChannel remainderIsTwoChannel; + + @Autowired + private NumbersClassifier numbersClassifier; + + @Test + public void whenSendMessagesToFlow_thenNumbersAreClassified() { + + numbersClassifier.classify(Arrays.asList(1, 2, 3, 4, 5, 6)); + + Message outMessage = multipleofThreeChannel.receive(0); + + assertEquals(outMessage.getPayload(), 3); + + outMessage = multipleofThreeChannel.receive(0); + + assertEquals(outMessage.getPayload(), 6); + + outMessage = remainderIsOneChannel.receive(0); + + assertEquals(outMessage.getPayload(), 1); + outMessage = remainderIsOneChannel.receive(0); + + assertEquals(outMessage.getPayload(), 4); + + outMessage = remainderIsTwoChannel.receive(0); + + assertEquals(outMessage.getPayload(), 2); + + outMessage = remainderIsTwoChannel.receive(0); + + assertEquals(outMessage.getPayload(), 5); + + } + +} diff --git a/spring-integration/src/test/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscribeChannelUnitTest.java b/spring-integration/src/test/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscribeChannelUnitTest.java new file mode 100644 index 0000000000..91bf38c626 --- /dev/null +++ b/spring-integration/src/test/java/com/baeldung/subflows/publishsubscribechannel/PublishSubscribeChannelUnitTest.java @@ -0,0 +1,62 @@ +package com.baeldung.subflows.publishsubscribechannel; + +import static org.junit.Assert.assertEquals; + +import java.util.Arrays; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.integration.channel.QueueChannel; +import org.springframework.messaging.Message; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.subflows.publishsubscribechannel.PublishSubscibeChannelExample.NumbersClassifier; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PublishSubscibeChannelExample.class }) +public class PublishSubscribeChannelUnitTest { + @Autowired + private QueueChannel multipleofThreeChannel; + + @Autowired + private QueueChannel remainderIsOneChannel; + + @Autowired + private QueueChannel remainderIsTwoChannel; + + @Autowired + private NumbersClassifier numbersClassifier; + + @Test + public void whenSendMessagesToFlow_thenNumbersAreClassified() { + + numbersClassifier.classify(Arrays.asList(1, 2, 3, 4, 5, 6)); + + Message outMessage = multipleofThreeChannel.receive(0); + + assertEquals(outMessage.getPayload(), 3); + + outMessage = multipleofThreeChannel.receive(0); + + assertEquals(outMessage.getPayload(), 6); + + outMessage = remainderIsOneChannel.receive(0); + + assertEquals(outMessage.getPayload(), 1); + outMessage = remainderIsOneChannel.receive(0); + + assertEquals(outMessage.getPayload(), 4); + + outMessage = remainderIsTwoChannel.receive(0); + + assertEquals(outMessage.getPayload(), 2); + + outMessage = remainderIsTwoChannel.receive(0); + + assertEquals(outMessage.getPayload(), 5); + + } + +} diff --git a/spring-integration/src/test/java/com/baeldung/subflows/routetorecipients/RouteToRecipientsUnitTest.java b/spring-integration/src/test/java/com/baeldung/subflows/routetorecipients/RouteToRecipientsUnitTest.java new file mode 100644 index 0000000000..d7a768dcd9 --- /dev/null +++ b/spring-integration/src/test/java/com/baeldung/subflows/routetorecipients/RouteToRecipientsUnitTest.java @@ -0,0 +1,63 @@ +package com.baeldung.subflows.routetorecipients; + +import static org.junit.Assert.assertEquals; + +import java.util.Arrays; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.integration.channel.QueueChannel; +import org.springframework.messaging.Message; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.subflows.routetorecipients.RouteToRecipientsExample; +import com.baeldung.subflows.routetorecipients.RouteToRecipientsExample.NumbersClassifier; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { RouteToRecipientsExample.class }) +public class RouteToRecipientsUnitTest { + @Autowired + private QueueChannel multipleofThreeChannel; + + @Autowired + private QueueChannel remainderIsOneChannel; + + @Autowired + private QueueChannel remainderIsTwoChannel; + + @Autowired + private NumbersClassifier numbersClassifier; + + @Test + public void whenSendMessagesToFlow_thenNumbersAreClassified() { + + numbersClassifier.classify(Arrays.asList(1, 2, 3, 4, 5, 6)); + + Message outMessage = multipleofThreeChannel.receive(0); + + assertEquals(outMessage.getPayload(), 3); + + outMessage = multipleofThreeChannel.receive(0); + + assertEquals(outMessage.getPayload(), 6); + + outMessage = remainderIsOneChannel.receive(0); + + assertEquals(outMessage.getPayload(), 1); + outMessage = remainderIsOneChannel.receive(0); + + assertEquals(outMessage.getPayload(), 4); + + outMessage = remainderIsTwoChannel.receive(0); + + assertEquals(outMessage.getPayload(), 2); + + outMessage = remainderIsTwoChannel.receive(0); + + assertEquals(outMessage.getPayload(), 5); + + } + +} diff --git a/spring-integration/src/test/java/com/baeldung/subflows/separateflows/SeparateFlowsUnitTest.java b/spring-integration/src/test/java/com/baeldung/subflows/separateflows/SeparateFlowsUnitTest.java new file mode 100644 index 0000000000..c02badcb1a --- /dev/null +++ b/spring-integration/src/test/java/com/baeldung/subflows/separateflows/SeparateFlowsUnitTest.java @@ -0,0 +1,75 @@ +package com.baeldung.subflows.separateflows; + +import java.util.Arrays; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.integration.channel.QueueChannel; +import org.springframework.messaging.Message; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import com.baeldung.subflows.separateflows.SeparateFlowsExample.NumbersClassifier; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { SeparateFlowsExample.class }) +public class SeparateFlowsUnitTest { + @Autowired + private QueueChannel multipleOfThreeChannel; + @Autowired + private QueueChannel remainderIsOneChannel; + @Autowired + private QueueChannel remainderIsTwoChannel; + + @Autowired + private NumbersClassifier numbersClassifier; + + @Test + public void whenSendMessagesToMultipleOf3Flow_thenOutputMultiplesOf3() { + + numbersClassifier.multipleofThree(Arrays.asList(1, 2, 3, 4, 5, 6)); + + Message outMessage = multipleOfThreeChannel.receive(0); + + assertEquals(outMessage.getPayload(), 3); + + outMessage = multipleOfThreeChannel.receive(0); + + assertEquals(outMessage.getPayload(), 6); + outMessage = multipleOfThreeChannel.receive(0); + assertNull(outMessage); + } + + @Test + public void whenSendMessagesToRemainderIs1Flow_thenOutputRemainderIs1() { + + numbersClassifier.remainderIsOne(Arrays.asList(1, 2, 3, 4, 5, 6)); + + Message outMessage = remainderIsOneChannel.receive(0); + + assertEquals(outMessage.getPayload(), 1); + + outMessage = remainderIsOneChannel.receive(0); + + assertEquals(outMessage.getPayload(), 4); + + } + + @Test + public void whenSendMessagesToRemainderIs2Flow_thenOutputRemainderIs2() { + + numbersClassifier.remainderIsTwo(Arrays.asList(1, 2, 3, 4, 5, 6)); + + Message outMessage = remainderIsTwoChannel.receive(0); + + assertEquals(outMessage.getPayload(), 2); + + outMessage = remainderIsTwoChannel.receive(0); + + assertEquals(outMessage.getPayload(), 5); + + } + +} diff --git a/spring-integration/src/test/java/com/baeldung/subflows/subflowmapping/RouterUnitTest.java b/spring-integration/src/test/java/com/baeldung/subflows/subflowmapping/RouterUnitTest.java new file mode 100644 index 0000000000..9ecbb22a9b --- /dev/null +++ b/spring-integration/src/test/java/com/baeldung/subflows/subflowmapping/RouterUnitTest.java @@ -0,0 +1,62 @@ +package com.baeldung.subflows.subflowmapping; + +import static org.junit.Assert.assertEquals; + +import java.util.Arrays; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.integration.channel.QueueChannel; +import org.springframework.messaging.Message; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.subflows.subflowmapping.RouterExample.NumbersClassifier; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { RouterExample.class }) +public class RouterUnitTest { + @Autowired + private QueueChannel multipleofThreeChannel; + + @Autowired + private QueueChannel remainderIsOneChannel; + + @Autowired + private QueueChannel remainderIsTwoChannel; + + @Autowired + private NumbersClassifier numbersClassifier; + + @Test + public void whenSendMessagesToFlow_thenNumbersAreClassified() { + + numbersClassifier.classify(Arrays.asList(1, 2, 3, 4, 5, 6)); + + Message outMessage = multipleofThreeChannel.receive(0); + + assertEquals(outMessage.getPayload(), 3); + + outMessage = multipleofThreeChannel.receive(0); + + assertEquals(outMessage.getPayload(), 6); + + outMessage = remainderIsOneChannel.receive(0); + + assertEquals(outMessage.getPayload(), 1); + outMessage = remainderIsOneChannel.receive(0); + + assertEquals(outMessage.getPayload(), 4); + + outMessage = remainderIsTwoChannel.receive(0); + + assertEquals(outMessage.getPayload(), 2); + + outMessage = remainderIsTwoChannel.receive(0); + + assertEquals(outMessage.getPayload(), 5); + + } + +} From 4d30ff3b438cd19d240a6b38225c74727c5a964a Mon Sep 17 00:00:00 2001 From: getwordsdone <44430887+getwordsdone@users.noreply.github.com> Date: Tue, 20 Nov 2018 10:31:31 +0530 Subject: [PATCH 119/119] A Guide to Constructors Issue: BAEL-2345 --- .../baeldung/constructors/BankAccount.java | 56 +++++++++++++++++++ .../baeldung/constructors/Transaction.java | 25 +++++++++ .../constructors/ConstructorUnitTest.java | 53 ++++++++++++++++++ 3 files changed, 134 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/constructors/BankAccount.java create mode 100644 core-java/src/main/java/com/baeldung/constructors/Transaction.java create mode 100644 core-java/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java diff --git a/core-java/src/main/java/com/baeldung/constructors/BankAccount.java b/core-java/src/main/java/com/baeldung/constructors/BankAccount.java new file mode 100644 index 0000000000..3d50e85245 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/constructors/BankAccount.java @@ -0,0 +1,56 @@ +package com.baeldung.constructors; + +import java.time.LocalDateTime; + +class BankAccount { + String name; + LocalDateTime opened; + double balance; + + @Override + public String toString() { + return String.format("%s, %s, %f", this.name, this.opened.toString(), this.balance); + } + + public String getName() { + return name; + } + + public LocalDateTime getOpened() { + return opened; + } + + public double getBalance() { + return this.balance; + } +} + +class BankAccountEmptyConstructor extends BankAccount { + public BankAccountEmptyConstructor() { + this.name = ""; + this.opened = LocalDateTime.now(); + this.balance = 0.0d; + } +} + +class BankAccountParameterizedConstructor extends BankAccount { + public BankAccountParameterizedConstructor(String name, LocalDateTime opened, double balance) { + this.name = name; + this.opened = opened; + this.balance = balance; + } +} + +class BankAccountCopyConstructor extends BankAccount { + public BankAccountCopyConstructor(String name, LocalDateTime opened, double balance) { + this.name = name; + this.opened = opened; + this.balance = balance; + } + + public BankAccountCopyConstructor(BankAccount other) { + this.name = other.name; + this.opened = LocalDateTime.now(); + this.balance = 0.0f; + } +} diff --git a/core-java/src/main/java/com/baeldung/constructors/Transaction.java b/core-java/src/main/java/com/baeldung/constructors/Transaction.java new file mode 100644 index 0000000000..14704f507a --- /dev/null +++ b/core-java/src/main/java/com/baeldung/constructors/Transaction.java @@ -0,0 +1,25 @@ +package com.baeldung.constructors; + +import java.time.LocalDateTime; + +class Transaction { + final BankAccountEmptyConstructor bankAccount; + final LocalDateTime date; + final double amount; + + public Transaction(BankAccountEmptyConstructor account, LocalDateTime date, double amount) { + this.bankAccount = account; + this.date = date; + this.amount = amount; + } + + /* + * Compilation Error :'(, all final variables must be explicitly initialised. + * public Transaction() { + * } + */ + + public void invalidMethod() { + // this.amount = 102.03; // Results in a compiler error. You cannot change the value of a final variable. + } +} diff --git a/core-java/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java b/core-java/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java new file mode 100644 index 0000000000..2cd8832fbf --- /dev/null +++ b/core-java/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java @@ -0,0 +1,53 @@ +package com.baeldung.constructors; + +import com.baeldung.constructors.*; + +import java.util.logging.Logger; +import java.time.LocalDateTime; +import java.time.Month; + +import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +public class ConstructorUnitTest { + final static Logger LOGGER = Logger.getLogger(ConstructorUnitTest.class.getName()); + + @Test + public void givenNoExplicitContructor_whenUsed_thenFails() { + BankAccount account = new BankAccount(); + assertThatThrownBy(() -> { account.toString(); }).isInstanceOf(Exception.class); + } + + @Test + public void givenNoArgumentConstructor_whenUsed_thenSucceeds() { + BankAccountEmptyConstructor account = new BankAccountEmptyConstructor(); + assertThatCode(() -> { + account.toString(); + }).doesNotThrowAnyException(); + } + + @Test + public void givenParameterisedConstructor_whenUsed_thenSucceeds() { + LocalDateTime opened = LocalDateTime.of(2018, Month.JUNE, 29, 06, 30, 00); + BankAccountParameterizedConstructor account = + new BankAccountParameterizedConstructor("Tom", opened, 1000.0f); + + assertThatCode(() -> { + account.toString(); + }).doesNotThrowAnyException(); + } + + @Test + public void givenCopyContructor_whenUser_thenMaintainsLogic() { + LocalDateTime opened = LocalDateTime.of(2018, Month.JUNE, 29, 06, 30, 00); + BankAccountCopyConstructor account = new BankAccountCopyConstructor("Tim", opened, 1000.0f); + BankAccountCopyConstructor newAccount = new BankAccountCopyConstructor(account); + + assertThat(account.getName()).isEqualTo(newAccount.getName()); + assertThat(account.getOpened()).isNotEqualTo(newAccount.getOpened()); + + assertThat(newAccount.getBalance()).isEqualTo(0.0f); + } +}