From c272dba6658c319eb784f08684c145f81db045bb Mon Sep 17 00:00:00 2001 From: Rafael Lopez Date: Sun, 7 Nov 2021 13:04:54 -0500 Subject: [PATCH 1/3] JAVA-2592: Add DROP TABLE IF EXIST clause to avoid SQL exception --- .../spring-boot-persistence/src/test/resources/dsrouting-db.sql | 2 ++ 1 file changed, 2 insertions(+) diff --git a/persistence-modules/spring-boot-persistence/src/test/resources/dsrouting-db.sql b/persistence-modules/spring-boot-persistence/src/test/resources/dsrouting-db.sql index c9ca52907a..7449b23307 100644 --- a/persistence-modules/spring-boot-persistence/src/test/resources/dsrouting-db.sql +++ b/persistence-modules/spring-boot-persistence/src/test/resources/dsrouting-db.sql @@ -1,3 +1,5 @@ +drop table if exists client; + create table client ( id numeric, name varchar(50), From 82572378b20ab4f3fb09bd13ef15e61562a0968d Mon Sep 17 00:00:00 2001 From: Haroon Khan Date: Mon, 8 Nov 2021 09:01:53 +0000 Subject: [PATCH 2/3] [BAEL-5110] Actuator endpoint for startup tracking (#11351) --- .../baeldung/startup/ResourceInitializer.java | 17 +++++++++ .../startup/StartupTrackingApplication.java | 38 +++++++++++++++++++ .../resources/application-startup.properties | 6 +++ 3 files changed, 61 insertions(+) create mode 100644 spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/startup/ResourceInitializer.java create mode 100644 spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/startup/StartupTrackingApplication.java create mode 100644 spring-boot-modules/spring-boot-actuator/src/main/resources/application-startup.properties diff --git a/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/startup/ResourceInitializer.java b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/startup/ResourceInitializer.java new file mode 100644 index 0000000000..e50816821c --- /dev/null +++ b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/startup/ResourceInitializer.java @@ -0,0 +1,17 @@ +package com.baeldung.startup; + +import org.springframework.stereotype.Component; + +import java.util.concurrent.ThreadLocalRandom; +import java.util.concurrent.TimeUnit; + +@Component +public class ResourceInitializer { + + ResourceInitializer() throws Exception { + // simulate resource init with random delay of a few seconds + int randomDelay = ThreadLocalRandom.current().nextInt(5, 9); + TimeUnit.SECONDS.sleep(randomDelay); + } + +} diff --git a/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/startup/StartupTrackingApplication.java b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/startup/StartupTrackingApplication.java new file mode 100644 index 0000000000..a3762cb98e --- /dev/null +++ b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/startup/StartupTrackingApplication.java @@ -0,0 +1,38 @@ +package com.baeldung.startup; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; +import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup; + +import static java.lang.Boolean.FALSE; + +@SpringBootApplication(exclude = { + SecurityAutoConfiguration.class, + ManagementWebSecurityAutoConfiguration.class} +) +public class StartupTrackingApplication { + + public static void main(String[] args) { + // only load properties for this application + System.setProperty("spring.config.location", "classpath:application-startup.properties"); + + SpringApplication app = new SpringApplication(StartupTrackingApplication.class); + BufferingApplicationStartup startup = new BufferingApplicationStartup(2048); + + if (shouldFilterSteps()) { + startup.addFilter(startupStep -> startupStep.getName().matches("spring.beans.instantiate")); + } + + app.setApplicationStartup(startup); + app.run(args); + } + + private static boolean shouldFilterSteps() { + return Boolean.parseBoolean( + System.getProperty("startup.steps.filter", FALSE.toString()) + ); + } + +} diff --git a/spring-boot-modules/spring-boot-actuator/src/main/resources/application-startup.properties b/spring-boot-modules/spring-boot-actuator/src/main/resources/application-startup.properties new file mode 100644 index 0000000000..4cb5f2a94d --- /dev/null +++ b/spring-boot-modules/spring-boot-actuator/src/main/resources/application-startup.properties @@ -0,0 +1,6 @@ +management.endpoints.web.exposure.include=startup + +# JPA is not required for startup actuator endpoint +spring.autoconfigure.exclude= org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, \ + org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration, \ + org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration From 3ab032d0951c0cb11c73a96929ba2a9f23e85195 Mon Sep 17 00:00:00 2001 From: vaibhav007jain <72961247+vaibhav007jain@users.noreply.github.com> Date: Mon, 8 Nov 2021 18:05:17 +0530 Subject: [PATCH 3/3] BAEL-5151 (#11385) * commited initial code for hexagonal architecture * Deleting to check in again * Deleing to check in again * Push first code for Hexagonal Architecture * final code with UT for JSON to Java conversion * removed hexagonal-architecture code from last commit * BEL-5071 updated README * BAEL-5071: Undo README changes and added a nested object in the JSON example. * BAEL-5071: fixed whitespace/indentation in JsonToJavaClassConversion.java * BAEL-5151: Added code for getting the first of a String * BAEL-5151: Renamed Unit Test * BAEL-5151: Moved the files from core-java-string-operations to core-java-string-operations-3 * BAEL-5151: Replaced tabs with white spaces. Co-authored-by: Vaibhav Jain --- .../baeldung/firstword/FirstWordGetter.java | 20 +++++++++++++ .../firstword/FirstWordGetterUnitTest.java | 30 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 core-java-modules/core-java-string-operations-3/src/main/java/com/baeldung/firstword/FirstWordGetter.java create mode 100644 core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/firstword/FirstWordGetterUnitTest.java diff --git a/core-java-modules/core-java-string-operations-3/src/main/java/com/baeldung/firstword/FirstWordGetter.java b/core-java-modules/core-java-string-operations-3/src/main/java/com/baeldung/firstword/FirstWordGetter.java new file mode 100644 index 0000000000..03c134752a --- /dev/null +++ b/core-java-modules/core-java-string-operations-3/src/main/java/com/baeldung/firstword/FirstWordGetter.java @@ -0,0 +1,20 @@ +package com.baeldung.firstword; + +public class FirstWordGetter { + + public static void main(String[] args) { + String input = "Roberto \"I wish you a bug-free day\""; + System.out.println("Using split: " + getFirstWordUsingSplit(input)); + System.out.println("Using subString: " + getFirstWordUsingSubString(input)); + } + + public static String getFirstWordUsingSubString(String input) { + int index = input.contains(" ") ? input.indexOf(" ") : 0; + return input.substring(0, index); + } + + public static String getFirstWordUsingSplit(String input) { + String[] tokens = input.split(" ", 2); + return tokens[0]; + } +} diff --git a/core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/firstword/FirstWordGetterUnitTest.java b/core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/firstword/FirstWordGetterUnitTest.java new file mode 100644 index 0000000000..bdaa25180e --- /dev/null +++ b/core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/firstword/FirstWordGetterUnitTest.java @@ -0,0 +1,30 @@ +package com.baeldung.firstword; + +import static com.baeldung.firstword.FirstWordGetter.getFirstWordUsingSplit; +import static com.baeldung.firstword.FirstWordGetter.getFirstWordUsingSubString; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +public class FirstWordGetterUnitTest { + + @Test + public void givenString_whenSplit_thenFirstWordIsReturned() { + assertEquals("Roberto", getFirstWordUsingSplit("Roberto \"I wish you a bug-free day\"")); + } + + @Test + public void givenStringWithNoSpace_whenSplit_thenFirstWordIsReturned() { + assertEquals("StringWithNoSpace", getFirstWordUsingSplit("StringWithNoSpace")); + } + + @Test + public void givenString_whenPassedToSubstring_thenFirstWordIsReturned() { + assertEquals("Roberto", getFirstWordUsingSubString("Roberto \"I wish you a bug-free day\"")); + } + + @Test + public void givenStringWithNoSpace_whenPassedToSubstring_thenFirstWordIsReturned() { + assertEquals("", getFirstWordUsingSubString("StringWithNoSpace")); + } +}