From 55f393b2a37b5eae0f9eeb0c86074e2772c2514d Mon Sep 17 00:00:00 2001 From: "amit.pandey" Date: Mon, 10 Feb 2020 00:17:06 +0530 Subject: [PATCH 1/8] added missing code which are mentioned in article --- .../web/controller/FooController.java | 13 ++++ .../RestResponseStatusExceptionResolver.java | 73 +++++++++++++++++++ .../web/exception/CustomException1.java | 7 ++ .../web/exception/CustomException2.java | 7 ++ .../MyResourceNotFoundException.java | 4 + .../FooControllerWebLayerIntegrationTest.java | 15 +++- 6 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 spring-boot-rest/src/main/java/com/baeldung/web/error/RestResponseStatusExceptionResolver.java create mode 100644 spring-boot-rest/src/main/java/com/baeldung/web/exception/CustomException1.java create mode 100644 spring-boot-rest/src/main/java/com/baeldung/web/exception/CustomException2.java diff --git a/spring-boot-rest/src/main/java/com/baeldung/web/controller/FooController.java b/spring-boot-rest/src/main/java/com/baeldung/web/controller/FooController.java index 8174480078..a09878fb84 100644 --- a/spring-boot-rest/src/main/java/com/baeldung/web/controller/FooController.java +++ b/spring-boot-rest/src/main/java/com/baeldung/web/controller/FooController.java @@ -4,6 +4,8 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; import org.springframework.data.domain.Page; @@ -11,6 +13,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; @@ -25,6 +28,8 @@ import org.springframework.web.util.UriComponentsBuilder; import com.baeldung.persistence.model.Foo; import com.baeldung.persistence.service.IFooService; +import com.baeldung.web.exception.CustomException1; +import com.baeldung.web.exception.CustomException2; import com.baeldung.web.exception.MyResourceNotFoundException; import com.baeldung.web.hateoas.event.PaginatedResultsRetrievedEvent; import com.baeldung.web.hateoas.event.ResourceCreatedEvent; @@ -36,6 +41,8 @@ import com.google.common.base.Preconditions; @RequestMapping(value = "/foos") public class FooController { + private static final Logger logger = LoggerFactory.getLogger(FooController.class); + @Autowired private ApplicationEventPublisher eventPublisher; @@ -137,4 +144,10 @@ public class FooController { public void delete(@PathVariable("id") final Long id) { service.deleteById(id); } + + @ExceptionHandler({ CustomException1.class, CustomException2.class }) + public void handleException(final Exception ex) { + final String error = "Application specific error handling"; + logger.error(error, ex); + } } diff --git a/spring-boot-rest/src/main/java/com/baeldung/web/error/RestResponseStatusExceptionResolver.java b/spring-boot-rest/src/main/java/com/baeldung/web/error/RestResponseStatusExceptionResolver.java new file mode 100644 index 0000000000..6753ab35cf --- /dev/null +++ b/spring-boot-rest/src/main/java/com/baeldung/web/error/RestResponseStatusExceptionResolver.java @@ -0,0 +1,73 @@ +package com.baeldung.web.error; + +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.xml.XmlMapper; + +@Component +public class RestResponseStatusExceptionResolver extends AbstractHandlerExceptionResolver { + + private static final Logger logger = LoggerFactory.getLogger(RestResponseStatusExceptionResolver.class); + + @Override + protected ModelAndView doResolveException(HttpServletRequest request, + HttpServletResponse response, Object handler, Exception ex) { + try { + if (ex instanceof IllegalArgumentException) { + return handleIllegalArgument( + (IllegalArgumentException) ex, request, response, handler); + } + } catch (Exception handlerException) { + logger.warn("Handling of [{}] resulted in Exception", ex.getClass().getName(), handlerException); + } + return null; + } + + private ModelAndView handleIllegalArgument(IllegalArgumentException ex, + final HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + final String accept = request.getHeader(HttpHeaders.ACCEPT); + + response.sendError(HttpServletResponse.SC_CONFLICT); + response.setHeader("ContentType", accept); + + final ModelAndView modelAndView = new ModelAndView("error"); + modelAndView.addObject("error", prepareErrorResponse(accept)); + return modelAndView; + } + + /** Prepares error object based on the provided accept type. + * @param accept The Accept header present in the request. + * @return The response to return + * @throws JsonProcessingException + */ + private String prepareErrorResponse(String accept) throws JsonProcessingException { + final Map error = new HashMap<>(); + error.put("Error", "Application specific error message"); + + final String response; + if(MediaType.APPLICATION_JSON_VALUE.equals(accept)) { + response = new ObjectMapper().writeValueAsString(error); + } else { + response = new XmlMapper().writeValueAsString(error); + } + + return response; + } + + + +} diff --git a/spring-boot-rest/src/main/java/com/baeldung/web/exception/CustomException1.java b/spring-boot-rest/src/main/java/com/baeldung/web/exception/CustomException1.java new file mode 100644 index 0000000000..ed8d34ae2b --- /dev/null +++ b/spring-boot-rest/src/main/java/com/baeldung/web/exception/CustomException1.java @@ -0,0 +1,7 @@ +package com.baeldung.web.exception; + +public class CustomException1 extends RuntimeException { + + private static final long serialVersionUID = 1L; + +} diff --git a/spring-boot-rest/src/main/java/com/baeldung/web/exception/CustomException2.java b/spring-boot-rest/src/main/java/com/baeldung/web/exception/CustomException2.java new file mode 100644 index 0000000000..39b6c98a82 --- /dev/null +++ b/spring-boot-rest/src/main/java/com/baeldung/web/exception/CustomException2.java @@ -0,0 +1,7 @@ +package com.baeldung.web.exception; + +public class CustomException2 extends RuntimeException { + + private static final long serialVersionUID = 1L; + +} diff --git a/spring-boot-rest/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java b/spring-boot-rest/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java index fd002efc28..59bcfde57a 100644 --- a/spring-boot-rest/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java +++ b/spring-boot-rest/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java @@ -1,5 +1,9 @@ package com.baeldung.web.exception; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(value = HttpStatus.NOT_FOUND) public final class MyResourceNotFoundException extends RuntimeException { public MyResourceNotFoundException() { diff --git a/spring-boot-rest/src/test/java/com/baeldung/web/FooControllerWebLayerIntegrationTest.java b/spring-boot-rest/src/test/java/com/baeldung/web/FooControllerWebLayerIntegrationTest.java index bd98523b0a..4d4a274b1a 100644 --- a/spring-boot-rest/src/test/java/com/baeldung/web/FooControllerWebLayerIntegrationTest.java +++ b/spring-boot-rest/src/test/java/com/baeldung/web/FooControllerWebLayerIntegrationTest.java @@ -10,8 +10,10 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. import java.util.Collections; import org.hamcrest.Matchers; +import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; @@ -24,6 +26,7 @@ import org.springframework.test.web.servlet.MockMvc; import com.baeldung.persistence.model.Foo; import com.baeldung.persistence.service.IFooService; import com.baeldung.web.controller.FooController; +import com.baeldung.web.exception.CustomException1; import com.baeldung.web.hateoas.event.PaginatedResultsRetrievedEvent; /** @@ -56,5 +59,15 @@ public class FooControllerWebLayerIntegrationTest { .andExpect(status().isOk()) .andExpect(jsonPath("$",Matchers.hasSize(1))); } - + + @Test + public void delete_forException_fromService() throws Exception { + Mockito.when(service.findAll()).thenThrow(new CustomException1()); + this.mockMvc.perform(get("/foos")).andDo(h -> { + final Exception expectedException = h.getResolvedException(); + Assert.assertTrue(expectedException instanceof CustomException1); + + }); + } + } From a681588bcc88d59b202faa6572fd09d2b646a86c Mon Sep 17 00:00:00 2001 From: amdegregorio Date: Mon, 17 Feb 2020 06:36:35 -0500 Subject: [PATCH 2/8] BAEL-3840 Suppressed Exceptions in Java --- .../suppressed/ExceptionalResource.java | 13 ++++++ .../suppressed/SuppressedExceptionsDemo.java | 42 +++++++++++++++++++ .../SuppressedExceptionsUnitTest.java | 39 +++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/ExceptionalResource.java create mode 100644 core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/SuppressedExceptionsDemo.java create mode 100644 core-java-modules/core-java-exceptions-2/src/test/java/com/baeldung/suppressed/SuppressedExceptionsUnitTest.java diff --git a/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/ExceptionalResource.java b/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/ExceptionalResource.java new file mode 100644 index 0000000000..64b28eca8c --- /dev/null +++ b/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/ExceptionalResource.java @@ -0,0 +1,13 @@ +package com.baeldung.suppressed; + +public class ExceptionalResource implements AutoCloseable { + + public void processSomething() { + throw new NullPointerException("Thrown from processSomething()"); + } + + @Override + public void close() throws Exception { + throw new NullPointerException("Thrown from close()"); + } +} diff --git a/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/SuppressedExceptionsDemo.java b/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/SuppressedExceptionsDemo.java new file mode 100644 index 0000000000..d7f8732f21 --- /dev/null +++ b/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/SuppressedExceptionsDemo.java @@ -0,0 +1,42 @@ +package com.baeldung.suppressed; + +import java.io.FileInputStream; +import java.io.IOException; + +public class SuppressedExceptionsDemo { + + public static void demoSuppressedException(String filePath) throws IOException { + FileInputStream fileIn = null; + try { + fileIn = new FileInputStream(filePath); + } catch (IOException e) { + + } finally { + fileIn.close(); + } + } + + public static void demoAddSuppressedException(String filePath) throws IOException { + Throwable firstException = null; + FileInputStream fileIn = null; + try { + fileIn = new FileInputStream(filePath); + } catch (IOException e) { + firstException = e; + } finally { + try { + fileIn.close(); + } catch (NullPointerException npe) { + if (firstException != null) { + npe.addSuppressed(firstException); + } + } + } + } + + public static void demoExceptionalResource() throws Exception { + try (ExceptionalResource exceptionalResource = new ExceptionalResource()) { + exceptionalResource.processSomething(); + } + } +} diff --git a/core-java-modules/core-java-exceptions-2/src/test/java/com/baeldung/suppressed/SuppressedExceptionsUnitTest.java b/core-java-modules/core-java-exceptions-2/src/test/java/com/baeldung/suppressed/SuppressedExceptionsUnitTest.java new file mode 100644 index 0000000000..810292d131 --- /dev/null +++ b/core-java-modules/core-java-exceptions-2/src/test/java/com/baeldung/suppressed/SuppressedExceptionsUnitTest.java @@ -0,0 +1,39 @@ +package com.baeldung.suppressed; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; + +import java.io.FileNotFoundException; +import java.io.IOException; + +import org.junit.Test; +import static org.hamcrest.CoreMatchers.instanceOf; + +public class SuppressedExceptionsUnitTest { + + @Test(expected = NullPointerException.class) + public void givenNonExistentFileName_whenAttemptFileOpen_thenNullPointerException() throws IOException { + SuppressedExceptionsDemo.demoSuppressedException("/non-existent-path/non-existent-file.txt"); + } + + @Test + public void givenNonExistentFileName_whenAttemptFileOpenStoreSuppressed_thenSuppressedExceptionAvailable() { + try { + SuppressedExceptionsDemo.demoAddSuppressedException("/non-existent-path/non-existent-file.txt"); + } catch (Exception e) { + assertEquals(1, e.getSuppressed().length); + assertThat(e.getSuppressed()[0], instanceOf(FileNotFoundException.class)); + } + } + + @Test + public void whenUsingExceptionalResource_thenSuppressedExceptionAvailable() { + try { + SuppressedExceptionsDemo.demoExceptionalResource(); + } catch (Exception e) { + assertEquals("Thrown from processSomething()", e.getMessage()); + assertEquals(1, e.getSuppressed().length); + assertEquals("Thrown from close()", e.getSuppressed()[0].getMessage()); + } + } +} From 83539b1b3e5bc3c0674f599248bd6898502fc9df Mon Sep 17 00:00:00 2001 From: amdegregorio Date: Tue, 18 Feb 2020 16:07:26 -0500 Subject: [PATCH 3/8] BAEL-3840 Fix example for section 2.1. --- .../java/com/baeldung/suppressed/SuppressedExceptionsDemo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/SuppressedExceptionsDemo.java b/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/SuppressedExceptionsDemo.java index d7f8732f21..c1a838a3fd 100644 --- a/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/SuppressedExceptionsDemo.java +++ b/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/SuppressedExceptionsDemo.java @@ -10,7 +10,7 @@ public class SuppressedExceptionsDemo { try { fileIn = new FileInputStream(filePath); } catch (IOException e) { - + throw new IOException(e.getMessage()); } finally { fileIn.close(); } From d1ed8af579ca502d637290538908b18f9256a226 Mon Sep 17 00:00:00 2001 From: amdegregorio Date: Fri, 28 Feb 2020 06:54:27 -0500 Subject: [PATCH 4/8] BAEL-3840 Adjust examples based on editor feedback --- .../java/com/baeldung/suppressed/ExceptionalResource.java | 2 +- .../com/baeldung/suppressed/SuppressedExceptionsDemo.java | 6 ++++-- .../baeldung/suppressed/SuppressedExceptionsUnitTest.java | 3 +++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/ExceptionalResource.java b/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/ExceptionalResource.java index 64b28eca8c..8892e097b1 100644 --- a/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/ExceptionalResource.java +++ b/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/ExceptionalResource.java @@ -3,7 +3,7 @@ package com.baeldung.suppressed; public class ExceptionalResource implements AutoCloseable { public void processSomething() { - throw new NullPointerException("Thrown from processSomething()"); + throw new IllegalArgumentException("Thrown from processSomething()"); } @Override diff --git a/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/SuppressedExceptionsDemo.java b/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/SuppressedExceptionsDemo.java index c1a838a3fd..6ff23fd041 100644 --- a/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/SuppressedExceptionsDemo.java +++ b/core-java-modules/core-java-exceptions-2/src/main/java/com/baeldung/suppressed/SuppressedExceptionsDemo.java @@ -1,6 +1,7 @@ package com.baeldung.suppressed; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; public class SuppressedExceptionsDemo { @@ -9,8 +10,8 @@ public class SuppressedExceptionsDemo { FileInputStream fileIn = null; try { fileIn = new FileInputStream(filePath); - } catch (IOException e) { - throw new IOException(e.getMessage()); + } catch (FileNotFoundException e) { + throw new IOException(e); } finally { fileIn.close(); } @@ -30,6 +31,7 @@ public class SuppressedExceptionsDemo { if (firstException != null) { npe.addSuppressed(firstException); } + throw npe; } } } diff --git a/core-java-modules/core-java-exceptions-2/src/test/java/com/baeldung/suppressed/SuppressedExceptionsUnitTest.java b/core-java-modules/core-java-exceptions-2/src/test/java/com/baeldung/suppressed/SuppressedExceptionsUnitTest.java index 810292d131..7664ee6847 100644 --- a/core-java-modules/core-java-exceptions-2/src/test/java/com/baeldung/suppressed/SuppressedExceptionsUnitTest.java +++ b/core-java-modules/core-java-exceptions-2/src/test/java/com/baeldung/suppressed/SuppressedExceptionsUnitTest.java @@ -21,6 +21,7 @@ public class SuppressedExceptionsUnitTest { try { SuppressedExceptionsDemo.demoAddSuppressedException("/non-existent-path/non-existent-file.txt"); } catch (Exception e) { + assertThat(e, instanceOf(NullPointerException.class)); assertEquals(1, e.getSuppressed().length); assertThat(e.getSuppressed()[0], instanceOf(FileNotFoundException.class)); } @@ -31,8 +32,10 @@ public class SuppressedExceptionsUnitTest { try { SuppressedExceptionsDemo.demoExceptionalResource(); } catch (Exception e) { + assertThat(e, instanceOf(IllegalArgumentException.class)); assertEquals("Thrown from processSomething()", e.getMessage()); assertEquals(1, e.getSuppressed().length); + assertThat(e.getSuppressed()[0], instanceOf(NullPointerException.class)); assertEquals("Thrown from close()", e.getSuppressed()[0].getMessage()); } } From a6c090f66b75d61ca5cb1523d0c0d6ff072caef2 Mon Sep 17 00:00:00 2001 From: Anshul Bansal Date: Sun, 1 Mar 2020 15:07:50 +0200 Subject: [PATCH 5/8] BAEL_3760-Introduction-to-Takes (#8767) * Initial commit * Intro to Takes * Takes - code * Code changes * Takes - unit and integration test * Takes - hit-refresh feature * Takes - renamed hit-refresh to reload * Takes - review changes --- libraries-3/pom.xml | 64 ++++++++++++++++++- .../java/com/baeldung/takes/TakesApp.java | 42 ++++++++++++ .../java/com/baeldung/takes/TakesContact.java | 22 +++++++ .../com/baeldung/takes/TakesHelloWorld.java | 15 +++++ .../java/com/baeldung/takes/TakesIndex.java | 24 +++++++ .../src/main/webapp/templates/index.vm | 9 +++ .../takes/TakesAppIntegrationTest.java | 36 +++++++++++ .../baeldung/takes/TakesContactUnitTest.java | 17 +++++ 8 files changed, 227 insertions(+), 2 deletions(-) create mode 100644 libraries-3/src/main/java/com/baeldung/takes/TakesApp.java create mode 100644 libraries-3/src/main/java/com/baeldung/takes/TakesContact.java create mode 100644 libraries-3/src/main/java/com/baeldung/takes/TakesHelloWorld.java create mode 100644 libraries-3/src/main/java/com/baeldung/takes/TakesIndex.java create mode 100644 libraries-3/src/main/webapp/templates/index.vm create mode 100644 libraries-3/src/test/java/com/baeldung/takes/TakesAppIntegrationTest.java create mode 100644 libraries-3/src/test/java/com/baeldung/takes/TakesContactUnitTest.java diff --git a/libraries-3/pom.xml b/libraries-3/pom.xml index 4bb1a4fba1..a438d423e2 100644 --- a/libraries-3/pom.xml +++ b/libraries-3/pom.xml @@ -83,7 +83,6 @@ moshi-adapters ${moshi.version} - com.jcabi jcabi-aspects @@ -95,6 +94,16 @@ ${aspectjrt.version} runtime + + org.takes + takes + ${takes.version} + + + org.apache.velocity + velocity-engine-core + ${velocity-engine-core.version} + @@ -132,8 +141,55 @@ + + + src/main/webapp + true + + - + + + + reload + + + + src/main/resources + true + + + src/main/webapp + true + + + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + + + start-server + pre-integration-test + + java + + + + + com.baeldung.takes.TakesApp + false + + --port=${port} + + + + + + + + 1.78 1.18.6 @@ -151,5 +207,9 @@ 0.14.1 1.9.2 1.9.2 + + 1.19 + 2.2 + 1.6.0 diff --git a/libraries-3/src/main/java/com/baeldung/takes/TakesApp.java b/libraries-3/src/main/java/com/baeldung/takes/TakesApp.java new file mode 100644 index 0000000000..3c1407c291 --- /dev/null +++ b/libraries-3/src/main/java/com/baeldung/takes/TakesApp.java @@ -0,0 +1,42 @@ +package com.baeldung.takes; + +import java.io.IOException; +import java.sql.SQLException; + +import org.takes.Response; +import org.takes.facets.fallback.Fallback; +import org.takes.facets.fallback.FbChain; +import org.takes.facets.fallback.FbStatus; +import org.takes.facets.fallback.RqFallback; +import org.takes.facets.fallback.TkFallback; +import org.takes.facets.fork.FkRegex; +import org.takes.facets.fork.TkFork; +import org.takes.http.Exit; +import org.takes.http.FtBasic; +import org.takes.misc.Opt; +import org.takes.rs.RsText; + +public final class TakesApp { + + public static void main(final String... args) throws IOException, SQLException { + new FtBasic( + new TkFallback( + new TkFork( + new FkRegex("/", new TakesHelloWorld()), + new FkRegex("/index", new TakesIndex()), + new FkRegex("/contact", new TakesContact()) + ), + new FbChain( + new FbStatus(404, new RsText("Page Not Found")), + new FbStatus(405, new RsText("Method Not Allowed")), + new Fallback() { + @Override + public Opt route(final RqFallback req) { + return new Opt.Single(new RsText(req.throwable().getMessage())); + } + }) + ), 6060 + ).start(Exit.NEVER); + } + +} \ No newline at end of file diff --git a/libraries-3/src/main/java/com/baeldung/takes/TakesContact.java b/libraries-3/src/main/java/com/baeldung/takes/TakesContact.java new file mode 100644 index 0000000000..e083bc3dc6 --- /dev/null +++ b/libraries-3/src/main/java/com/baeldung/takes/TakesContact.java @@ -0,0 +1,22 @@ +package com.baeldung.takes; + +import java.io.IOException; + +import org.takes.Request; +import org.takes.Response; +import org.takes.Take; +import org.takes.rs.RsWithBody; +import org.takes.rs.RsWithStatus; +import org.takes.rs.RsWithType; + +public final class TakesContact implements Take { + + @Override + public Response act(Request req) throws IOException { + return new RsWithStatus( + new RsWithType( + new RsWithBody("Contact us at https://www.baeldung.com"), + "text/html"), 200); + } + +} diff --git a/libraries-3/src/main/java/com/baeldung/takes/TakesHelloWorld.java b/libraries-3/src/main/java/com/baeldung/takes/TakesHelloWorld.java new file mode 100644 index 0000000000..9d1346d3c1 --- /dev/null +++ b/libraries-3/src/main/java/com/baeldung/takes/TakesHelloWorld.java @@ -0,0 +1,15 @@ +package com.baeldung.takes; + +import org.takes.Request; +import org.takes.Response; +import org.takes.Take; +import org.takes.rs.RsText; + +public class TakesHelloWorld implements Take { + + @Override + public Response act(final Request request) { + return new RsText("Hello, world!"); + } + +} diff --git a/libraries-3/src/main/java/com/baeldung/takes/TakesIndex.java b/libraries-3/src/main/java/com/baeldung/takes/TakesIndex.java new file mode 100644 index 0000000000..3f74ba9c67 --- /dev/null +++ b/libraries-3/src/main/java/com/baeldung/takes/TakesIndex.java @@ -0,0 +1,24 @@ +package com.baeldung.takes; + +import java.io.IOException; + +import org.takes.Request; +import org.takes.Response; +import org.takes.Take; +import org.takes.rq.form.RqFormSmart; +import org.takes.rs.RsHtml; +import org.takes.rs.RsVelocity; + +public final class TakesIndex implements Take { + + @Override + public Response act(final Request req) throws IOException { + RqFormSmart form = new RqFormSmart(req); + String username = form.single("username"); + return new RsHtml( + new RsVelocity(this.getClass().getResource("/templates/index.vm"), + new RsVelocity.Pair("username", username)) + ); + } + +} diff --git a/libraries-3/src/main/webapp/templates/index.vm b/libraries-3/src/main/webapp/templates/index.vm new file mode 100644 index 0000000000..5a97f654ce --- /dev/null +++ b/libraries-3/src/main/webapp/templates/index.vm @@ -0,0 +1,9 @@ + + +Index + + +

Takes Web Application

+

Welcome, ${username}

+ + diff --git a/libraries-3/src/test/java/com/baeldung/takes/TakesAppIntegrationTest.java b/libraries-3/src/test/java/com/baeldung/takes/TakesAppIntegrationTest.java new file mode 100644 index 0000000000..8b869d0742 --- /dev/null +++ b/libraries-3/src/test/java/com/baeldung/takes/TakesAppIntegrationTest.java @@ -0,0 +1,36 @@ +package com.baeldung.takes; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.net.URI; + +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.junit.Test; +import org.takes.http.FtRemote; + +public class TakesAppIntegrationTest { + + @Test + public void givenTake_whenRunRemoteServer_thenRespond() throws Exception { + new FtRemote(new TakesContact()).exec( + new FtRemote.Script() { + @Override + public void exec(final URI home) throws IOException { + HttpClient client = HttpClientBuilder.create().build(); + HttpResponse response = client.execute(new HttpGet(home)); + int statusCode = response.getStatusLine().getStatusCode(); + HttpEntity entity = response.getEntity(); + String result = EntityUtils.toString(entity); + + assertEquals(200, statusCode); + assertEquals("Contact us at https://www.baeldung.com", result); + } + }); + } +} diff --git a/libraries-3/src/test/java/com/baeldung/takes/TakesContactUnitTest.java b/libraries-3/src/test/java/com/baeldung/takes/TakesContactUnitTest.java new file mode 100644 index 0000000000..5f8b7c57fc --- /dev/null +++ b/libraries-3/src/test/java/com/baeldung/takes/TakesContactUnitTest.java @@ -0,0 +1,17 @@ +package com.baeldung.takes; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.takes.rq.RqFake; +import org.takes.rs.RsPrint; + +public class TakesContactUnitTest { + + @Test + public void givenTake_whenInvokeActMethod_thenRespond() throws Exception { + final String resp = new RsPrint(new TakesContact().act(new RqFake())).printBody(); + assertEquals("Contact us at https://www.baeldung.com", resp); + } + +} From 5bed69316073c5c096ff30164dfd8d89da139011 Mon Sep 17 00:00:00 2001 From: Sampada <46674082+sampada07@users.noreply.github.com> Date: Sun, 1 Mar 2020 21:44:03 +0530 Subject: [PATCH 6/8] BAEL-3592 : modified package name (#8798) --- .../ejb/messagedriven/RecieverMDB.java | 2 +- .../ejb/singleton/CounterEJB.java | 2 +- .../ejb/singleton/CounterEJBRemote.java | 2 +- .../ejb/stateful/ShoppingCartEJB.java | 2 +- .../ejb/stateful/ShoppingCartEJBRemote.java | 2 +- .../ejb/stateless/FinderEJB.java | 2 +- .../ejb/stateless/FinderEJBRemote.java | 2 +- .../spring/config/ApplicationConfig.java | 4 ++-- .../spring/messagedriven/Producer.java | 2 +- .../spring/messagedriven/Receiver.java | 2 +- .../spring/singleton/CounterBean.java | 2 +- .../spring/stateful/ShoppingCartBean.java | 2 +- .../ejb/EJBUnitTest.java | 8 ++++---- .../spring/SpringUnitTest.java | 10 +++++----- 14 files changed, 22 insertions(+), 22 deletions(-) rename spring-ejb/ejb-beans/src/main/java/com/baeldung/{ejb/spring/comparison => ejbspringcomparison}/ejb/messagedriven/RecieverMDB.java (96%) rename spring-ejb/ejb-beans/src/main/java/com/baeldung/{ejb/spring/comparison => ejbspringcomparison}/ejb/singleton/CounterEJB.java (85%) rename spring-ejb/ejb-beans/src/main/java/com/baeldung/{ejb/spring/comparison => ejbspringcomparison}/ejb/singleton/CounterEJBRemote.java (71%) rename spring-ejb/ejb-beans/src/main/java/com/baeldung/{ejb/spring/comparison => ejbspringcomparison}/ejb/stateful/ShoppingCartEJB.java (91%) rename spring-ejb/ejb-beans/src/main/java/com/baeldung/{ejb/spring/comparison => ejbspringcomparison}/ejb/stateful/ShoppingCartEJBRemote.java (79%) rename spring-ejb/ejb-beans/src/main/java/com/baeldung/{ejb/spring/comparison => ejbspringcomparison}/ejb/stateless/FinderEJB.java (89%) rename spring-ejb/ejb-beans/src/main/java/com/baeldung/{ejb/spring/comparison => ejbspringcomparison}/ejb/stateless/FinderEJBRemote.java (65%) rename spring-ejb/ejb-beans/src/main/java/com/baeldung/{ejb/spring/comparison => ejbspringcomparison}/spring/config/ApplicationConfig.java (89%) rename spring-ejb/ejb-beans/src/main/java/com/baeldung/{ejb/spring/comparison => ejbspringcomparison}/spring/messagedriven/Producer.java (88%) rename spring-ejb/ejb-beans/src/main/java/com/baeldung/{ejb/spring/comparison => ejbspringcomparison}/spring/messagedriven/Receiver.java (88%) rename spring-ejb/ejb-beans/src/main/java/com/baeldung/{ejb/spring/comparison => ejbspringcomparison}/spring/singleton/CounterBean.java (84%) rename spring-ejb/ejb-beans/src/main/java/com/baeldung/{ejb/spring/comparison => ejbspringcomparison}/spring/stateful/ShoppingCartBean.java (92%) rename spring-ejb/ejb-beans/src/test/java/com/baeldung/{ejb/spring/comparison => ejbspringcomparison}/ejb/EJBUnitTest.java (93%) rename spring-ejb/ejb-beans/src/test/java/com/baeldung/{ejb/spring/comparison => ejbspringcomparison}/spring/SpringUnitTest.java (89%) diff --git a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/messagedriven/RecieverMDB.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/ejb/messagedriven/RecieverMDB.java similarity index 96% rename from spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/messagedriven/RecieverMDB.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/ejb/messagedriven/RecieverMDB.java index 7a6b750ce5..f7f43244d5 100644 --- a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/messagedriven/RecieverMDB.java +++ b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/ejb/messagedriven/RecieverMDB.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.spring.comparison.ejb.messagedriven; +package com.baeldung.ejbspringcomparison.ejb.messagedriven; import javax.annotation.Resource; import javax.ejb.ActivationConfigProperty; 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/ejbspringcomparison/ejb/singleton/CounterEJB.java similarity index 85% rename from spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/singleton/CounterEJB.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/ejb/singleton/CounterEJB.java index 8582d79662..6873a717a9 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/ejbspringcomparison/ejb/singleton/CounterEJB.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.spring.comparison.ejb.singleton; +package com.baeldung.ejbspringcomparison.ejb.singleton; import javax.ejb.Singleton; 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/ejbspringcomparison/ejb/singleton/CounterEJBRemote.java similarity index 71% rename from spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/singleton/CounterEJBRemote.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/ejb/singleton/CounterEJBRemote.java index a66cda4f3e..ed02cfed4c 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/ejbspringcomparison/ejb/singleton/CounterEJBRemote.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.spring.comparison.ejb.singleton; +package com.baeldung.ejbspringcomparison.ejb.singleton; import javax.ejb.Remote; 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/ejbspringcomparison/ejb/stateful/ShoppingCartEJB.java similarity index 91% rename from spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateful/ShoppingCartEJB.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/ejb/stateful/ShoppingCartEJB.java index 501af4059f..e01e53add1 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/ejbspringcomparison/ejb/stateful/ShoppingCartEJB.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.spring.comparison.ejb.stateful; +package com.baeldung.ejbspringcomparison.ejb.stateful; import java.util.ArrayList; import java.util.List; 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/ejbspringcomparison/ejb/stateful/ShoppingCartEJBRemote.java similarity index 79% rename from spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateful/ShoppingCartEJBRemote.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/ejb/stateful/ShoppingCartEJBRemote.java index 4e1e407520..cea9cc3ad9 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/ejbspringcomparison/ejb/stateful/ShoppingCartEJBRemote.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.spring.comparison.ejb.stateful; +package com.baeldung.ejbspringcomparison.ejb.stateful; import java.util.List; diff --git a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateless/FinderEJB.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/ejb/stateless/FinderEJB.java similarity index 89% rename from spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateless/FinderEJB.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/ejb/stateless/FinderEJB.java index fb45e4e7ce..7609b17675 100644 --- a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateless/FinderEJB.java +++ b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/ejb/stateless/FinderEJB.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.spring.comparison.ejb.stateless; +package com.baeldung.ejbspringcomparison.ejb.stateless; import java.util.HashMap; import java.util.Map; diff --git a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateless/FinderEJBRemote.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/ejb/stateless/FinderEJBRemote.java similarity index 65% rename from spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateless/FinderEJBRemote.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/ejb/stateless/FinderEJBRemote.java index 36b4c9ae04..0354eff2b8 100644 --- a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/ejb/stateless/FinderEJBRemote.java +++ b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/ejb/stateless/FinderEJBRemote.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.spring.comparison.ejb.stateless; +package com.baeldung.ejbspringcomparison.ejb.stateless; import javax.ejb.Remote; diff --git a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/config/ApplicationConfig.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/spring/config/ApplicationConfig.java similarity index 89% rename from spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/config/ApplicationConfig.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/spring/config/ApplicationConfig.java index 6ec14dc098..8d6114d1c5 100644 --- a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/config/ApplicationConfig.java +++ b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/spring/config/ApplicationConfig.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.spring.comparison.spring.config; +package com.baeldung.ejbspringcomparison.spring.config; import javax.jms.ConnectionFactory; @@ -11,7 +11,7 @@ import org.springframework.jms.config.DefaultJmsListenerContainerFactory; import org.springframework.jms.core.JmsTemplate; @Configuration -@ComponentScan(basePackages = "com.baeldung.ejb.spring.comparison.spring") +@ComponentScan(basePackages = "com.baeldung.ejbspringcomparison.spring") @EnableJms public class ApplicationConfig { diff --git a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/messagedriven/Producer.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/spring/messagedriven/Producer.java similarity index 88% rename from spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/messagedriven/Producer.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/spring/messagedriven/Producer.java index a60dc4db8e..683ae7f51b 100644 --- a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/messagedriven/Producer.java +++ b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/spring/messagedriven/Producer.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.spring.comparison.spring.messagedriven; +package com.baeldung.ejbspringcomparison.spring.messagedriven; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsTemplate; diff --git a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/messagedriven/Receiver.java b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/spring/messagedriven/Receiver.java similarity index 88% rename from spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/messagedriven/Receiver.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/spring/messagedriven/Receiver.java index a3b36dd587..9a483e23c9 100644 --- a/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/messagedriven/Receiver.java +++ b/spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/spring/messagedriven/Receiver.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.spring.comparison.spring.messagedriven; +package com.baeldung.ejbspringcomparison.spring.messagedriven; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.annotation.JmsListener; 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/ejbspringcomparison/spring/singleton/CounterBean.java similarity index 84% rename from spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/singleton/CounterBean.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/spring/singleton/CounterBean.java index c28e7bf74c..6b2b57582d 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/ejbspringcomparison/spring/singleton/CounterBean.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.spring.comparison.spring.singleton; +package com.baeldung.ejbspringcomparison.spring.singleton; import org.springframework.stereotype.Component; 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/ejbspringcomparison/spring/stateful/ShoppingCartBean.java similarity index 92% rename from spring-ejb/ejb-beans/src/main/java/com/baeldung/ejb/spring/comparison/spring/stateful/ShoppingCartBean.java rename to spring-ejb/ejb-beans/src/main/java/com/baeldung/ejbspringcomparison/spring/stateful/ShoppingCartBean.java index 4d372baa84..e6e026f52a 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/ejbspringcomparison/spring/stateful/ShoppingCartBean.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.spring.comparison.spring.stateful; +package com.baeldung.ejbspringcomparison.spring.stateful; import java.util.ArrayList; import java.util.List; 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/ejbspringcomparison/ejb/EJBUnitTest.java similarity index 93% rename from spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/spring/comparison/ejb/EJBUnitTest.java rename to spring-ejb/ejb-beans/src/test/java/com/baeldung/ejbspringcomparison/ejb/EJBUnitTest.java index 3e9e5e7933..069028253e 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/ejbspringcomparison/ejb/EJBUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.spring.comparison.ejb; +package com.baeldung.ejbspringcomparison.ejb; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; @@ -23,9 +23,9 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import com.baeldung.ejb.spring.comparison.ejb.singleton.CounterEJBRemote; -import com.baeldung.ejb.spring.comparison.ejb.stateful.ShoppingCartEJBRemote; -import com.baeldung.ejb.spring.comparison.ejb.stateless.FinderEJBRemote; +import com.baeldung.ejbspringcomparison.ejb.singleton.CounterEJBRemote; +import com.baeldung.ejbspringcomparison.ejb.stateful.ShoppingCartEJBRemote; +import com.baeldung.ejbspringcomparison.ejb.stateless.FinderEJBRemote; public class EJBUnitTest { 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/ejbspringcomparison/spring/SpringUnitTest.java similarity index 89% rename from spring-ejb/ejb-beans/src/test/java/com/baeldung/ejb/spring/comparison/spring/SpringUnitTest.java rename to spring-ejb/ejb-beans/src/test/java/com/baeldung/ejbspringcomparison/spring/SpringUnitTest.java index 7a9ddc15a4..e0b397befe 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/ejbspringcomparison/spring/SpringUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.ejb.spring.comparison.spring; +package com.baeldung.ejbspringcomparison.spring; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; @@ -13,10 +13,10 @@ import org.junit.ClassRule; import org.junit.Test; import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import com.baeldung.ejb.spring.comparison.spring.config.ApplicationConfig; -import com.baeldung.ejb.spring.comparison.spring.messagedriven.Producer; -import com.baeldung.ejb.spring.comparison.spring.singleton.CounterBean; -import com.baeldung.ejb.spring.comparison.spring.stateful.ShoppingCartBean; +import com.baeldung.ejbspringcomparison.spring.config.ApplicationConfig; +import com.baeldung.ejbspringcomparison.spring.messagedriven.Producer; +import com.baeldung.ejbspringcomparison.spring.singleton.CounterBean; +import com.baeldung.ejbspringcomparison.spring.stateful.ShoppingCartBean; public class SpringUnitTest { From 604922faf9d5395037083089d704afc7616475c4 Mon Sep 17 00:00:00 2001 From: mikr Date: Sun, 1 Mar 2020 23:07:19 +0100 Subject: [PATCH 7/8] JAVA-28 remove mac profile --- lombok-custom/pom.xml | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/lombok-custom/pom.xml b/lombok-custom/pom.xml index 75c3f9d407..220367bfe9 100644 --- a/lombok-custom/pom.xml +++ b/lombok-custom/pom.xml @@ -53,24 +53,6 @@ - - mac-profile - - false - - ${java.home}/../Classes/classes.jar - - - - - com.sun - tools - ${java.version} - system - ${java.home}/../Classes/classes.jar - - - From 84a0cb54981d22c1eee721f0608710f5654bdfcd Mon Sep 17 00:00:00 2001 From: Jonathan Cook Date: Tue, 3 Mar 2020 07:15:28 +0100 Subject: [PATCH 8/8] BAEL-3854 - Pattern Matching for instanceof in Java 14 (#8799) * BAEL-3491 - Check for null before calling parse in the Double.parseDouble * BAEL-3491 - Check for null before calling parse in the Double.parseDouble - Return to indentation with spaces. * BAEL-3854 - Pattern Matching for instanceof in Java 14 * BAEL-3854 - Pattern Matching for instanceof in Java 14 - add unit test --- .../PatternMatchingForInstanceOf.java | 26 +++++++++++++++ .../PatternMatchingForInstanceOfUnitTest.java | 33 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 core-java-modules/core-java-14/src/main/java/com/baeldung/java14/patternmatchingforinstanceof/PatternMatchingForInstanceOf.java create mode 100644 core-java-modules/core-java-14/src/test/java/com/baeldung/java14/patternmatchingforinstanceof/PatternMatchingForInstanceOfUnitTest.java diff --git a/core-java-modules/core-java-14/src/main/java/com/baeldung/java14/patternmatchingforinstanceof/PatternMatchingForInstanceOf.java b/core-java-modules/core-java-14/src/main/java/com/baeldung/java14/patternmatchingforinstanceof/PatternMatchingForInstanceOf.java new file mode 100644 index 0000000000..11026f45f9 --- /dev/null +++ b/core-java-modules/core-java-14/src/main/java/com/baeldung/java14/patternmatchingforinstanceof/PatternMatchingForInstanceOf.java @@ -0,0 +1,26 @@ +package com.baeldung.java14.patternmatchingforinstanceof; + +public class PatternMatchingForInstanceOf { + + public void performAnimalOperations(Animal animal) { + if (animal instanceof Cat cat) { + cat.meow(); + } else if(animal instanceof Dog dog) { + dog.woof(); + } + } + + abstract class Animal { + } + + final class Cat extends Animal { + void meow() { + } + } + + final class Dog extends Animal { + void woof() { + } + } + +} diff --git a/core-java-modules/core-java-14/src/test/java/com/baeldung/java14/patternmatchingforinstanceof/PatternMatchingForInstanceOfUnitTest.java b/core-java-modules/core-java-14/src/test/java/com/baeldung/java14/patternmatchingforinstanceof/PatternMatchingForInstanceOfUnitTest.java new file mode 100644 index 0000000000..0270e34dec --- /dev/null +++ b/core-java-modules/core-java-14/src/test/java/com/baeldung/java14/patternmatchingforinstanceof/PatternMatchingForInstanceOfUnitTest.java @@ -0,0 +1,33 @@ +package com.baeldung.java14.patternmatchingforinstanceof; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import org.junit.jupiter.api.Test; + +import com.baeldung.java14.patternmatchingforinstanceof.PatternMatchingForInstanceOf.Cat; +import com.baeldung.java14.patternmatchingforinstanceof.PatternMatchingForInstanceOf.Dog; + +class PatternMatchingForInstanceOfUnitTest { + + @Test + void givenAnAnimal_whenTypeIsCat_ThenCatGoesMeow() { + Cat animal = mock(Cat.class); + + PatternMatchingForInstanceOf instanceOf = new PatternMatchingForInstanceOf(); + instanceOf.performAnimalOperations(animal); + + verify(animal).meow(); + } + + @Test + void givenAnAnimal_whenTypeIsDog_ThenDogGoesWoof() { + Dog animal = mock(Dog.class); + + PatternMatchingForInstanceOf instanceOf = new PatternMatchingForInstanceOf(); + instanceOf.performAnimalOperations(animal); + + verify(animal).woof(); + } + +}