diff --git a/core-scala/README.md b/core-scala/README.md index e6fc75d59e..13929ff721 100644 --- a/core-scala/README.md +++ b/core-scala/README.md @@ -5,3 +5,4 @@ This module contains articles about Scala's core features ### Relevant Articles: - [Introduction to Scala](https://www.baeldung.com/scala-intro) +- [Regular Expressions in Scala](https://www.baeldung.com/scala/regular-expressions) diff --git a/core-scala/src/test/scala/com/baeldung/scala/RegexUnitTest.scala b/core-scala/src/test/scala/com/baeldung/scala/regex/RegexUnitTest.scala similarity index 98% rename from core-scala/src/test/scala/com/baeldung/scala/RegexUnitTest.scala rename to core-scala/src/test/scala/com/baeldung/scala/regex/RegexUnitTest.scala index 94263d620a..27ed9e1172 100644 --- a/core-scala/src/test/scala/com/baeldung/scala/RegexUnitTest.scala +++ b/core-scala/src/test/scala/com/baeldung/scala/regex/RegexUnitTest.scala @@ -1,4 +1,4 @@ -package com.baeldung.scala +package com.baeldung.scala.regex import org.junit.Test import org.junit.Assert.assertEquals diff --git a/spring-boot-modules/spring-boot-parent/spring-boot-with-custom-parent/pom.xml b/spring-boot-modules/spring-boot-parent/spring-boot-with-custom-parent/pom.xml index 1eb4255c7e..d08384e34c 100644 --- a/spring-boot-modules/spring-boot-parent/spring-boot-with-custom-parent/pom.xml +++ b/spring-boot-modules/spring-boot-parent/spring-boot-with-custom-parent/pom.xml @@ -11,7 +11,7 @@ com.baeldung parent-boot-2 0.0.1-SNAPSHOT - ../../parent-boot-2 + ../../../parent-boot-2 diff --git a/spring-boot-modules/spring-boot-parent/spring-boot-with-starter-parent/pom.xml b/spring-boot-modules/spring-boot-parent/spring-boot-with-starter-parent/pom.xml index 05c61fc4cc..baba410b39 100644 --- a/spring-boot-modules/spring-boot-parent/spring-boot-with-starter-parent/pom.xml +++ b/spring-boot-modules/spring-boot-parent/spring-boot-with-starter-parent/pom.xml @@ -12,7 +12,7 @@ com.baeldung parent-boot-2 0.0.1-SNAPSHOT - ../../parent-boot-2 + ../../../parent-boot-2 diff --git a/spring-boot-modules/spring-boot/README.MD b/spring-boot-modules/spring-boot/README.MD index 217d9e90b2..d010b96860 100644 --- a/spring-boot-modules/spring-boot/README.MD +++ b/spring-boot-modules/spring-boot/README.MD @@ -31,3 +31,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Spring Shutdown Callbacks](https://www.baeldung.com/spring-shutdown-callbacks) - [Container Configuration in Spring Boot 2](https://www.baeldung.com/embeddedservletcontainercustomizer-configurableembeddedservletcontainer-spring-boot) - [Validation in Spring Boot](https://www.baeldung.com/spring-boot-bean-validation) +- [The BeanDefinitionOverrideException in Spring Boot](https://www.baeldung.com/spring-boot-bean-definition-override-exception) diff --git a/spring-boot/src/test/java/com/baeldung/beandefinitionoverrideexception/SpringBootBeanDefinitionOverrideExceptionIntegrationTest.java b/spring-boot-modules/spring-boot/src/test/java/com/baeldung/beandefinitionoverrideexception/SpringBootBeanDefinitionOverrideExceptionIntegrationTest.java similarity index 100% rename from spring-boot/src/test/java/com/baeldung/beandefinitionoverrideexception/SpringBootBeanDefinitionOverrideExceptionIntegrationTest.java rename to spring-boot-modules/spring-boot/src/test/java/com/baeldung/beandefinitionoverrideexception/SpringBootBeanDefinitionOverrideExceptionIntegrationTest.java diff --git a/spring-boot/src/test/java/com/baeldung/beandefinitionoverrideexception/TestConfiguration1.java b/spring-boot-modules/spring-boot/src/test/java/com/baeldung/beandefinitionoverrideexception/TestConfiguration1.java similarity index 100% rename from spring-boot/src/test/java/com/baeldung/beandefinitionoverrideexception/TestConfiguration1.java rename to spring-boot-modules/spring-boot/src/test/java/com/baeldung/beandefinitionoverrideexception/TestConfiguration1.java diff --git a/spring-boot/src/test/java/com/baeldung/beandefinitionoverrideexception/TestConfiguration2.java b/spring-boot-modules/spring-boot/src/test/java/com/baeldung/beandefinitionoverrideexception/TestConfiguration2.java similarity index 100% rename from spring-boot/src/test/java/com/baeldung/beandefinitionoverrideexception/TestConfiguration2.java rename to spring-boot-modules/spring-boot/src/test/java/com/baeldung/beandefinitionoverrideexception/TestConfiguration2.java diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml index 23ad11b03f..c4e606e190 100644 --- a/spring-cloud/pom.xml +++ b/spring-cloud/pom.xml @@ -35,7 +35,7 @@ spring-cloud-archaius spring-cloud-functions spring-cloud-vault - + spring-cloud-security spring-cloud-task spring-cloud-zuul spring-cloud-zuul-fallback diff --git a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/singleton/CounterEJB.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/singleton/CounterEJB.java index b64005aed8..8582d79662 100644 --- a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/singleton/CounterEJB.java +++ b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/singleton/CounterEJB.java @@ -6,9 +6,18 @@ import javax.ejb.Singleton; public class CounterEJB implements CounterEJBRemote { private int count = 1; + private String name; public int count() { return count++; } + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + } \ No newline at end of file diff --git a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/singleton/CounterEJBRemote.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/singleton/CounterEJBRemote.java index ec3b9e9f6b..a66cda4f3e 100644 --- a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/singleton/CounterEJBRemote.java +++ b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/singleton/CounterEJBRemote.java @@ -5,4 +5,6 @@ import javax.ejb.Remote; @Remote public interface CounterEJBRemote { int count(); + String getName(); + void setName(String name); } diff --git a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateful/ShoppingCartEJB.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateful/ShoppingCartEJB.java index 5bdccea994..501af4059f 100644 --- a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateful/ShoppingCartEJB.java +++ b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateful/ShoppingCartEJB.java @@ -7,7 +7,7 @@ import javax.ejb.Stateful; @Stateful public class ShoppingCartEJB implements ShoppingCartEJBRemote { - + private String name; private List shoppingCart; public ShoppingCartEJB() { @@ -22,4 +22,11 @@ public class ShoppingCartEJB implements ShoppingCartEJBRemote { return shoppingCart; } + public void setName(String name) { + this.name = name; + } + + public String getName() { + return name; + } } diff --git a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateful/ShoppingCartEJBRemote.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateful/ShoppingCartEJBRemote.java index a8d7a15d25..4e1e407520 100644 --- a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateful/ShoppingCartEJBRemote.java +++ b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateful/ShoppingCartEJBRemote.java @@ -10,4 +10,8 @@ public interface ShoppingCartEJBRemote { void addItem(String item); List getItems(); + + void setName(String name); + + String getName(); } diff --git a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/singleton/CounterBean.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/singleton/CounterBean.java index 6456cfc007..c28e7bf74c 100644 --- a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/singleton/CounterBean.java +++ b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/singleton/CounterBean.java @@ -5,8 +5,18 @@ import org.springframework.stereotype.Component; @Component public class CounterBean { private int count = 1; + private String name; public int count() { return count++; } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + } diff --git a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/stateful/ShoppingCartBean.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/stateful/ShoppingCartBean.java index 9286ff9950..4d372baa84 100644 --- a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/stateful/ShoppingCartBean.java +++ b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/stateful/ShoppingCartBean.java @@ -11,6 +11,7 @@ import org.springframework.stereotype.Component; @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class ShoppingCartBean { + private String name; private List shoppingCart; public ShoppingCartBean() { @@ -25,4 +26,11 @@ public class ShoppingCartBean { return shoppingCart; } + public void setName(String name) { + this.name = name; + } + + public String getName() { + return name; + } } diff --git a/spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/spring/comparison/ejb/EJBUnitTest.java b/spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/spring/comparison/ejb/EJBUnitTest.java index 1f0f1bf8a4..3e9e5e7933 100644 --- a/spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/spring/comparison/ejb/EJBUnitTest.java +++ b/spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/spring/comparison/ejb/EJBUnitTest.java @@ -1,9 +1,7 @@ package com.baeldung.ejb.spring.comparison.ejb; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.junit.Assert.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import javax.annotation.Resource; import javax.ejb.EJB; @@ -51,7 +49,7 @@ public class EJBUnitTest { public static void start() throws NamingException { ejbContainer = EJBContainer.createEJBContainer(); } - + @Before public void initializeContext() throws NamingException { context = ejbContainer.getContext(); @@ -60,42 +58,44 @@ public class EJBUnitTest { @Test public void givenSingletonBean_whenCounterInvoked_thenCountIsIncremented() throws NamingException { - + int count = 0; - CounterEJBRemote counterEJB = (CounterEJBRemote) context.lookup("java:global/ejb-beans/CounterEJB"); + CounterEJBRemote firstCounter = (CounterEJBRemote) context.lookup("java:global/ejb-beans/CounterEJB"); + firstCounter.setName("first"); - for (int i = 0; i < 10; i++) - count = counterEJB.count(); - - assertThat(count, is(not(1))); - } - - @Test - public void givenSingletonBean_whenCounterInvokedAgain_thenCountIsIncremented() throws NamingException { - - CounterEJBRemote counterEJB = (CounterEJBRemote) context.lookup("java:global/ejb-beans/CounterEJB"); + for (int i = 0; i < 10; i++) { + count = firstCounter.count(); + } - int count = 0; - for (int i = 0; i < 10; i++) - count = counterEJB.count(); + assertEquals(10, count); + assertEquals("first", firstCounter.getName()); + + CounterEJBRemote secondCounter = (CounterEJBRemote) context.lookup("java:global/ejb-beans/CounterEJB"); + + int count2 = 0; + for (int i = 0; i < 10; i++) { + count2 = secondCounter.count(); + } + + assertEquals(20, count2); + assertEquals("first", secondCounter.getName()); - assertThat(count, is(not(1))); } @Test public void givenStatefulBean_whenBathingCartWithThreeItemsAdded_thenItemsSizeIsThree() throws NamingException { ShoppingCartEJBRemote bathingCart = (ShoppingCartEJBRemote) context.lookup("java:global/ejb-beans/ShoppingCartEJB"); + bathingCart.setName("bathingCart"); + bathingCart.addItem("soap"); bathingCart.addItem("shampoo"); bathingCart.addItem("oil"); assertEquals(3, bathingCart.getItems() .size()); - } + assertEquals("bathingCart", bathingCart.getName()); - @Test - public void givenStatefulBean_whenFruitCartWithTwoItemsAdded_thenItemsSizeIsTwo() throws NamingException { ShoppingCartEJBRemote fruitCart = (ShoppingCartEJBRemote) context.lookup("java:global/ejb-beans/ShoppingCartEJB"); fruitCart.addItem("apples"); @@ -103,6 +103,7 @@ public class EJBUnitTest { assertEquals(2, fruitCart.getItems() .size()); + assertNull(fruitCart.getName()); } @Test @@ -131,10 +132,7 @@ public class EJBUnitTest { } @AfterClass - public static void checkTotalCountAndcloseContext() throws NamingException { - CounterEJBRemote counterEJB = (CounterEJBRemote) context.lookup("java:global/ejb-beans/CounterEJB"); - assertEquals(21, counterEJB.count()); - + public static void closeContext() throws NamingException { context.close(); ejbContainer.close(); } diff --git a/spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/spring/comparison/spring/SpringUnitTest.java b/spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/spring/comparison/spring/SpringUnitTest.java index a346baba38..7a9ddc15a4 100644 --- a/spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/spring/comparison/spring/SpringUnitTest.java +++ b/spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/spring/comparison/spring/SpringUnitTest.java @@ -1,9 +1,7 @@ package com.baeldung.ejb.spring.comparison.spring; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.junit.Assert.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import javax.naming.NamingException; @@ -46,40 +44,44 @@ public class SpringUnitTest { @Test public void whenCounterInvoked_thenCountIsIncremented() throws NamingException { - CounterBean counterBean = context.getBean(CounterBean.class); + CounterBean firstCounter = context.getBean(CounterBean.class); + firstCounter.setName("first"); int count = 0; - for (int i = 0; i < 10; i++) - count = counterBean.count(); + for (int i = 0; i < 10; i++) { + count = firstCounter.count(); + } - assertThat(count, is(not(1))); - } + assertEquals(10, count); + assertEquals("first", firstCounter.getName()); - @Test - public void whenCounterInvokedAgain_thenCountIsIncremented() throws NamingException { - CounterBean counterBean = context.getBean(CounterBean.class); + CounterBean secondCounter = context.getBean(CounterBean.class); - int count = 0; - for (int i = 0; i < 10; i++) - count = counterBean.count(); + int count2 = 0; + for (int i = 0; i < 10; i++) { + count2 = secondCounter.count(); + } + + assertEquals(20, count2); + assertEquals("first", secondCounter.getName()); - assertThat(count, is(not(1))); } @Test public void whenBathingCartWithThreeItemsAdded_thenItemsSizeIsThree() throws NamingException { ShoppingCartBean bathingCart = context.getBean(ShoppingCartBean.class); + bathingCart.setName("bathingCart"); + bathingCart.addItem("soap"); bathingCart.addItem("shampoo"); bathingCart.addItem("oil"); assertEquals(3, bathingCart.getItems() .size()); - } - @Test - public void whenFruitCartWithTwoItemsAdded_thenItemsSizeIsTwo() throws NamingException { + assertEquals("bathingCart", bathingCart.getName()); + ShoppingCartBean fruitCart = context.getBean(ShoppingCartBean.class); fruitCart.addItem("apples"); @@ -87,6 +89,7 @@ public class SpringUnitTest { assertEquals(2, fruitCart.getItems() .size()); + assertNull(fruitCart.getName()); } @Test @@ -98,10 +101,7 @@ public class SpringUnitTest { } @AfterClass - public static void checkTotalCountAndcloseContext() throws NamingException { - CounterBean counterBean = context.getBean(CounterBean.class); - int count = counterBean.count(); - assertEquals(21, count); + public static void closeContext() throws NamingException { context.close(); } diff --git a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaApplication.java b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaApplication.java index b313eafdb9..fde56bebc0 100644 --- a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaApplication.java +++ b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaApplication.java @@ -25,7 +25,7 @@ public class KafkaApplication { public static void main(String[] args) throws Exception { ConfigurableApplicationContext context = SpringApplication.run(KafkaApplication.class, args); - + MessageProducer producer = context.getBean(MessageProducer.class); MessageListener listener = context.getBean(MessageListener.class); /* @@ -101,15 +101,17 @@ public class KafkaApplication { private String greetingTopicName; public void sendMessage(String message) { - + ListenableFuture> future = kafkaTemplate.send(topicName, message); - + future.addCallback(new ListenableFutureCallback>() { @Override public void onSuccess(SendResult result) { - System.out.println("Sent message=[" + message + "] with offset=[" + result.getRecordMetadata().offset() + "]"); + System.out.println("Sent message=[" + message + "] with offset=[" + result.getRecordMetadata() + .offset() + "]"); } + @Override public void onFailure(Throwable ex) { System.out.println("Unable to send message=[" + message + "] due to : " + ex.getMessage()); @@ -158,7 +160,7 @@ public class KafkaApplication { latch.countDown(); } - @KafkaListener(topicPartitions = @TopicPartition(topic = "${partitioned.topic.name}", partitions = { "0", "3" })) + @KafkaListener(topicPartitions = @TopicPartition(topic = "${partitioned.topic.name}", partitions = { "0", "3" }), containerFactory = "partitionsKafkaListenerContainerFactory") public void listenToParition(@Payload String message, @Header(KafkaHeaders.RECEIVED_PARTITION_ID) int partition) { System.out.println("Received Message: " + message + " from partition: " + partition); this.partitionLatch.countDown(); diff --git a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaConsumerConfig.java b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaConsumerConfig.java index 933d2353aa..abaa431eec 100644 --- a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaConsumerConfig.java +++ b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaConsumerConfig.java @@ -29,7 +29,7 @@ public class KafkaConsumerConfig { props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); return new DefaultKafkaConsumerFactory<>(props); } - + public ConcurrentKafkaListenerContainerFactory kafkaListenerContainerFactory(String groupId) { ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory<>(); factory.setConsumerFactory(consumerFactory(groupId)); @@ -50,12 +50,12 @@ public class KafkaConsumerConfig { public ConcurrentKafkaListenerContainerFactory headersKafkaListenerContainerFactory() { return kafkaListenerContainerFactory("headers"); } - + @Bean public ConcurrentKafkaListenerContainerFactory partitionsKafkaListenerContainerFactory() { return kafkaListenerContainerFactory("partitions"); } - + @Bean public ConcurrentKafkaListenerContainerFactory filterKafkaListenerContainerFactory() { ConcurrentKafkaListenerContainerFactory factory = kafkaListenerContainerFactory("filter"); diff --git a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaProducerConfig.java b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaProducerConfig.java index 7e2527b36e..0223bab0fe 100644 --- a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaProducerConfig.java +++ b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaProducerConfig.java @@ -32,7 +32,7 @@ public class KafkaProducerConfig { public KafkaTemplate kafkaTemplate() { return new KafkaTemplate<>(producerFactory()); } - + @Bean public ProducerFactory greetingProducerFactory() { Map configProps = new HashMap<>(); @@ -41,10 +41,10 @@ public class KafkaProducerConfig { configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class); return new DefaultKafkaProducerFactory<>(configProps); } - + @Bean public KafkaTemplate greetingKafkaTemplate() { return new KafkaTemplate<>(greetingProducerFactory()); } - + } diff --git a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaTopicConfig.java b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaTopicConfig.java index a3426e78a3..fb60fadde4 100644 --- a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaTopicConfig.java +++ b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaTopicConfig.java @@ -12,10 +12,10 @@ import org.springframework.kafka.core.KafkaAdmin; @Configuration public class KafkaTopicConfig { - + @Value(value = "${kafka.bootstrapAddress}") private String bootstrapAddress; - + @Value(value = "${message.topic.name}") private String topicName; @@ -27,31 +27,31 @@ public class KafkaTopicConfig { @Value(value = "${greeting.topic.name}") private String greetingTopicName; - + @Bean public KafkaAdmin kafkaAdmin() { Map configs = new HashMap<>(); configs.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress); return new KafkaAdmin(configs); } - + @Bean public NewTopic topic1() { - return new NewTopic(topicName, 1, (short) 1); + return new NewTopic(topicName, 1, (short) 1); } - + @Bean public NewTopic topic2() { - return new NewTopic(partionedTopicName, 6, (short) 1); + return new NewTopic(partionedTopicName, 6, (short) 1); } - + @Bean public NewTopic topic3() { - return new NewTopic(filteredTopicName, 1, (short) 1); + return new NewTopic(filteredTopicName, 1, (short) 1); } - + @Bean public NewTopic topic4() { - return new NewTopic(greetingTopicName, 1, (short) 1); + return new NewTopic(greetingTopicName, 1, (short) 1); } } diff --git a/spring-reactor/src/main/java/com/baeldung/Config.java b/spring-reactor/src/main/java/com/baeldung/reactorbus/Config.java similarity index 76% rename from spring-reactor/src/main/java/com/baeldung/Config.java rename to spring-reactor/src/main/java/com/baeldung/reactorbus/Config.java index 28f40dda02..f849215dc4 100644 --- a/spring-reactor/src/main/java/com/baeldung/Config.java +++ b/spring-reactor/src/main/java/com/baeldung/reactorbus/Config.java @@ -1,8 +1,7 @@ -package com.baeldung; +package com.baeldung.reactorbus; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; - import reactor.Environment; import reactor.bus.EventBus; @@ -10,13 +9,12 @@ import reactor.bus.EventBus; public class Config { @Bean - Environment env() { + public Environment env() { return Environment.initializeIfEmpty().assignErrorJournal(); } @Bean - EventBus createEventBus(Environment env) { + public EventBus createEventBus(Environment env) { return EventBus.create(env, Environment.THREAD_POOL); } - } diff --git a/spring-reactor/src/main/java/com/baeldung/Application.java b/spring-reactor/src/main/java/com/baeldung/reactorbus/NotificationApplication.java similarity index 52% rename from spring-reactor/src/main/java/com/baeldung/Application.java rename to spring-reactor/src/main/java/com/baeldung/reactorbus/NotificationApplication.java index 9030d41d26..b315e6ce25 100644 --- a/spring-reactor/src/main/java/com/baeldung/Application.java +++ b/spring-reactor/src/main/java/com/baeldung/reactorbus/NotificationApplication.java @@ -1,24 +1,16 @@ -package com.baeldung; +package com.baeldung.reactorbus; +import com.baeldung.reactorbus.consumer.NotificationConsumer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; - -import com.baeldung.consumer.NotificationConsumer; - +import org.springframework.boot.autoconfigure.SpringBootApplication; import reactor.bus.EventBus; import static reactor.bus.selector.Selectors.$; -@Configuration -@EnableAutoConfiguration -@ComponentScan -@Import(Config.class) -public class Application implements CommandLineRunner { +@SpringBootApplication +public class NotificationApplication implements CommandLineRunner { @Autowired private EventBus eventBus; @@ -32,7 +24,6 @@ public class Application implements CommandLineRunner { } public static void main(String[] args) { - SpringApplication.run(Application.class, args); + SpringApplication.run(NotificationApplication.class, args); } - } diff --git a/spring-reactor/src/main/java/com/baeldung/consumer/NotificationConsumer.java b/spring-reactor/src/main/java/com/baeldung/reactorbus/consumer/NotificationConsumer.java similarity index 80% rename from spring-reactor/src/main/java/com/baeldung/consumer/NotificationConsumer.java rename to spring-reactor/src/main/java/com/baeldung/reactorbus/consumer/NotificationConsumer.java index ca6a5b4303..d9d2586187 100644 --- a/spring-reactor/src/main/java/com/baeldung/consumer/NotificationConsumer.java +++ b/spring-reactor/src/main/java/com/baeldung/reactorbus/consumer/NotificationConsumer.java @@ -1,10 +1,10 @@ -package com.baeldung.consumer; +package com.baeldung.reactorbus.consumer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.baeldung.doman.NotificationData; -import com.baeldung.service.NotificationService; +import com.baeldung.reactorbus.domain.NotificationData; +import com.baeldung.reactorbus.service.NotificationService; import reactor.bus.Event; import reactor.fn.Consumer; diff --git a/spring-reactor/src/main/java/com/baeldung/controller/NotificationController.java b/spring-reactor/src/main/java/com/baeldung/reactorbus/controller/NotificationController.java similarity index 89% rename from spring-reactor/src/main/java/com/baeldung/controller/NotificationController.java rename to spring-reactor/src/main/java/com/baeldung/reactorbus/controller/NotificationController.java index 8665f247b0..62a7b38662 100644 --- a/spring-reactor/src/main/java/com/baeldung/controller/NotificationController.java +++ b/spring-reactor/src/main/java/com/baeldung/reactorbus/controller/NotificationController.java @@ -1,11 +1,11 @@ -package com.baeldung.controller; +package com.baeldung.reactorbus.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; -import com.baeldung.doman.NotificationData; +import com.baeldung.reactorbus.domain.NotificationData; import reactor.bus.Event; import reactor.bus.EventBus; diff --git a/spring-reactor/src/main/java/com/baeldung/doman/NotificationData.java b/spring-reactor/src/main/java/com/baeldung/reactorbus/domain/NotificationData.java similarity index 94% rename from spring-reactor/src/main/java/com/baeldung/doman/NotificationData.java rename to spring-reactor/src/main/java/com/baeldung/reactorbus/domain/NotificationData.java index d6d7b02949..65d3559541 100644 --- a/spring-reactor/src/main/java/com/baeldung/doman/NotificationData.java +++ b/spring-reactor/src/main/java/com/baeldung/reactorbus/domain/NotificationData.java @@ -1,4 +1,4 @@ -package com.baeldung.doman; +package com.baeldung.reactorbus.domain; public class NotificationData { diff --git a/spring-reactor/src/main/java/com/baeldung/service/NotificationService.java b/spring-reactor/src/main/java/com/baeldung/reactorbus/service/NotificationService.java similarity index 58% rename from spring-reactor/src/main/java/com/baeldung/service/NotificationService.java rename to spring-reactor/src/main/java/com/baeldung/reactorbus/service/NotificationService.java index f653b2162f..dfcd03ed68 100644 --- a/spring-reactor/src/main/java/com/baeldung/service/NotificationService.java +++ b/spring-reactor/src/main/java/com/baeldung/reactorbus/service/NotificationService.java @@ -1,6 +1,6 @@ -package com.baeldung.service; +package com.baeldung.reactorbus.service; -import com.baeldung.doman.NotificationData; +import com.baeldung.reactorbus.domain.NotificationData; public interface NotificationService { diff --git a/spring-reactor/src/main/java/com/baeldung/service/impl/NotificationServiceimpl.java b/spring-reactor/src/main/java/com/baeldung/reactorbus/service/impl/NotificationServiceimpl.java similarity index 75% rename from spring-reactor/src/main/java/com/baeldung/service/impl/NotificationServiceimpl.java rename to spring-reactor/src/main/java/com/baeldung/reactorbus/service/impl/NotificationServiceimpl.java index bf37741f6a..aa305caaad 100644 --- a/spring-reactor/src/main/java/com/baeldung/service/impl/NotificationServiceimpl.java +++ b/spring-reactor/src/main/java/com/baeldung/reactorbus/service/impl/NotificationServiceimpl.java @@ -1,9 +1,9 @@ -package com.baeldung.service.impl; +package com.baeldung.reactorbus.service.impl; import org.springframework.stereotype.Service; -import com.baeldung.doman.NotificationData; -import com.baeldung.service.NotificationService; +import com.baeldung.reactorbus.domain.NotificationData; +import com.baeldung.reactorbus.service.NotificationService; @Service public class NotificationServiceimpl implements NotificationService { diff --git a/spring-reactor/src/test/java/com/baeldung/DataLoaderLiveTest.java b/spring-reactor/src/test/java/com/baeldung/DataLoaderLiveTest.java deleted file mode 100644 index 5833bc277c..0000000000 --- a/spring-reactor/src/test/java/com/baeldung/DataLoaderLiveTest.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung; - -import org.junit.Test; -import org.springframework.web.client.RestTemplate; - -public class DataLoaderLiveTest { - - @Test - public void exampleTest() { - RestTemplate restTemplate = new RestTemplate(); - restTemplate.getForObject("http://localhost:8080/startNotification/10", String.class); - } - -} diff --git a/spring-reactor/src/test/java/org/baeldung/SpringContextTest.java b/spring-reactor/src/test/java/com/baeldung/SpringContextTest.java similarity index 71% rename from spring-reactor/src/test/java/org/baeldung/SpringContextTest.java rename to spring-reactor/src/test/java/com/baeldung/SpringContextTest.java index 5e68a8e64f..68b6018433 100644 --- a/spring-reactor/src/test/java/org/baeldung/SpringContextTest.java +++ b/spring-reactor/src/test/java/com/baeldung/SpringContextTest.java @@ -1,14 +1,14 @@ -package org.baeldung; +package com.baeldung; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.Application; +import com.baeldung.reactorbus.NotificationApplication; @RunWith(SpringRunner.class) -@SpringBootTest(classes = Application.class) +@SpringBootTest(classes = NotificationApplication.class) public class SpringContextTest { @Test diff --git a/spring-reactor/src/test/java/com/baeldung/reactorbus/NotificationApplicationIntegrationTest.java b/spring-reactor/src/test/java/com/baeldung/reactorbus/NotificationApplicationIntegrationTest.java new file mode 100644 index 0000000000..0adea21fd4 --- /dev/null +++ b/spring-reactor/src/test/java/com/baeldung/reactorbus/NotificationApplicationIntegrationTest.java @@ -0,0 +1,22 @@ +package com.baeldung.reactorbus; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.web.client.RestTemplate; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class NotificationApplicationIntegrationTest { + + @LocalServerPort + private int port; + + @Test + public void givenAppStarted_whenNotificationTasksSubmitted_thenProcessed() { + RestTemplate restTemplate = new RestTemplate(); + restTemplate.getForObject("http://localhost:" + port + "/startNotification/10", String.class); + } +}