) request.getAttribute("books")) { %>
+
+ <%= book.getAuthor() %>:
+ <%= book.getTitle() %>
+ More...
+ <% } %>
+ <%@ include file="shopping-cart-hint.jsp"%>
+ <%@ include file="visitor-counter.jsp"%>
+
+
diff --git a/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/login.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/login.jsp
new file mode 100644
index 0000000000..619068bcae
--- /dev/null
+++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/login.jsp
@@ -0,0 +1,16 @@
+
+
+
+ Bookshelf: Login
+
+
+ Please input a username:
+ Login
+
+ <%@ include file="visitor-counter.jsp" %>
+
+
diff --git a/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp
new file mode 100644
index 0000000000..7e0c051540
--- /dev/null
+++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp
@@ -0,0 +1,16 @@
+<%@ page import="com.baeldung.patterns.intercepting.filter.data.Order" %>
+<% if (session != null && session.getAttribute("order") != null) { %>
+ <% Order order = ((Order) session.getAttribute("order")); %>
+ <% if (order != null && order.getItems().size() > 0) { %>
+
+
+ Your shopping cart is holding
+ <% if (order.getItems().size() == 1) { %>
+ 1 item.
+ <% } else { %>
+ <%= (order.getItems().size()) %> items.
+ <% } %>
+ Checkout
+
+ <% } %>
+<% } %>
diff --git a/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp
new file mode 100644
index 0000000000..5f71d2e54e
--- /dev/null
+++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp
@@ -0,0 +1,29 @@
+<%@ page import="com.baeldung.patterns.intercepting.filter.data.Book" %>
+<%@ page import="com.baeldung.patterns.intercepting.filter.data.Order" %>
+<%@ page import="java.util.Map" %>
+
+
+
+ Bookshelf: Checkout
+
+
+ You are about to buy the following books:
+ Shopping Cart
+ <% Order order = (Order) session.getAttribute("order"); %>
+
+ <% for (Map.Entry entry : order.getItems().entrySet()) { %>
+ -
+ <%= entry.getValue() %> x <%= entry.getKey().getPrice() %>
+
<%= entry.getKey().getTitle() %>
+ by <%= entry.getKey().getAuthor()%>
+
+ <% } %>
+
+
+ Total: <%= request.getAttribute("total") %>
+
+
+
+
diff --git a/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/unknown.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/unknown.jsp
new file mode 100644
index 0000000000..b52b2de8d5
--- /dev/null
+++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/unknown.jsp
@@ -0,0 +1,9 @@
+
+
+
+ Bookshelf: Command unknown
+
+
+ Sorry, this command is not known!
+
+
diff --git a/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp
new file mode 100644
index 0000000000..de1c741fb1
--- /dev/null
+++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp
@@ -0,0 +1,5 @@
+<% Integer counter = (Integer) request.getAttribute("counter"); %>
+<% if (counter != null && counter > 0) { %>
+
+ You are visitor #<%= counter %>. Logout
+<% } %>
diff --git a/patterns/pom.xml b/patterns/pom.xml
index 7c23b6f55d..6797891353 100644
--- a/patterns/pom.xml
+++ b/patterns/pom.xml
@@ -4,46 +4,55 @@
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.enterprise.patterns
- patterns
- war
-
-
-
- javax.servlet
- javax.servlet-api
- 3.1.0
- provided
-
-
+ com.baeldung.patterns
+ patterns-parent
+ pom
+
+ front-controller
+ intercepting-filter
+
com.baeldung
parent-modules
1.0.0-SNAPSHOT
+ ..
+
+
+
+ javax.servlet
+ javax.servlet-api
+ 3.1.0
+ provided
+
+
+
+
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.5.1
-
- 1.8
- 1.8
-
-
-
- org.eclipse.jetty
- jetty-maven-plugin
- 9.4.0.M1
-
-
- /front-controller
-
-
-
-
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.5.1
+
+ 1.8
+ 1.8
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 3.0.0
+
+
+ org.eclipse.jetty
+ jetty-maven-plugin
+ 9.3.12.v20160915
+
+
+
diff --git a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java b/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java
deleted file mode 100644
index 524e000bd9..0000000000
--- a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.baeldung.enterprise.patterns.front.controller.data;
-
-public interface Bookshelf {
-
- default void init() {
- add(new Book("Wilson, Robert Anton & Shea, Robert", "Illuminati", 9.99));
- add(new Book("Fowler, Martin", "Patterns of Enterprise Application Architecture", 27.88));
- }
-
- Bookshelf getInstance();
-
- boolean add(E book);
-
- Book findByTitle(String title);
-}
diff --git a/pdf/.gitignore b/pdf/.gitignore
new file mode 100644
index 0000000000..b83d22266a
--- /dev/null
+++ b/pdf/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/pdf/pom.xml b/pdf/pom.xml
new file mode 100644
index 0000000000..078a364e77
--- /dev/null
+++ b/pdf/pom.xml
@@ -0,0 +1,100 @@
+
+
+ 4.0.0
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+ pdf
+ pdf
+ http://maven.apache.org
+
+
+ UTF-8
+ 3.5.1
+
+
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
+ org.apache.pdfbox
+ pdfbox
+ 2.0.3
+
+
+
+ org.apache.pdfbox
+ pdfbox-tools
+ 2.0.3
+
+
+
+ net.sf.cssbox
+ pdf2dom
+ 1.6
+
+
+
+ com.itextpdf
+ itextpdf
+ 5.5.10
+
+
+
+ org.apache.poi
+ poi
+ 3.15
+
+
+
+ org.apache.poi
+ poi-ooxml
+ 3.15
+
+
+
+ org.apache.poi
+ poi-scratchpad
+ 3.15
+
+
+
+ org.apache.xmlgraphics
+ batik-transcoder
+ 1.8
+
+
+
+
+ pdf
+
+
+ src/main/resources
+ true
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+ 1.8
+ 1.8
+
+
+
+
+
+
diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java
new file mode 100644
index 0000000000..14e886e23b
--- /dev/null
+++ b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java
@@ -0,0 +1,39 @@
+package com.baeldung.pdf;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.Writer;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.fit.pdfdom.PDFDomTree;
+
+public class PDF2HTMLExample {
+
+ private static final String FILENAME = "src/main/resources/pdf.pdf";
+
+ public static void main(String[] args) {
+ try {
+ generateHTMLFromPDF(FILENAME);
+ } catch (IOException | ParserConfigurationException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static void generateHTMLFromPDF(String filename) throws ParserConfigurationException, IOException {
+ try {
+ PDDocument pdf = PDDocument.load(new File(filename));
+ PDFDomTree parser = new PDFDomTree();
+ Writer output = new PrintWriter("src/output/pdf.html", "utf-8");
+ parser.writeText(pdf, output);
+ output.close();
+ if (pdf != null) {
+ pdf.close();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java
new file mode 100644
index 0000000000..00778d16c1
--- /dev/null
+++ b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java
@@ -0,0 +1,35 @@
+package com.baeldung.pdf;
+
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.rendering.ImageType;
+import org.apache.pdfbox.rendering.PDFRenderer;
+import org.apache.pdfbox.tools.imageio.ImageIOUtil;
+
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+
+public class PDF2ImageExample {
+
+ private static final String FILENAME = "src/main/resources/pdf.pdf";
+
+ public static void main(String[] args) {
+ try {
+ generateImageFromPDF(FILENAME, "png");
+ generateImageFromPDF(FILENAME, "jpeg");
+ generateImageFromPDF(FILENAME, "gif");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static void generateImageFromPDF(String filename, String extension) throws IOException {
+ PDDocument document = PDDocument.load(new File(filename));
+ PDFRenderer pdfRenderer = new PDFRenderer(document);
+ for (int page = 0; page < document.getNumberOfPages(); ++page) {
+ BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
+ ImageIOUtil.writeImage(bim, String.format("src/output/pdf-%d.%s", page + 1, extension), 300);
+ }
+ document.close();
+ }
+}
diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java
new file mode 100644
index 0000000000..e4fb29dfaa
--- /dev/null
+++ b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java
@@ -0,0 +1,52 @@
+package com.baeldung.pdf;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import org.apache.pdfbox.cos.COSDocument;
+import org.apache.pdfbox.io.RandomAccessFile;
+import org.apache.pdfbox.pdfparser.PDFParser;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.text.PDFTextStripper;
+
+public class PDF2TextExample {
+
+ private static final String FILENAME = "src/main/resources/pdf.pdf";
+
+ public static void main(String[] args) {
+ try {
+ generateTxtFromPDF(FILENAME);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static void generateTxtFromPDF(String filename) throws IOException {
+ try {
+ File f = new File(filename);
+ String parsedText;
+ PDFParser parser = new PDFParser(new RandomAccessFile(f, "r"));
+ parser.parse();
+
+ COSDocument cosDoc = parser.getDocument();
+
+ PDFTextStripper pdfStripper = new PDFTextStripper();
+ PDDocument pdDoc = new PDDocument(cosDoc);
+
+ parsedText = pdfStripper.getText(pdDoc);
+
+ if (cosDoc != null)
+ cosDoc.close();
+ if (pdDoc != null)
+ pdDoc.close();
+
+ PrintWriter pw = new PrintWriter("src/output/pdf.txt");
+ pw.print(parsedText);
+ pw.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java
new file mode 100644
index 0000000000..1f416592ef
--- /dev/null
+++ b/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java
@@ -0,0 +1,50 @@
+package com.baeldung.pdf;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import org.apache.poi.xwpf.usermodel.BreakType;
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
+import org.apache.poi.xwpf.usermodel.XWPFParagraph;
+import org.apache.poi.xwpf.usermodel.XWPFRun;
+
+import com.itextpdf.text.pdf.PdfReader;
+import com.itextpdf.text.pdf.parser.PdfReaderContentParser;
+import com.itextpdf.text.pdf.parser.SimpleTextExtractionStrategy;
+import com.itextpdf.text.pdf.parser.TextExtractionStrategy;
+
+public class PDF2WordExample {
+
+ private static final String FILENAME = "src/main/resources/pdf.pdf";
+
+ public static void main(String[] args) {
+ try {
+ generateDocFromPDF(FILENAME);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static void generateDocFromPDF(String filename) throws IOException {
+ XWPFDocument doc = new XWPFDocument();
+
+ String pdf = filename;
+ PdfReader reader = new PdfReader(pdf);
+ PdfReaderContentParser parser = new PdfReaderContentParser(reader);
+
+ for (int i = 1; i <= reader.getNumberOfPages(); i++) {
+ TextExtractionStrategy strategy = parser.processContent(i, new SimpleTextExtractionStrategy());
+ String text = strategy.getResultantText();
+ XWPFParagraph p = doc.createParagraph();
+ XWPFRun run = p.createRun();
+ run.setText(text);
+ run.addBreak(BreakType.PAGE);
+ }
+ FileOutputStream out = new FileOutputStream("src/output/pdf.docx");
+ doc.write(out);
+ out.close();
+ reader.close();
+ doc.close();
+ }
+
+}
diff --git a/pdf/src/main/resources/pdf.pdf b/pdf/src/main/resources/pdf.pdf
new file mode 100644
index 0000000000..f45d226b39
Binary files /dev/null and b/pdf/src/main/resources/pdf.pdf differ
diff --git a/play-framework/student-api/.gitignore b/play-framework/introduction/.gitignore
similarity index 100%
rename from play-framework/student-api/.gitignore
rename to play-framework/introduction/.gitignore
diff --git a/play-framework/student-api/LICENSE b/play-framework/introduction/LICENSE
similarity index 100%
rename from play-framework/student-api/LICENSE
rename to play-framework/introduction/LICENSE
diff --git a/play-framework/student-api/README b/play-framework/introduction/README
similarity index 100%
rename from play-framework/student-api/README
rename to play-framework/introduction/README
diff --git a/play-framework/student-api/app/Filters.java b/play-framework/introduction/app/Filters.java
similarity index 100%
rename from play-framework/student-api/app/Filters.java
rename to play-framework/introduction/app/Filters.java
diff --git a/play-framework/student-api/app/Module.java b/play-framework/introduction/app/Module.java
similarity index 100%
rename from play-framework/student-api/app/Module.java
rename to play-framework/introduction/app/Module.java
diff --git a/play-framework/student-api/app/controllers/AsyncController.java b/play-framework/introduction/app/controllers/AsyncController.java
similarity index 100%
rename from play-framework/student-api/app/controllers/AsyncController.java
rename to play-framework/introduction/app/controllers/AsyncController.java
diff --git a/play-framework/student-api/app/controllers/CountController.java b/play-framework/introduction/app/controllers/CountController.java
similarity index 100%
rename from play-framework/student-api/app/controllers/CountController.java
rename to play-framework/introduction/app/controllers/CountController.java
diff --git a/play-framework/student-api/app/controllers/HomeController.java b/play-framework/introduction/app/controllers/HomeController.java
similarity index 100%
rename from play-framework/student-api/app/controllers/HomeController.java
rename to play-framework/introduction/app/controllers/HomeController.java
diff --git a/play-framework/student-api/app/controllers/StudentController.java b/play-framework/introduction/app/controllers/StudentController.java
similarity index 100%
rename from play-framework/student-api/app/controllers/StudentController.java
rename to play-framework/introduction/app/controllers/StudentController.java
diff --git a/play-framework/student-api/app/filters/ExampleFilter.java b/play-framework/introduction/app/filters/ExampleFilter.java
similarity index 100%
rename from play-framework/student-api/app/filters/ExampleFilter.java
rename to play-framework/introduction/app/filters/ExampleFilter.java
diff --git a/play-framework/student-api/app/models/Student.java b/play-framework/introduction/app/models/Student.java
similarity index 100%
rename from play-framework/student-api/app/models/Student.java
rename to play-framework/introduction/app/models/Student.java
diff --git a/play-framework/student-api/app/models/StudentStore.java b/play-framework/introduction/app/models/StudentStore.java
similarity index 100%
rename from play-framework/student-api/app/models/StudentStore.java
rename to play-framework/introduction/app/models/StudentStore.java
diff --git a/play-framework/student-api/app/services/ApplicationTimer.java b/play-framework/introduction/app/services/ApplicationTimer.java
similarity index 100%
rename from play-framework/student-api/app/services/ApplicationTimer.java
rename to play-framework/introduction/app/services/ApplicationTimer.java
diff --git a/play-framework/student-api/app/services/AtomicCounter.java b/play-framework/introduction/app/services/AtomicCounter.java
similarity index 100%
rename from play-framework/student-api/app/services/AtomicCounter.java
rename to play-framework/introduction/app/services/AtomicCounter.java
diff --git a/play-framework/student-api/app/services/Counter.java b/play-framework/introduction/app/services/Counter.java
similarity index 100%
rename from play-framework/student-api/app/services/Counter.java
rename to play-framework/introduction/app/services/Counter.java
diff --git a/play-framework/student-api/app/util/Util.java b/play-framework/introduction/app/util/Util.java
similarity index 100%
rename from play-framework/student-api/app/util/Util.java
rename to play-framework/introduction/app/util/Util.java
diff --git a/play-framework/student-api/app/views/index.scala.html b/play-framework/introduction/app/views/index.scala.html
similarity index 100%
rename from play-framework/student-api/app/views/index.scala.html
rename to play-framework/introduction/app/views/index.scala.html
diff --git a/play-framework/student-api/app/views/main.scala.html b/play-framework/introduction/app/views/main.scala.html
similarity index 100%
rename from play-framework/student-api/app/views/main.scala.html
rename to play-framework/introduction/app/views/main.scala.html
diff --git a/play-framework/student-api/bin/activator b/play-framework/introduction/bin/activator
similarity index 100%
rename from play-framework/student-api/bin/activator
rename to play-framework/introduction/bin/activator
diff --git a/play-framework/student-api/bin/activator.bat b/play-framework/introduction/bin/activator.bat
similarity index 100%
rename from play-framework/student-api/bin/activator.bat
rename to play-framework/introduction/bin/activator.bat
diff --git a/play-framework/student-api/build.sbt b/play-framework/introduction/build.sbt
similarity index 100%
rename from play-framework/student-api/build.sbt
rename to play-framework/introduction/build.sbt
diff --git a/play-framework/student-api/conf/application.conf b/play-framework/introduction/conf/application.conf
similarity index 100%
rename from play-framework/student-api/conf/application.conf
rename to play-framework/introduction/conf/application.conf
diff --git a/play-framework/student-api/conf/logback.xml b/play-framework/introduction/conf/logback.xml
similarity index 100%
rename from play-framework/student-api/conf/logback.xml
rename to play-framework/introduction/conf/logback.xml
diff --git a/play-framework/student-api/conf/routes b/play-framework/introduction/conf/routes
similarity index 100%
rename from play-framework/student-api/conf/routes
rename to play-framework/introduction/conf/routes
diff --git a/play-framework/student-api/libexec/activator-launch-1.3.10.jar b/play-framework/introduction/libexec/activator-launch-1.3.10.jar
similarity index 100%
rename from play-framework/student-api/libexec/activator-launch-1.3.10.jar
rename to play-framework/introduction/libexec/activator-launch-1.3.10.jar
diff --git a/play-framework/student-api/project/build.properties b/play-framework/introduction/project/build.properties
similarity index 100%
rename from play-framework/student-api/project/build.properties
rename to play-framework/introduction/project/build.properties
diff --git a/play-framework/student-api/project/plugins.sbt b/play-framework/introduction/project/plugins.sbt
similarity index 100%
rename from play-framework/student-api/project/plugins.sbt
rename to play-framework/introduction/project/plugins.sbt
diff --git a/play-framework/student-api/public/images/favicon.png b/play-framework/introduction/public/images/favicon.png
similarity index 100%
rename from play-framework/student-api/public/images/favicon.png
rename to play-framework/introduction/public/images/favicon.png
diff --git a/play-framework/student-api/public/javascripts/hello.js b/play-framework/introduction/public/javascripts/hello.js
similarity index 100%
rename from play-framework/student-api/public/javascripts/hello.js
rename to play-framework/introduction/public/javascripts/hello.js
diff --git a/play-framework/student-api/public/stylesheets/main.css b/play-framework/introduction/public/stylesheets/main.css
similarity index 100%
rename from play-framework/student-api/public/stylesheets/main.css
rename to play-framework/introduction/public/stylesheets/main.css
diff --git a/play-framework/introduction/test/ApplicationTest.java b/play-framework/introduction/test/ApplicationTest.java
new file mode 100644
index 0000000000..1133978e9a
--- /dev/null
+++ b/play-framework/introduction/test/ApplicationTest.java
@@ -0,0 +1,172 @@
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Arrays;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.junit.Before;
+import org.junit.Test;
+import model.Student;
+import play.test.*;
+import static play.test.Helpers.*;
+
+public class ApplicationTest{
+ private static final String BASE_URL = "http://localhost:9000";
+
+ @Test
+public void testInServer() throws Exception {
+ TestServer server = testServer(3333);
+ running(server, () -> {
+ try {
+ WSClient ws = play.libs.ws.WS.newClient(3333);
+ CompletionStage completionStage = ws.url("/").get();
+ WSResponse response = completionStage.toCompletableFuture().get();
+ ws.close();
+ assertEquals(OK, response.getStatus());
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+ });
+}
+ @Test
+ public void whenCreatesRecord_thenCorrect() {
+ Student student = new Student("jody", "west", 50);
+ JSONObject obj = new JSONObject(makeRequest(BASE_URL, "POST", new JSONObject(student)));
+ assertTrue(obj.getBoolean("isSuccessfull"));
+ JSONObject body = obj.getJSONObject("body");
+ assertEquals(student.getAge(), body.getInt("age"));
+ assertEquals(student.getFirstName(), body.getString("firstName"));
+ assertEquals(student.getLastName(), body.getString("lastName"));
+ }
+
+ @Test
+ public void whenDeletesCreatedRecord_thenCorrect() {
+ Student student = new Student("Usain", "Bolt", 25);
+ JSONObject ob1 = new JSONObject(makeRequest(BASE_URL, "POST", new JSONObject(student))).getJSONObject("body");
+ int id = ob1.getInt("id");
+ JSONObject obj1 = new JSONObject(makeRequest(BASE_URL + "/" + id, "POST", new JSONObject()));
+ assertTrue(obj1.getBoolean("isSuccessfull"));
+ makeRequest(BASE_URL + "/" + id, "DELETE", null);
+ JSONObject obj2 = new JSONObject(makeRequest(BASE_URL + "/" + id, "POST", new JSONObject()));
+ assertFalse(obj2.getBoolean("isSuccessfull"));
+ }
+
+ @Test
+ public void whenUpdatesCreatedRecord_thenCorrect() {
+ Student student = new Student("john", "doe", 50);
+ JSONObject body1 = new JSONObject(makeRequest(BASE_URL, "POST", new JSONObject(student))).getJSONObject("body");
+ assertEquals(student.getAge(), body1.getInt("age"));
+ int newAge = 60;
+ body1.put("age", newAge);
+ JSONObject body2 = new JSONObject(makeRequest(BASE_URL, "PUT", body1)).getJSONObject("body");
+ assertFalse(student.getAge() == body2.getInt("age"));
+ assertTrue(newAge == body2.getInt("age"));
+ }
+
+ @Test
+ public void whenGetsAllRecords_thenCorrect() {
+ Student student1 = new Student("jane", "daisy", 50);
+ Student student2 = new Student("john", "daniel", 60);
+ Student student3 = new Student("don", "mason", 55);
+ Student student4 = new Student("scarlet", "ohara", 90);
+
+ makeRequest(BASE_URL, "POST", new JSONObject(student1));
+ makeRequest(BASE_URL, "POST", new JSONObject(student2));
+ makeRequest(BASE_URL, "POST", new JSONObject(student3));
+ makeRequest(BASE_URL, "POST", new JSONObject(student4));
+
+ JSONObject objects = new JSONObject(makeRequest(BASE_URL, "GET", null));
+ assertTrue(objects.getBoolean("isSuccessfull"));
+ JSONArray array = objects.getJSONArray("body");
+ assertTrue(array.length() >= 4);
+ }
+
+ public static String makeRequest(String myUrl, String httpMethod, JSONObject parameters) {
+
+ URL url = null;
+ try {
+ url = new URL(myUrl);
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ }
+ HttpURLConnection conn = null;
+ try {
+
+ conn = (HttpURLConnection) url.openConnection();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ conn.setDoInput(true);
+
+ conn.setReadTimeout(10000);
+
+ conn.setRequestProperty("Content-Type", "application/json");
+ DataOutputStream dos = null;
+ int respCode = 0;
+ String inputString = null;
+ try {
+ conn.setRequestMethod(httpMethod);
+
+ if (Arrays.asList("POST", "PUT").contains(httpMethod)) {
+ String params = parameters.toString();
+
+ conn.setDoOutput(true);
+
+ dos = new DataOutputStream(conn.getOutputStream());
+ dos.writeBytes(params);
+ dos.flush();
+ dos.close();
+ }
+ respCode = conn.getResponseCode();
+ if (respCode != 200 && respCode != 201) {
+ String error = inputStreamToString(conn.getErrorStream());
+ return error;
+ }
+ inputString = inputStreamToString(conn.getInputStream());
+
+ } catch (IOException e) {
+
+ e.printStackTrace();
+ }
+ return inputString;
+ }
+
+ public static String inputStreamToString(InputStream is) {
+ BufferedReader br = null;
+ StringBuilder sb = new StringBuilder();
+
+ String line;
+ try {
+
+ br = new BufferedReader(new InputStreamReader(is));
+ while ((line = br.readLine()) != null) {
+ sb.append(line);
+ }
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ if (br != null) {
+ try {
+ br.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ return sb.toString();
+
+ }
+}
diff --git a/routing-in-play/.gitignore b/play-framework/routing-in-play/.gitignore
similarity index 100%
rename from routing-in-play/.gitignore
rename to play-framework/routing-in-play/.gitignore
diff --git a/routing-in-play/LICENSE b/play-framework/routing-in-play/LICENSE
similarity index 100%
rename from routing-in-play/LICENSE
rename to play-framework/routing-in-play/LICENSE
diff --git a/routing-in-play/README b/play-framework/routing-in-play/README
similarity index 100%
rename from routing-in-play/README
rename to play-framework/routing-in-play/README
diff --git a/routing-in-play/app/Filters.java b/play-framework/routing-in-play/app/Filters.java
similarity index 100%
rename from routing-in-play/app/Filters.java
rename to play-framework/routing-in-play/app/Filters.java
diff --git a/routing-in-play/app/Module.java b/play-framework/routing-in-play/app/Module.java
similarity index 100%
rename from routing-in-play/app/Module.java
rename to play-framework/routing-in-play/app/Module.java
diff --git a/routing-in-play/app/controllers/HomeController.java b/play-framework/routing-in-play/app/controllers/HomeController.java
similarity index 100%
rename from routing-in-play/app/controllers/HomeController.java
rename to play-framework/routing-in-play/app/controllers/HomeController.java
diff --git a/routing-in-play/app/filters/ExampleFilter.java b/play-framework/routing-in-play/app/filters/ExampleFilter.java
similarity index 100%
rename from routing-in-play/app/filters/ExampleFilter.java
rename to play-framework/routing-in-play/app/filters/ExampleFilter.java
diff --git a/routing-in-play/app/services/ApplicationTimer.java b/play-framework/routing-in-play/app/services/ApplicationTimer.java
similarity index 100%
rename from routing-in-play/app/services/ApplicationTimer.java
rename to play-framework/routing-in-play/app/services/ApplicationTimer.java
diff --git a/routing-in-play/app/services/AtomicCounter.java b/play-framework/routing-in-play/app/services/AtomicCounter.java
similarity index 100%
rename from routing-in-play/app/services/AtomicCounter.java
rename to play-framework/routing-in-play/app/services/AtomicCounter.java
diff --git a/routing-in-play/app/services/Counter.java b/play-framework/routing-in-play/app/services/Counter.java
similarity index 100%
rename from routing-in-play/app/services/Counter.java
rename to play-framework/routing-in-play/app/services/Counter.java
diff --git a/routing-in-play/app/views/index.scala.html b/play-framework/routing-in-play/app/views/index.scala.html
similarity index 100%
rename from routing-in-play/app/views/index.scala.html
rename to play-framework/routing-in-play/app/views/index.scala.html
diff --git a/routing-in-play/app/views/main.scala.html b/play-framework/routing-in-play/app/views/main.scala.html
similarity index 100%
rename from routing-in-play/app/views/main.scala.html
rename to play-framework/routing-in-play/app/views/main.scala.html
diff --git a/routing-in-play/bin/activator b/play-framework/routing-in-play/bin/activator
similarity index 100%
rename from routing-in-play/bin/activator
rename to play-framework/routing-in-play/bin/activator
diff --git a/routing-in-play/bin/activator.bat b/play-framework/routing-in-play/bin/activator.bat
similarity index 100%
rename from routing-in-play/bin/activator.bat
rename to play-framework/routing-in-play/bin/activator.bat
diff --git a/routing-in-play/build.sbt b/play-framework/routing-in-play/build.sbt
similarity index 100%
rename from routing-in-play/build.sbt
rename to play-framework/routing-in-play/build.sbt
diff --git a/routing-in-play/conf/application.conf b/play-framework/routing-in-play/conf/application.conf
similarity index 100%
rename from routing-in-play/conf/application.conf
rename to play-framework/routing-in-play/conf/application.conf
diff --git a/routing-in-play/conf/logback.xml b/play-framework/routing-in-play/conf/logback.xml
similarity index 100%
rename from routing-in-play/conf/logback.xml
rename to play-framework/routing-in-play/conf/logback.xml
diff --git a/routing-in-play/conf/routes b/play-framework/routing-in-play/conf/routes
similarity index 100%
rename from routing-in-play/conf/routes
rename to play-framework/routing-in-play/conf/routes
diff --git a/routing-in-play/libexec/activator-launch-1.3.10.jar b/play-framework/routing-in-play/libexec/activator-launch-1.3.10.jar
similarity index 100%
rename from routing-in-play/libexec/activator-launch-1.3.10.jar
rename to play-framework/routing-in-play/libexec/activator-launch-1.3.10.jar
diff --git a/routing-in-play/project/build.properties b/play-framework/routing-in-play/project/build.properties
similarity index 100%
rename from routing-in-play/project/build.properties
rename to play-framework/routing-in-play/project/build.properties
diff --git a/routing-in-play/project/plugins.sbt b/play-framework/routing-in-play/project/plugins.sbt
similarity index 100%
rename from routing-in-play/project/plugins.sbt
rename to play-framework/routing-in-play/project/plugins.sbt
diff --git a/routing-in-play/public/images/favicon.png b/play-framework/routing-in-play/public/images/favicon.png
similarity index 100%
rename from routing-in-play/public/images/favicon.png
rename to play-framework/routing-in-play/public/images/favicon.png
diff --git a/routing-in-play/public/javascripts/hello.js b/play-framework/routing-in-play/public/javascripts/hello.js
similarity index 100%
rename from routing-in-play/public/javascripts/hello.js
rename to play-framework/routing-in-play/public/javascripts/hello.js
diff --git a/routing-in-play/public/stylesheets/main.css b/play-framework/routing-in-play/public/stylesheets/main.css
similarity index 100%
rename from routing-in-play/public/stylesheets/main.css
rename to play-framework/routing-in-play/public/stylesheets/main.css
diff --git a/routing-in-play/test/ApplicationTest.java b/play-framework/routing-in-play/test/ApplicationTest.java
similarity index 100%
rename from routing-in-play/test/ApplicationTest.java
rename to play-framework/routing-in-play/test/ApplicationTest.java
diff --git a/routing-in-play/test/IntegrationTest.java b/play-framework/routing-in-play/test/IntegrationTest.java
similarity index 100%
rename from routing-in-play/test/IntegrationTest.java
rename to play-framework/routing-in-play/test/IntegrationTest.java
diff --git a/pom.xml b/pom.xml
index 466e2fe939..705b66bf16 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,5 +1,5 @@
-
+
+
4.0.0
com.baeldung
parent-modules
@@ -14,97 +14,110 @@
- assertj
+ annotations
apache-cxf
-
- autovalue-tutorial
+ apache-fop
+ assertj
+ autovalue
cdi
- core-java
- core-java-8
- couchbase-sdk
+ core-java
+ couchbase-sdk
- dozer
- dependency-injection
deltaspike
+ dozer
+
+ feign
+ flyway
- patterns
- feign-client
+
gson
guava
guava18
guava19
handling-spring-static-resources
+ hazelcast
httpclient
+ hystrix
immutables
jackson
+ java-cassandra
javaxval
+ jee7
jjwt
- jooq-spring
jpa-storedprocedure
- json
+ jsf
json-path
+ json
junit5
- jee7schedule
-
log4j
+ lombok
+ mapstruct
mockito
mocks
- mutation-testing
orika
+ patterns
+
querydsl
+ redis
rest-assured
rest-testing
resteasy
- spring-all
+ selenium-junit-testng
spring-akka
+ spring-all
spring-apache-camel
spring-autowire
spring-batch
spring-boot
+ spring-cloud-data-flow
+ spring-cloud
+ spring-core
spring-cucumber
spring-data-cassandra
spring-data-couchbase-2
+ spring-data-dynamodb
spring-data-elasticsearch
- spring-data-neo4j
spring-data-mongodb
+ spring-data-neo4j
spring-data-redis
spring-data-rest
+ spring-dispatcher-servlet
spring-exceptions
spring-freemarker
spring-hibernate3
spring-hibernate4
- spring-jpa
+ spring-integration
spring-jms
+ spring-jooq
+ spring-jpa
spring-katharsis
spring-mockito
spring-mvc-java
spring-mvc-no-xml
- spring-mvc-xml
spring-mvc-tiles
+ spring-mvc-velocity
+ spring-mvc-web-vs-initializer
+ spring-mvc-xml
spring-openid
spring-protobuf
spring-quartz
- spring-spel
- spring-rest
spring-rest-angular
spring-rest-docs
- spring-cloud
- spring-cloud-data-flow
-
+ spring-rest
spring-security-basic-auth
spring-security-custom-permission
spring-security-mvc-custom
@@ -113,26 +126,26 @@
spring-security-mvc-login
spring-security-mvc-persisted-remember-me
spring-security-mvc-session
- spring-security-rest
spring-security-rest-basic-auth
spring-security-rest-custom
spring-security-rest-digest-auth
spring-security-rest-full
+ spring-security-rest
spring-security-x509
- spring-thymeleaf
- spring-zuul
- spring-mvc-velocity
spring-session
+ spring-spel
+ spring-thymeleaf
+ spring-userservice
+ spring-zuul
- jsf
- xml
- lombok
- redis
+ testing
wicket
- xstream
- java-cassandra
- annotations
-
-
+ xml
+ xmlunit2
+ xstream
+ pdf
+
+
+
\ No newline at end of file
diff --git a/printscreen/pom.xml b/printscreen/pom.xml
deleted file mode 100644
index ddb813a7a2..0000000000
--- a/printscreen/pom.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
- 4.0.0
-
- com.baeldung
- corejava-printscreen
- 1.0-SNAPSHOT
- jar
-
- How to Print Screen in Java
- https://github.com/eugenp/tutorials
-
-
- UTF-8
- 4.12
-
-
-
-
- junit
- junit
- ${junit.version}
- test
-
-
-
diff --git a/printscreen/src/main/java/org/baeldung/corejava/Screenshot.java b/printscreen/src/main/java/org/baeldung/corejava/Screenshot.java
deleted file mode 100644
index d33761932f..0000000000
--- a/printscreen/src/main/java/org/baeldung/corejava/Screenshot.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.baeldung.corejava;;
-
-import javax.imageio.ImageIO;
-import java.awt.*;
-import java.awt.image.BufferedImage;
-import java.io.File;
-
-public class Screenshot {
-
- private String filePath;
- private String filenamePrefix;
- private String fileType;
- private int timeToWait;
-
- public Screenshot(String filePath, String filenamePrefix,
- String fileType, int timeToWait) {
- this.filePath = filePath;
- this.filenamePrefix = filenamePrefix;
- this.fileType = fileType;
- this.timeToWait = timeToWait;
- }
-
- public void getScreenshot() throws Exception {
- Thread.sleep(timeToWait);
- Rectangle rectangle = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
- Robot robot = new Robot();
- BufferedImage img = robot.createScreenCapture(rectangle);
- ImageIO.write(img, fileType, setupFileNamePath());
- }
-
- private File setupFileNamePath() {
- return new File(filePath + filenamePrefix + "." + fileType);
- }
-
- private Rectangle getScreenSizedRectangle(final Dimension d) {
- return new Rectangle(0, 0, d.width, d.height);
- }
-}
diff --git a/printscreen/src/test/java/org/baeldung/corejava/ScreenshotTest.java b/printscreen/src/test/java/org/baeldung/corejava/ScreenshotTest.java
deleted file mode 100644
index 588c2eea78..0000000000
--- a/printscreen/src/test/java/org/baeldung/corejava/ScreenshotTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.baeldung.corejava;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-
-import static org.junit.Assert.*;
-
-
-public class ScreenshotTest {
-
- private Screenshot screenshot;
- private String filePath;
- private String fileName;
- private String fileType;
- private File file;
-
- @Before
- public void setUp() throws Exception {
- filePath = "";
- fileName = "Screenshot";
- fileType = "jpg";
- file = new File(filePath + fileName + "." + fileType);
- screenshot = new Screenshot(filePath, fileName, fileType, 2000);
- }
-
- @Test
- public void testGetScreenshot() throws Exception {
- screenshot.getScreenshot();
- assertTrue(file.exists());
- }
-
- @After
- public void tearDown() throws Exception {
- file.delete();
- }
-}
\ No newline at end of file
diff --git a/querydsl/pom.xml b/querydsl/pom.xml
index bed0cf90e5..13528526ea 100644
--- a/querydsl/pom.xml
+++ b/querydsl/pom.xml
@@ -20,6 +20,7 @@
5.2.1.Final
4.1.3
1.7.21
+ 2.19.1
@@ -166,7 +167,55 @@
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${maven-surefire-plugin.version}
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/querydsl/src/test/java/org/baeldung/dao/PersonDaoTest.java b/querydsl/src/test/java/org/baeldung/dao/PersonDaoIntegrationTest.java
similarity index 98%
rename from querydsl/src/test/java/org/baeldung/dao/PersonDaoTest.java
rename to querydsl/src/test/java/org/baeldung/dao/PersonDaoIntegrationTest.java
index 0e5996a8c8..a666aea8da 100644
--- a/querydsl/src/test/java/org/baeldung/dao/PersonDaoTest.java
+++ b/querydsl/src/test/java/org/baeldung/dao/PersonDaoIntegrationTest.java
@@ -17,7 +17,7 @@ import junit.framework.Assert;
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@TransactionConfiguration(defaultRollback = true)
-public class PersonDaoTest {
+public class PersonDaoIntegrationTest {
@Autowired
private PersonDao personDao;
diff --git a/redis/src/test/java/com/baeldung/JedisTest.java b/redis/src/test/java/com/baeldung/JedisTest.java
index 766fd7b5e9..582bb266aa 100644
--- a/redis/src/test/java/com/baeldung/JedisTest.java
+++ b/redis/src/test/java/com/baeldung/JedisTest.java
@@ -1,28 +1,15 @@
package com.baeldung;
+import org.junit.*;
+import redis.clients.jedis.*;
+import redis.embedded.RedisServer;
+
import java.io.IOException;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import redis.clients.jedis.Jedis;
-import redis.clients.jedis.JedisPool;
-import redis.clients.jedis.JedisPoolConfig;
-import redis.clients.jedis.Pipeline;
-import redis.clients.jedis.Response;
-import redis.clients.jedis.Transaction;
-import redis.embedded.RedisServer;
-
-/**
- * Unit test for Redis Java library - Jedis.
- */
public class JedisTest {
private Jedis jedis;
@@ -140,9 +127,9 @@ public class JedisTest {
scores.put("PlayerTwo", 1500.0);
scores.put("PlayerThree", 8200.0);
- for (String player : scores.keySet()) {
+ scores.keySet().forEach(player -> {
jedis.zadd(key, scores.get(player), player);
- }
+ });
Set players = jedis.zrevrange(key, 0, 1);
Assert.assertEquals("PlayerThree", players.iterator().next());
diff --git a/rest-testing/pom.xml b/rest-testing/pom.xml
index 819e8de8a5..90c160af15 100644
--- a/rest-testing/pom.xml
+++ b/rest-testing/pom.xml
@@ -148,12 +148,54 @@
org.apache.maven.plugins
maven-surefire-plugin
${maven-surefire-plugin.version}
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*UnitTest.java
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
+
2.7.8
diff --git a/rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberTest.java b/rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberIntegrationTest.java
similarity index 84%
rename from rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberTest.java
rename to rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberIntegrationTest.java
index 041de592e9..f80178a43d 100644
--- a/rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberTest.java
+++ b/rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberIntegrationTest.java
@@ -6,5 +6,5 @@ import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(features = "classpath:Feature")
-public class CucumberTest {
+public class CucumberIntegrationTest {
}
\ No newline at end of file
diff --git a/resteasy/pom.xml b/resteasy/pom.xml
index ec9e87b0d1..04e8576e1f 100644
--- a/resteasy/pom.xml
+++ b/resteasy/pom.xml
@@ -10,6 +10,8 @@
3.0.14.Final
+ 2.19.1
+ 1.6.0
@@ -23,6 +25,35 @@
1.8
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${maven-surefire-plugin.version}
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+ org.codehaus.cargo
+ cargo-maven2-plugin
+ ${cargo-maven2-plugin.version}
+
+ true
+
+ jetty8x
+ embedded
+
+
+
+ 8082
+
+
+
+
@@ -73,5 +104,66 @@
+
+
+ live
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*IntegrationTest.java
+
+
+ **/*LiveTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+ org.codehaus.cargo
+ cargo-maven2-plugin
+ ${cargo-maven2-plugin.version}
+
+ false
+
+
+
+ start-server
+ pre-integration-test
+
+ start
+
+
+
+ stop-server
+ post-integration-test
+
+ stop
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resteasy/src/test/java/com/baeldung/server/RestEasyClientTest.java b/resteasy/src/test/java/com/baeldung/server/RestEasyClientLiveTest.java
similarity index 61%
rename from resteasy/src/test/java/com/baeldung/server/RestEasyClientTest.java
rename to resteasy/src/test/java/com/baeldung/server/RestEasyClientLiveTest.java
index ef18b0f23f..7e709edb96 100644
--- a/resteasy/src/test/java/com/baeldung/server/RestEasyClientTest.java
+++ b/resteasy/src/test/java/com/baeldung/server/RestEasyClientLiveTest.java
@@ -1,7 +1,15 @@
package com.baeldung.server;
-import com.baeldung.client.ServicesInterface;
-import com.baeldung.model.Movie;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.text.SimpleDateFormat;
+import java.util.List;
+import java.util.Locale;
+
+import javax.naming.NamingException;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriBuilder;
+
import org.apache.commons.io.IOUtils;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
@@ -14,18 +22,13 @@ import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
import org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine;
import org.junit.Before;
import org.junit.Test;
-import javax.naming.NamingException;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriBuilder;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.text.SimpleDateFormat;
-import java.util.List;
-import java.util.Locale;
-public class RestEasyClientTest {
+import com.baeldung.client.ServicesInterface;
+import com.baeldung.model.Movie;
- public static final UriBuilder FULL_PATH = UriBuilder.fromPath("http://127.0.0.1:8080/RestEasyTutorial/rest");
+public class RestEasyClientLiveTest {
+
+ public static final UriBuilder FULL_PATH = UriBuilder.fromPath("http://127.0.0.1:8082/RestEasyTutorial/rest");
Movie transformerMovie = null;
Movie batmanMovie = null;
ObjectMapper jsonMapper = null;
@@ -35,22 +38,22 @@ public class RestEasyClientTest {
jsonMapper = new ObjectMapper().configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
jsonMapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
- SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH);
+ final SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH);
jsonMapper.setDateFormat(sdf);
- try (InputStream inputStream = new RestEasyClientTest().getClass().getResourceAsStream("./movies/transformer.json")) {
- String transformerMovieAsString = String.format(IOUtils.toString(inputStream, StandardCharsets.UTF_8));
+ try (InputStream inputStream = new RestEasyClientLiveTest().getClass().getResourceAsStream("./movies/transformer.json")) {
+ final String transformerMovieAsString = String.format(IOUtils.toString(inputStream, StandardCharsets.UTF_8));
transformerMovie = jsonMapper.readValue(transformerMovieAsString, Movie.class);
- } catch (Exception e) {
+ } catch (final Exception e) {
e.printStackTrace();
throw new RuntimeException("Test is going to die ...", e);
}
- try (InputStream inputStream = new RestEasyClientTest().getClass().getResourceAsStream("./movies/batman.json")) {
- String batmanMovieAsString = String.format(IOUtils.toString(inputStream, StandardCharsets.UTF_8));
+ try (InputStream inputStream = new RestEasyClientLiveTest().getClass().getResourceAsStream("./movies/batman.json")) {
+ final String batmanMovieAsString = String.format(IOUtils.toString(inputStream, StandardCharsets.UTF_8));
batmanMovie = jsonMapper.readValue(batmanMovieAsString, Movie.class);
- } catch (Exception e) {
+ } catch (final Exception e) {
throw new RuntimeException("Test is going to die ...", e);
}
}
@@ -58,41 +61,41 @@ public class RestEasyClientTest {
@Test
public void testListAllMovies() {
- ResteasyClient client = new ResteasyClientBuilder().build();
- ResteasyWebTarget target = client.target(FULL_PATH);
- ServicesInterface proxy = target.proxy(ServicesInterface.class);
+ final ResteasyClient client = new ResteasyClientBuilder().build();
+ final ResteasyWebTarget target = client.target(FULL_PATH);
+ final ServicesInterface proxy = target.proxy(ServicesInterface.class);
Response moviesResponse = proxy.addMovie(transformerMovie);
moviesResponse.close();
moviesResponse = proxy.addMovie(batmanMovie);
moviesResponse.close();
- List movies = proxy.listMovies();
+ final List movies = proxy.listMovies();
System.out.println(movies);
}
@Test
public void testMovieByImdbId() {
- String transformerImdbId = "tt0418279";
+ final String transformerImdbId = "tt0418279";
- ResteasyClient client = new ResteasyClientBuilder().build();
- ResteasyWebTarget target = client.target(FULL_PATH);
- ServicesInterface proxy = target.proxy(ServicesInterface.class);
+ final ResteasyClient client = new ResteasyClientBuilder().build();
+ final ResteasyWebTarget target = client.target(FULL_PATH);
+ final ServicesInterface proxy = target.proxy(ServicesInterface.class);
- Response moviesResponse = proxy.addMovie(transformerMovie);
+ final Response moviesResponse = proxy.addMovie(transformerMovie);
moviesResponse.close();
- Movie movies = proxy.movieByImdbId(transformerImdbId);
+ final Movie movies = proxy.movieByImdbId(transformerImdbId);
System.out.println(movies);
}
@Test
public void testAddMovie() {
- ResteasyClient client = new ResteasyClientBuilder().build();
- ResteasyWebTarget target = client.target(FULL_PATH);
- ServicesInterface proxy = target.proxy(ServicesInterface.class);
+ final ResteasyClient client = new ResteasyClientBuilder().build();
+ final ResteasyWebTarget target = client.target(FULL_PATH);
+ final ServicesInterface proxy = target.proxy(ServicesInterface.class);
Response moviesResponse = proxy.addMovie(batmanMovie);
moviesResponse.close();
@@ -109,17 +112,15 @@ public class RestEasyClientTest {
@Test
public void testAddMovieMultiConnection() {
- PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
- CloseableHttpClient httpClient = HttpClients.custom()
- .setConnectionManager(cm)
- .build();
- ApacheHttpClient4Engine engine = new ApacheHttpClient4Engine(httpClient);
- ResteasyClient client = new ResteasyClientBuilder().httpEngine(engine).build();
- ResteasyWebTarget target = client.target(FULL_PATH);
- ServicesInterface proxy = target.proxy(ServicesInterface.class);
+ final PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
+ final CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build();
+ final ApacheHttpClient4Engine engine = new ApacheHttpClient4Engine(httpClient);
+ final ResteasyClient client = new ResteasyClientBuilder().httpEngine(engine).build();
+ final ResteasyWebTarget target = client.target(FULL_PATH);
+ final ServicesInterface proxy = target.proxy(ServicesInterface.class);
- Response batmanResponse = proxy.addMovie(batmanMovie);
- Response transformerResponse = proxy.addMovie(transformerMovie);
+ final Response batmanResponse = proxy.addMovie(batmanMovie);
+ final Response transformerResponse = proxy.addMovie(transformerMovie);
if (batmanResponse.getStatus() != Response.Status.CREATED.getStatusCode()) {
System.out.println("Batman Movie creation Failed : HTTP error code : " + batmanResponse.getStatus());
@@ -132,16 +133,14 @@ public class RestEasyClientTest {
transformerResponse.close();
cm.close();
-
-
}
@Test
public void testDeleteMovie() {
- ResteasyClient client = new ResteasyClientBuilder().build();
- ResteasyWebTarget target = client.target(FULL_PATH);
- ServicesInterface proxy = target.proxy(ServicesInterface.class);
+ final ResteasyClient client = new ResteasyClientBuilder().build();
+ final ResteasyWebTarget target = client.target(FULL_PATH);
+ final ServicesInterface proxy = target.proxy(ServicesInterface.class);
Response moviesResponse = proxy.addMovie(batmanMovie);
moviesResponse.close();
@@ -159,9 +158,9 @@ public class RestEasyClientTest {
@Test
public void testUpdateMovie() {
- ResteasyClient client = new ResteasyClientBuilder().build();
- ResteasyWebTarget target = client.target(FULL_PATH);
- ServicesInterface proxy = target.proxy(ServicesInterface.class);
+ final ResteasyClient client = new ResteasyClientBuilder().build();
+ final ResteasyWebTarget target = client.target(FULL_PATH);
+ final ServicesInterface proxy = target.proxy(ServicesInterface.class);
Response moviesResponse = proxy.addMovie(batmanMovie);
moviesResponse.close();
diff --git a/selenium-junit-testng/pom.xml b/selenium-junit-testng/pom.xml
index bf5a082fba..cc96ea8529 100644
--- a/selenium-junit-testng/pom.xml
+++ b/selenium-junit-testng/pom.xml
@@ -20,29 +20,50 @@
maven-surefire-plugin
2.19.1
-
+ true
- Test*.java
+ **/*UnitTest.java
+
+
+
+ live
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.19.1
+
+
+ **/*LiveTest.java
+
+
+
+
+
+
+
+
org.seleniumhq.selenium
selenium-java
- 2.53.1
+ 3.0.1
junit
junit
- 4.8.1
+ 4.12
org.testng
testng
- 6.9.10
+ 6.9.13.6
\ No newline at end of file
diff --git a/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java b/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java
index d8b248df81..58d47c0162 100644
--- a/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java
+++ b/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java
@@ -1,15 +1,24 @@
package main.java.com.baeldung.selenium;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.concurrent.TimeUnit;
+
+import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class SeleniumExample {
private WebDriver webDriver;
private String url = "http://www.baeldung.com/";
-
+
public SeleniumExample() {
+ System.setProperty("webdriver.firefox.marionette", "C:\\selenium\\geckodriver.exe");
webDriver = new FirefoxDriver();
+ webDriver.manage().window().maximize();
+ webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
webDriver.get(url);
}
@@ -21,4 +30,32 @@ public class SeleniumExample {
return webDriver.getTitle();
}
+ public void getAboutBaeldungPage() {
+ closeOverlay();
+ clickAboutLink();
+ clickAboutUsLink();
+ }
+
+ private void closeOverlay() {
+ List webElementList = webDriver.findElements(By.tagName("a"));
+ try {
+ if (webElementList != null && !webElementList.isEmpty()) {
+ webElementList.stream().filter(webElement -> "Close".equalsIgnoreCase(webElement.getAttribute("title"))).findAny().orElseThrow(NoSuchElementException::new).click();
+ }
+ } catch (NoSuchElementException exception) {
+ exception.printStackTrace();
+ }
+ }
+
+ private void clickAboutLink() {
+ webDriver.findElement(By.partialLinkText("About")).click();
+ }
+
+ private void clickAboutUsLink() {
+ webDriver.findElement(By.partialLinkText("About Baeldung.")).click();
+ }
+
+ public boolean isAuthorInformationAvailable() {
+ return webDriver.findElement(By.xpath("//*[contains(text(), 'Eugen – an engineer')]")).isDisplayed();
+ }
}
diff --git a/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumWithJUnitLiveTest.java b/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumWithJUnitLiveTest.java
new file mode 100644
index 0000000000..f8d9a5dada
--- /dev/null
+++ b/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumWithJUnitLiveTest.java
@@ -0,0 +1,41 @@
+package test.java.com.baeldung.selenium.junit;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+import main.java.com.baeldung.selenium.SeleniumExample;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class SeleniumWithJUnitLiveTest {
+
+ private static SeleniumExample seleniumExample;
+ private String expecteTilteAboutBaeldungPage = "About Baeldung | Baeldung";
+
+ @BeforeClass
+ public static void setUp() {
+ seleniumExample = new SeleniumExample();
+ }
+
+ @AfterClass
+ public static void tearDown() {
+ seleniumExample.closeWindow();
+ }
+
+ @Test
+ public void whenAboutBaeldungIsLoaded_thenAboutEugenIsMentionedOnPage() {
+ try {
+ seleniumExample.getAboutBaeldungPage();
+ String actualTitle = seleniumExample.getTitle();
+ assertNotNull(actualTitle);
+ assertEquals(actualTitle, expecteTilteAboutBaeldungPage);
+ assertTrue(seleniumExample.isAuthorInformationAvailable());
+ } catch (Exception exception) {
+ exception.printStackTrace();
+ seleniumExample.closeWindow();
+ }
+ }
+
+}
diff --git a/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/TestSeleniumWithJUnit.java b/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/TestSeleniumWithJUnit.java
deleted file mode 100644
index f183a613e7..0000000000
--- a/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/TestSeleniumWithJUnit.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package test.java.com.baeldung.selenium.junit;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import main.java.com.baeldung.selenium.SeleniumExample;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class TestSeleniumWithJUnit {
-
- private SeleniumExample seleniumExample;
- private String expectedTitle = "Baeldung | Java, Spring and Web Development tutorials";
-
- @Before
- public void setUp() {
- seleniumExample = new SeleniumExample();
- }
-
- @After
- public void tearDown() {
- seleniumExample.closeWindow();
- }
-
- @Test
- public void whenPageIsLoaded_thenTitleIsAsPerExpectation() {
- String actualTitle = seleniumExample.getTitle();
- assertNotNull(actualTitle);
- assertEquals(actualTitle, expectedTitle);
- }
-}
diff --git a/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/SeleniumWithTestNGLiveTest.java b/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/SeleniumWithTestNGLiveTest.java
new file mode 100644
index 0000000000..5ec9ade39f
--- /dev/null
+++ b/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/SeleniumWithTestNGLiveTest.java
@@ -0,0 +1,40 @@
+package test.java.com.baeldung.selenium.testng;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+import main.java.com.baeldung.selenium.SeleniumExample;
+
+import org.testng.annotations.AfterSuite;
+import org.testng.annotations.BeforeSuite;
+import org.testng.annotations.Test;
+
+public class SeleniumWithTestNGLiveTest {
+
+ private SeleniumExample seleniumExample;
+ private String expecteTilteAboutBaeldungPage = "About Baeldung | Baeldung";
+
+ @BeforeSuite
+ public void setUp() {
+ seleniumExample = new SeleniumExample();
+ }
+
+ @AfterSuite
+ public void tearDown() {
+ seleniumExample.closeWindow();
+ }
+
+ @Test
+ public void whenAboutBaeldungIsLoaded_thenAboutEugenIsMentionedOnPage() {
+ try {
+ seleniumExample.getAboutBaeldungPage();
+ String actualTitle = seleniumExample.getTitle();
+ assertNotNull(actualTitle);
+ assertEquals(actualTitle, expecteTilteAboutBaeldungPage);
+ assertTrue(seleniumExample.isAuthorInformationAvailable());
+ } catch (Exception exception) {
+ exception.printStackTrace();
+ seleniumExample.closeWindow();
+ }
+ }
+}
diff --git a/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/TestSeleniumWithTestNG.java b/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/TestSeleniumWithTestNG.java
deleted file mode 100644
index 3c94f3d440..0000000000
--- a/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/TestSeleniumWithTestNG.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package test.java.com.baeldung.selenium.testng;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import main.java.com.baeldung.selenium.SeleniumExample;
-
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-
-public class TestSeleniumWithTestNG {
-
- private SeleniumExample seleniumExample;
- private String expectedTitle = "Baeldung | Java, Spring and Web Development tutorials";
-
- @BeforeSuite
- public void setUp() {
- seleniumExample = new SeleniumExample();
- }
-
- @AfterSuite
- public void tearDown() {
- seleniumExample.closeWindow();
- }
-
- @Test
- public void whenPageIsLoaded_thenTitleIsAsPerExpectation() {
- String actualTitle = seleniumExample.getTitle();
- assertNotNull(actualTitle);
- assertEquals(actualTitle, expectedTitle);
- }
-}
diff --git a/sockets/README.md b/sockets/README.md
deleted file mode 100644
index ad8811ee80..0000000000
--- a/sockets/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-### Relevant Articles:
-- [A Guide to Java Sockets](http://www.baeldung.com/a-guide-to-java-sockets)
diff --git a/sockets/pom.xml b/sockets/pom.xml
deleted file mode 100644
index 24e8e436f3..0000000000
--- a/sockets/pom.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
- 4.0.0
- com.baeldung
- sockets
- 1.0
- sockets
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.3
-
- 8
- 8
-
-
-
-
-
-
- junit
- junit
- 4.3
- test
-
-
-
-
diff --git a/sockets/src/main/java/com/baeldung/socket/EchoClient.java b/sockets/src/main/java/com/baeldung/socket/EchoClient.java
deleted file mode 100644
index e8ec97c80a..0000000000
--- a/sockets/src/main/java/com/baeldung/socket/EchoClient.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.baeldung.socket;
-
-import java.io.*;
-import java.net.*;
-
-public class EchoClient {
- private Socket clientSocket;
- private PrintWriter out;
- private BufferedReader in;
-
- public void startConnection(String ip, int port) {
- try {
- clientSocket = new Socket(ip, port);
- out = new PrintWriter(clientSocket.getOutputStream(), true);
- in = new BufferedReader(new InputStreamReader(
- clientSocket.getInputStream()));
- } catch (IOException e) {
- System.out.print(e);
- }
-
- }
-
- public String sendMessage(String msg) {
- try {
- out.println(msg);
- String resp = in.readLine();
- return resp;
- } catch (Exception e) {
- return null;
- }
- }
-
- public void stopConnection() {
- try {
- in.close();
- out.close();
- clientSocket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- }
-}
diff --git a/sockets/src/main/java/com/baeldung/socket/EchoMultiServer.java b/sockets/src/main/java/com/baeldung/socket/EchoMultiServer.java
deleted file mode 100644
index 2ece1ceebe..0000000000
--- a/sockets/src/main/java/com/baeldung/socket/EchoMultiServer.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package com.baeldung.socket;
-
-import java.net.*;
-import java.io.*;
-
-public class EchoMultiServer {
- private ServerSocket serverSocket;
-
- public void start(int port) {
- try {
- serverSocket = new ServerSocket(port);
- while (true)
- new EchoClientHandler(serverSocket.accept()).run();
-
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- stop();
- }
-
- }
-
- public void stop() {
- try {
-
- serverSocket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- }
-
- private static class EchoClientHandler extends Thread {
- private Socket clientSocket;
- private PrintWriter out;
- private BufferedReader in;
-
- public EchoClientHandler(Socket socket) {
- this.clientSocket = socket;
- }
-
- public void run() {
- try {
- out = new PrintWriter(clientSocket.getOutputStream(), true);
- in = new BufferedReader(new InputStreamReader(
- clientSocket.getInputStream()));
- String inputLine;
- while ((inputLine = in.readLine()) != null) {
- if (".".equals(inputLine)) {
- out.println("bye");
- break;
- }
- out.println(inputLine);
- }
-
- in.close();
- out.close();
- clientSocket.close();
-
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
-
- public static void main(String[] args) {
- EchoMultiServer server = new EchoMultiServer();
- server.start(5555);
- }
-
-}
diff --git a/sockets/src/main/java/com/baeldung/socket/EchoServer.java b/sockets/src/main/java/com/baeldung/socket/EchoServer.java
deleted file mode 100644
index 3607afa7f5..0000000000
--- a/sockets/src/main/java/com/baeldung/socket/EchoServer.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.baeldung.socket;
-
-import java.net.*;
-import java.io.*;
-
-public class EchoServer {
- private ServerSocket serverSocket;
- private Socket clientSocket;
- private PrintWriter out;
- private BufferedReader in;
-
- public void start(int port) {
- try {
- serverSocket = new ServerSocket(port);
- clientSocket = serverSocket.accept();
- out = new PrintWriter(clientSocket.getOutputStream(), true);
- in = new BufferedReader(new InputStreamReader(
- clientSocket.getInputStream()));
- String inputLine;
- while ((inputLine = in.readLine()) != null) {
- if (".".equals(inputLine)) {
- out.println("good bye");
- break;
- }
- out.println(inputLine);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- }
-
- public void stop() {
- try {
- in.close();
- out.close();
- clientSocket.close();
- serverSocket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- }
-
- public static void main(String[] args) {
- EchoServer server = new EchoServer();
- server.start(4444);
- }
-
-}
diff --git a/sockets/src/main/java/com/baeldung/socket/GreetClient.java b/sockets/src/main/java/com/baeldung/socket/GreetClient.java
deleted file mode 100644
index 7252827c87..0000000000
--- a/sockets/src/main/java/com/baeldung/socket/GreetClient.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.baeldung.socket;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
-import java.net.Socket;
-
-public class GreetClient {
- private Socket clientSocket;
- private PrintWriter out;
- private BufferedReader in;
-
- public void startConnection(String ip, int port) {
- try {
- clientSocket = new Socket(ip, port);
- out = new PrintWriter(clientSocket.getOutputStream(), true);
- in = new BufferedReader(new InputStreamReader(
- clientSocket.getInputStream()));
- } catch (IOException e) {
-
- }
-
- }
-
- public String sendMessage(String msg) {
- try {
- out.println(msg);
- String resp = in.readLine();
- return resp;
- } catch (Exception e) {
- return null;
- }
- }
-
- public void stopConnection() {
- try {
- in.close();
- out.close();
- clientSocket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
-}
diff --git a/sockets/src/main/java/com/baeldung/socket/GreetServer.java b/sockets/src/main/java/com/baeldung/socket/GreetServer.java
deleted file mode 100644
index 8bf675c7b9..0000000000
--- a/sockets/src/main/java/com/baeldung/socket/GreetServer.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.baeldung.socket;
-
-import java.net.*;
-import java.io.*;
-
-public class GreetServer {
- private ServerSocket serverSocket;
- private Socket clientSocket;
- private PrintWriter out;
- private BufferedReader in;
-
-
- public void start(int port) {
- try {
- serverSocket = new ServerSocket(port);
- clientSocket = serverSocket.accept();
- out = new PrintWriter(clientSocket.getOutputStream(), true);
- in = new BufferedReader(new InputStreamReader(
- clientSocket.getInputStream()));
- String greeting = in.readLine();
- if ("hello server".equals(greeting))
- out.println("hello client");
- else
- out.println("unrecognised greeting");
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- }
-
- public void stop() {
- try {
- in.close();
- out.close();
- clientSocket.close();
- serverSocket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- }
- public static void main(String[] args) {
- GreetServer server=new GreetServer();
- server.start(6666);
- }
-
-}
diff --git a/sockets/src/test/java/com/baeldung/socket/EchoMultiTest.java b/sockets/src/test/java/com/baeldung/socket/EchoMultiTest.java
deleted file mode 100644
index 19a59c211c..0000000000
--- a/sockets/src/test/java/com/baeldung/socket/EchoMultiTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.baeldung.socket;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.concurrent.Executors;
-
-import static org.junit.Assert.assertEquals;
-
-public class EchoMultiTest {
-
- {
- Executors.newSingleThreadExecutor().submit(() -> new EchoMultiServer().start(5555));
- }
-
-
- @Test
- public void givenClient1_whenServerResponds_thenCorrect() {
- EchoClient client = new EchoClient();
- client.startConnection("127.0.0.1", 5555);
- String msg1 = client.sendMessage("hello");
- String msg2 = client.sendMessage("world");
- String terminate = client.sendMessage(".");
- assertEquals(msg1, "hello");
- assertEquals(msg2, "world");
- assertEquals(terminate, "bye");
- client.stopConnection();
- }
-
- @Test
- public void givenClient2_whenServerResponds_thenCorrect() {
- EchoClient client = new EchoClient();
- client.startConnection("127.0.0.1", 5555);
- String msg1 = client.sendMessage("hello");
- String msg2 = client.sendMessage("world");
- String terminate = client.sendMessage(".");
- assertEquals(msg1, "hello");
- assertEquals(msg2, "world");
- assertEquals(terminate, "bye");
- client.stopConnection();
- }
-
- @Test
- public void givenClient3_whenServerResponds_thenCorrect() {
- EchoClient client = new EchoClient();
- client.startConnection("127.0.0.1", 5555);
- String msg1 = client.sendMessage("hello");
- String msg2 = client.sendMessage("world");
- String terminate = client.sendMessage(".");
- assertEquals(msg1, "hello");
- assertEquals(msg2, "world");
- assertEquals(terminate, "bye");
- client.stopConnection();
- }
-
-}
diff --git a/sockets/src/test/java/com/baeldung/socket/EchoTest.java b/sockets/src/test/java/com/baeldung/socket/EchoTest.java
deleted file mode 100644
index 0f0c02e4d8..0000000000
--- a/sockets/src/test/java/com/baeldung/socket/EchoTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.baeldung.socket;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.concurrent.Executors;
-
-import static org.junit.Assert.assertEquals;
-
-public class EchoTest {
- {
- Executors.newSingleThreadExecutor().submit(() -> new EchoServer().start(4444));
- }
-
- EchoClient client = new EchoClient();
-
- @Before
- public void init() {
- client.startConnection("127.0.0.1", 4444);
- }
-
- @Test
- public void givenClient_whenServerEchosMessage_thenCorrect() {
-
- String resp1 = client.sendMessage("hello");
- String resp2 = client.sendMessage("world");
- String resp3 = client.sendMessage("!");
- String resp4 = client.sendMessage(".");
- assertEquals("hello", resp1);
- assertEquals("world", resp2);
- assertEquals("!", resp3);
- assertEquals("good bye", resp4);
- }
-
- @After
- public void tearDown() {
- client.stopConnection();
- }
-
-}
diff --git a/spring-akka/pom.xml b/spring-akka/pom.xml
index 6299448ec8..eb33ca4848 100644
--- a/spring-akka/pom.xml
+++ b/spring-akka/pom.xml
@@ -65,9 +65,54 @@
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${maven-surefire-plugin.version}
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
-
-
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
4.3.2.RELEASE
@@ -75,6 +120,8 @@
4.12
3.5.1
+ 2.19.1
+
\ No newline at end of file
diff --git a/spring-akka/src/test/java/org/baeldung/akka/SpringAkkaTest.java b/spring-akka/src/test/java/org/baeldung/akka/SpringAkkaIntegrationTest.java
similarity index 94%
rename from spring-akka/src/test/java/org/baeldung/akka/SpringAkkaTest.java
rename to spring-akka/src/test/java/org/baeldung/akka/SpringAkkaIntegrationTest.java
index e5351e9d0f..c5da0f747e 100644
--- a/spring-akka/src/test/java/org/baeldung/akka/SpringAkkaTest.java
+++ b/spring-akka/src/test/java/org/baeldung/akka/SpringAkkaIntegrationTest.java
@@ -20,7 +20,7 @@ import static akka.pattern.Patterns.ask;
import static org.baeldung.akka.SpringExtension.SPRING_EXTENSION_PROVIDER;
@ContextConfiguration(classes = AppConfiguration.class)
-public class SpringAkkaTest extends AbstractJUnit4SpringContextTests {
+public class SpringAkkaIntegrationTest extends AbstractJUnit4SpringContextTests {
@Autowired
private ActorSystem system;
diff --git a/spring-all/README.md b/spring-all/README.md
index aae98440f3..90ae69300a 100644
--- a/spring-all/README.md
+++ b/spring-all/README.md
@@ -15,3 +15,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring
- [Guide To Running Logic on Startup in Spring](http://www.baeldung.com/running-setup-logic-on-startup-in-spring)
- [Quick Guide to Spring Controllers](http://www.baeldung.com/spring-controllers)
- [Quick Guide to Spring Bean Scopes](http://www.baeldung.com/spring-bean-scopes)
+- [Introduction To Ehcache](http://www.baeldung.com/ehcache)
diff --git a/spring-all/pom.xml b/spring-all/pom.xml
index 003cdacc2c..23f2531b51 100644
--- a/spring-all/pom.xml
+++ b/spring-all/pom.xml
@@ -224,7 +224,7 @@
maven-surefire-plugin
-
+ **/*IntegrationTest.java
@@ -232,31 +232,45 @@
-
- org.codehaus.cargo
- cargo-maven2-plugin
- ${cargo-maven2-plugin.version}
-
- true
-
- jetty8x
- embedded
-
-
-
-
-
-
- 8082
-
-
-
-
-
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
+
4.3.1.RELEASE
diff --git a/spring-all/src/main/webapp/WEB-INF/web.xml b/spring-all/src/main/webapp/WEB-INF/web.xml
index 4e0e7a231c..3ac9e9ed8c 100644
--- a/spring-all/src/main/webapp/WEB-INF/web.xml
+++ b/spring-all/src/main/webapp/WEB-INF/web.xml
@@ -9,11 +9,11 @@
org.springframework.web.servlet.DispatcherServlet
- 1
contextConfigLocation
/WEB-INF/test-mvc.xml
+ 1
diff --git a/spring-all/src/test/java/org/baeldung/async/AsyncAnnotationExampleTest.java b/spring-all/src/test/java/org/baeldung/async/AsyncAnnotationExampleIntegrationTest.java
similarity index 97%
rename from spring-all/src/test/java/org/baeldung/async/AsyncAnnotationExampleTest.java
rename to spring-all/src/test/java/org/baeldung/async/AsyncAnnotationExampleIntegrationTest.java
index 2f41766cb6..0c010cf732 100644
--- a/spring-all/src/test/java/org/baeldung/async/AsyncAnnotationExampleTest.java
+++ b/spring-all/src/test/java/org/baeldung/async/AsyncAnnotationExampleIntegrationTest.java
@@ -13,7 +13,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SpringAsyncConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class AsyncAnnotationExampleTest {
+public class AsyncAnnotationExampleIntegrationTest {
@Autowired
private AsyncComponent asyncAnnotationExample;
diff --git a/spring-all/src/test/java/org/baeldung/async/AsyncWithXMLTest.java b/spring-all/src/test/java/org/baeldung/async/AsyncWithXMLIntegrationTest.java
similarity index 95%
rename from spring-all/src/test/java/org/baeldung/async/AsyncWithXMLTest.java
rename to spring-all/src/test/java/org/baeldung/async/AsyncWithXMLIntegrationTest.java
index b91666261c..ffaa653a9a 100644
--- a/spring-all/src/test/java/org/baeldung/async/AsyncWithXMLTest.java
+++ b/spring-all/src/test/java/org/baeldung/async/AsyncWithXMLIntegrationTest.java
@@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:springAsync-config.xml")
-public class AsyncWithXMLTest {
+public class AsyncWithXMLIntegrationTest {
@Autowired
private AsyncComponent asyncAnnotationExample;
diff --git a/spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationTest.java b/spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationIntegrationTest.java
similarity index 95%
rename from spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationTest.java
rename to spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationIntegrationTest.java
index 84bc3a8033..82c8704360 100644
--- a/spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationTest.java
+++ b/spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationIntegrationTest.java
@@ -21,7 +21,7 @@ import org.springframework.web.servlet.ModelAndView;
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = { WebConfig.class }, loader = AnnotationConfigWebContextLoader.class)
-public class ControllerAnnotationTest {
+public class ControllerAnnotationIntegrationTest {
private MockMvc mockMvc;
diff --git a/spring-all/src/test/java/org/baeldung/controller/ControllerTest.java b/spring-all/src/test/java/org/baeldung/controller/ControllerIntegrationTest.java
similarity index 98%
rename from spring-all/src/test/java/org/baeldung/controller/ControllerTest.java
rename to spring-all/src/test/java/org/baeldung/controller/ControllerIntegrationTest.java
index 47915b8ce9..8e8a021530 100644
--- a/spring-all/src/test/java/org/baeldung/controller/ControllerTest.java
+++ b/spring-all/src/test/java/org/baeldung/controller/ControllerIntegrationTest.java
@@ -20,7 +20,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration({ "classpath:test-mvc.xml" })
-public class ControllerTest {
+public class ControllerIntegrationTest {
private MockMvc mockMvc;
diff --git a/spring-all/src/test/java/org/baeldung/customannotation/DataAccessAnnotationTest.java b/spring-all/src/test/java/org/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java
similarity index 97%
rename from spring-all/src/test/java/org/baeldung/customannotation/DataAccessAnnotationTest.java
rename to spring-all/src/test/java/org/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java
index ec0d46876e..ae3d53fb9b 100644
--- a/spring-all/src/test/java/org/baeldung/customannotation/DataAccessAnnotationTest.java
+++ b/spring-all/src/test/java/org/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java
@@ -14,7 +14,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { CustomAnnotationConfiguration.class })
-public class DataAccessAnnotationTest {
+public class DataAccessAnnotationIntegrationTest {
@DataAccess(entity = Person.class)
private GenericDAO personGenericDAO;
diff --git a/spring-all/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackTest.java b/spring-all/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java
similarity index 97%
rename from spring-all/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackTest.java
rename to spring-all/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java
index e47d03c961..bab2574cd2 100644
--- a/spring-all/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackTest.java
+++ b/spring-all/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java
@@ -17,7 +17,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { CustomAnnotationConfiguration.class })
-public class DataAccessFieldCallbackTest {
+public class DataAccessFieldCallbackIntegrationTest {
@Autowired
private ConfigurableListableBeanFactory configurableListableBeanFactory;
diff --git a/spring-all/src/test/java/org/baeldung/ehcache/SquareCalculatorTest.java b/spring-all/src/test/java/org/baeldung/ehcache/SquareCalculatorTest.java
index 875fd2a25e..ab7aebf7a1 100644
--- a/spring-all/src/test/java/org/baeldung/ehcache/SquareCalculatorTest.java
+++ b/spring-all/src/test/java/org/baeldung/ehcache/SquareCalculatorTest.java
@@ -1,20 +1,20 @@
package org.baeldung.ehcache;
-import static org.junit.Assert.*;
-
import org.baeldung.ehcache.calculator.SquaredCalculator;
import org.baeldung.ehcache.config.CacheHelper;
import org.junit.Before;
import org.junit.Test;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
public class SquareCalculatorTest {
- SquaredCalculator squaredCalculator = new SquaredCalculator();
- CacheHelper cacheHelper = new CacheHelper();
+ private SquaredCalculator squaredCalculator = new SquaredCalculator();
+ private CacheHelper cacheHelper = new CacheHelper();
@Before
public void setup() {
squaredCalculator.setCache(cacheHelper);
-
}
@Test
@@ -22,7 +22,7 @@ public class SquareCalculatorTest {
for (int i = 10; i < 15; i++) {
assertFalse(cacheHelper.getSquareNumberCache().containsKey(i));
System.out.println("Square value of " + i + " is: "
- + squaredCalculator.getSquareValueOfNumber(i) + "\n");
+ + squaredCalculator.getSquareValueOfNumber(i) + "\n");
}
}
@@ -31,13 +31,13 @@ public class SquareCalculatorTest {
for (int i = 10; i < 15; i++) {
assertFalse(cacheHelper.getSquareNumberCache().containsKey(i));
System.out.println("Square value of " + i + " is: "
- + squaredCalculator.getSquareValueOfNumber(i) + "\n");
+ + squaredCalculator.getSquareValueOfNumber(i) + "\n");
}
-
+
for (int i = 10; i < 15; i++) {
assertTrue(cacheHelper.getSquareNumberCache().containsKey(i));
System.out.println("Square value of " + i + " is: "
- + squaredCalculator.getSquareValueOfNumber(i) + "\n");
+ + squaredCalculator.getSquareValueOfNumber(i) + "\n");
}
}
}
diff --git a/spring-all/src/test/java/org/baeldung/jdbc/EmployeeDAOTest.java b/spring-all/src/test/java/org/baeldung/jdbc/EmployeeDAOIntegrationTest.java
similarity index 99%
rename from spring-all/src/test/java/org/baeldung/jdbc/EmployeeDAOTest.java
rename to spring-all/src/test/java/org/baeldung/jdbc/EmployeeDAOIntegrationTest.java
index d544409254..4a92aa838f 100644
--- a/spring-all/src/test/java/org/baeldung/jdbc/EmployeeDAOTest.java
+++ b/spring-all/src/test/java/org/baeldung/jdbc/EmployeeDAOIntegrationTest.java
@@ -15,7 +15,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SpringJdbcConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class EmployeeDAOTest {
+public class EmployeeDAOIntegrationTest {
@Autowired
private EmployeeDAO employeeDao;
diff --git a/spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationTest.java b/spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationIntegrationTest.java
similarity index 93%
rename from spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationTest.java
rename to spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationIntegrationTest.java
index 2b65928da8..cf5ca132e6 100644
--- a/spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationTest.java
+++ b/spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationIntegrationTest.java
@@ -12,7 +12,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles("dev")
@ContextConfiguration(classes = { SpringProfilesConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class DevProfileWithAnnotationTest {
+public class DevProfileWithAnnotationIntegrationTest {
@Autowired
DatasourceConfig datasourceConfig;
diff --git a/spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationTest.java b/spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationIntegrationTest.java
similarity index 94%
rename from spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationTest.java
rename to spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationIntegrationTest.java
index 551636bd31..5bacaef07b 100644
--- a/spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationTest.java
+++ b/spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationIntegrationTest.java
@@ -13,7 +13,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles("production")
@ContextConfiguration(classes = { SpringProfilesConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class ProductionProfileWithAnnotationTest {
+public class ProductionProfileWithAnnotationIntegrationTest {
@Autowired
DatasourceConfig datasourceConfig;
diff --git a/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertyPlaceHolderPropertiesTest.java b/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertyPlaceHolderPropertiesIntegrationTest.java
similarity index 96%
rename from spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertyPlaceHolderPropertiesTest.java
rename to spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertyPlaceHolderPropertiesIntegrationTest.java
index 92af3f52f0..e0eccc978a 100644
--- a/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertyPlaceHolderPropertiesTest.java
+++ b/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertyPlaceHolderPropertiesIntegrationTest.java
@@ -18,7 +18,7 @@ import org.springframework.web.context.WebApplicationContext;
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextHierarchy({ @ContextConfiguration(classes = ParentConfig2.class), @ContextConfiguration(classes = ChildConfig2.class) })
-public class ParentChildPropertyPlaceHolderPropertiesTest {
+public class ParentChildPropertyPlaceHolderPropertiesIntegrationTest {
@Autowired
private WebApplicationContext wac;
diff --git a/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertySourcePropertiesTest.java b/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertySourcePropertiesIntegrationTest.java
similarity index 96%
rename from spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertySourcePropertiesTest.java
rename to spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertySourcePropertiesIntegrationTest.java
index 3ffd490c87..e9990523a7 100644
--- a/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertySourcePropertiesTest.java
+++ b/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertySourcePropertiesIntegrationTest.java
@@ -18,7 +18,7 @@ import org.springframework.web.context.WebApplicationContext;
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextHierarchy({ @ContextConfiguration(classes = ParentConfig.class), @ContextConfiguration(classes = ChildConfig.class) })
-public class ParentChildPropertySourcePropertiesTest {
+public class ParentChildPropertySourcePropertiesIntegrationTest {
@Autowired
private WebApplicationContext wac;
diff --git a/spring-all/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleTest.java b/spring-all/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleIntegrationTest.java
similarity index 90%
rename from spring-all/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleTest.java
rename to spring-all/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleIntegrationTest.java
index 9317c7bb7f..c5ca78aaa1 100644
--- a/spring-all/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleTest.java
+++ b/spring-all/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleIntegrationTest.java
@@ -8,7 +8,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SpringSchedulingConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class ScheduledAnnotationExampleTest {
+public class ScheduledAnnotationExampleIntegrationTest {
@Test
public void testScheduledAnnotation() throws InterruptedException {
diff --git a/spring-all/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigTest.java b/spring-all/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigIntegrationTest.java
similarity index 89%
rename from spring-all/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigTest.java
rename to spring-all/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigIntegrationTest.java
index 0fca4d21c8..08df73f8fd 100644
--- a/spring-all/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigTest.java
+++ b/spring-all/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigIntegrationTest.java
@@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:springScheduled-config.xml")
-public class SchedulingWithXmlConfigTest {
+public class SchedulingWithXmlConfigIntegrationTest {
@Test
public void testXmlBasedScheduling() throws InterruptedException {
diff --git a/spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationTest.java b/spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationIntegrationTest.java
similarity index 94%
rename from spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationTest.java
rename to spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationIntegrationTest.java
index 5162a067d7..fff2716a64 100644
--- a/spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationTest.java
+++ b/spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationIntegrationTest.java
@@ -17,7 +17,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@ContextConfiguration(classes = AttributeAnnotationConfiguration.class)
@WebAppConfiguration
-public class AttributeAnnotationTest extends AbstractJUnit4SpringContextTests {
+public class AttributeAnnotationIntegrationTest extends AbstractJUnit4SpringContextTests {
private MockMvc mockMvc;
diff --git a/spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsTest.java b/spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsIntegrationTest.java
similarity index 92%
rename from spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsTest.java
rename to spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsIntegrationTest.java
index bfd6e5047c..986932dafe 100644
--- a/spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsTest.java
+++ b/spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsIntegrationTest.java
@@ -12,7 +12,7 @@ import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import static org.junit.Assert.assertEquals;
@ContextConfiguration(classes = CacheRefinementsConfiguration.class)
-public class CacheRefinementsTest extends AbstractJUnit4SpringContextTests {
+public class CacheRefinementsIntegrationTest extends AbstractJUnit4SpringContextTests {
private ExecutorService executorService = Executors.newFixedThreadPool(10);
diff --git a/spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingTest.java b/spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingIntegrationTest.java
similarity index 94%
rename from spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingTest.java
rename to spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingIntegrationTest.java
index 75d828c3d3..d0af48cd0e 100644
--- a/spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingTest.java
+++ b/spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingIntegrationTest.java
@@ -17,7 +17,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@ContextConfiguration(classes = ComposedMappingConfiguration.class)
@WebAppConfiguration
-public class ComposedMappingTest extends AbstractJUnit4SpringContextTests {
+public class ComposedMappingIntegrationTest extends AbstractJUnit4SpringContextTests {
@Autowired
private AppointmentService appointmentService;
diff --git a/spring-all/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionTest.java b/spring-all/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionIntegrationTest.java
similarity index 85%
rename from spring-all/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionTest.java
rename to spring-all/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionIntegrationTest.java
index 3edf693a13..871a985479 100644
--- a/spring-all/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionTest.java
+++ b/spring-all/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionIntegrationTest.java
@@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import static org.junit.Assert.assertNotNull;
@ContextConfiguration(classes = { FooRepositoryConfiguration.class, FooServiceConfiguration.class })
-public class ConfigurationConstructorInjectionTest extends AbstractJUnit4SpringContextTests {
+public class ConfigurationConstructorInjectionIntegrationTest extends AbstractJUnit4SpringContextTests {
@Autowired
public FooService fooService;
diff --git a/spring-all/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorTest.java b/spring-all/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorIntegrationTest.java
similarity index 86%
rename from spring-all/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorTest.java
rename to spring-all/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorIntegrationTest.java
index be0cf77a62..83fa11294e 100644
--- a/spring-all/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorTest.java
+++ b/spring-all/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorIntegrationTest.java
@@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import static org.junit.Assert.assertNotNull;
@ContextConfiguration("classpath:implicit-ctor-context.xml")
-public class ImplicitConstructorTest extends AbstractJUnit4SpringContextTests {
+public class ImplicitConstructorIntegrationTest extends AbstractJUnit4SpringContextTests {
@Autowired
private FooService fooService;
diff --git a/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionTest.java b/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionIntegrationTest.java
similarity index 87%
rename from spring-all/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionTest.java
rename to spring-all/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionIntegrationTest.java
index e29d89a679..956df44821 100644
--- a/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionTest.java
+++ b/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionIntegrationTest.java
@@ -10,7 +10,7 @@ import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import static org.junit.Assert.assertEquals;
@ContextConfiguration("classpath:defaultmethods-context.xml")
-public class DefaultMethodsInjectionTest extends AbstractJUnit4SpringContextTests {
+public class DefaultMethodsInjectionIntegrationTest extends AbstractJUnit4SpringContextTests {
@Autowired
private IDateHolder dateHolder;
diff --git a/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalTest.java b/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalIntegrationTest.java
similarity index 76%
rename from spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalTest.java
rename to spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalIntegrationTest.java
index 89c96ba1d4..b4ac7e8ccf 100644
--- a/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalTest.java
+++ b/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalIntegrationTest.java
@@ -5,7 +5,7 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
@ContextConfiguration(classes = TransactionalTestConfiguration.class)
-public class TransactionalTest extends AbstractTransactionalJUnit4SpringContextTests implements ITransactionalTest {
+public class TransactionalIntegrationTest extends AbstractTransactionalJUnit4SpringContextTests implements ITransactionalTest {
@Test
public void whenDefaultMethodAnnotatedWithBeforeTransaction_thenDefaultMethodIsExecuted() {
diff --git a/spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderTest.java b/spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderIntegrationTest.java
similarity index 87%
rename from spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderTest.java
rename to spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderIntegrationTest.java
index eeeb005f81..6d06bfdc2a 100644
--- a/spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderTest.java
+++ b/spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderIntegrationTest.java
@@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import static org.junit.Assert.assertNotNull;
@ContextConfiguration(classes = ObjectProviderConfiguration.class)
-public class ObjectProviderTest extends AbstractJUnit4SpringContextTests {
+public class ObjectProviderIntegrationTest extends AbstractJUnit4SpringContextTests {
@Autowired
private FooService fooService;
diff --git a/spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsTest.java b/spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsIntegrationTest.java
similarity index 97%
rename from spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsTest.java
rename to spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsIntegrationTest.java
index ecf14f0d6c..69cce15029 100644
--- a/spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsTest.java
+++ b/spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsIntegrationTest.java
@@ -19,7 +19,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@ContextConfiguration(classes = ScopeAnnotationsConfiguration.class)
@WebAppConfiguration
-public class ScopeAnnotationsTest extends AbstractJUnit4SpringContextTests {
+public class ScopeAnnotationsIntegrationTest extends AbstractJUnit4SpringContextTests {
private MockMvc mockMvc;
diff --git a/spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsTest.java b/spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsIntegrationTest.java
similarity index 93%
rename from spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsTest.java
rename to spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsIntegrationTest.java
index 2b45ae4e68..e12baed7e0 100644
--- a/spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsTest.java
+++ b/spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsIntegrationTest.java
@@ -10,7 +10,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { AsynchronousSpringEventsConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class AsynchronousCustomSpringEventsTest {
+public class AsynchronousCustomSpringEventsIntegrationTest {
@Autowired
private CustomSpringEventPublisher publisher;
diff --git a/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerTest.java b/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerIntegrationTest.java
similarity index 92%
rename from spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerTest.java
rename to spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerIntegrationTest.java
index d971698e3f..ac8758bbf6 100644
--- a/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerTest.java
+++ b/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerIntegrationTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SynchronousSpringEventsConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class ContextRefreshedListenerTest {
+public class ContextRefreshedListenerIntegrationTest {
@Test
public void testContextRefreshedListener() throws InterruptedException {
diff --git a/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsTest.java b/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java
similarity index 93%
rename from spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsTest.java
rename to spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java
index b559ca9fc9..f9783f57dc 100644
--- a/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsTest.java
+++ b/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SynchronousSpringEventsConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class SynchronousCustomSpringEventsTest {
+public class SynchronousCustomSpringEventsIntegrationTest {
@Autowired
private CustomSpringEventPublisher publisher;
diff --git a/spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java b/spring-all/src/test/java/org/baeldung/startup/SpringStartupIntegrationTest.java
similarity index 97%
rename from spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java
rename to spring-all/src/test/java/org/baeldung/startup/SpringStartupIntegrationTest.java
index 523a27c2c4..6263482948 100644
--- a/spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java
+++ b/spring-all/src/test/java/org/baeldung/startup/SpringStartupIntegrationTest.java
@@ -12,7 +12,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SpringStartupConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class SpringStartupTest {
+public class SpringStartupIntegrationTest {
@Autowired
private ApplicationContext ctx;
diff --git a/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigTest.java b/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java
similarity index 93%
rename from spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigTest.java
rename to spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java
index 19a35bb92b..a46d24fa3b 100644
--- a/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigTest.java
+++ b/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:startupConfig.xml")
-public class SpringStartupXMLConfigTest {
+public class SpringStartupXMLConfigIntegrationTest {
@Autowired
private ApplicationContext ctx;
diff --git a/spring-autowire/pom.xml b/spring-autowire/pom.xml
index e28efdae61..fd03c77605 100644
--- a/spring-autowire/pom.xml
+++ b/spring-autowire/pom.xml
@@ -57,7 +57,48 @@
org.apache.maven.plugins
maven-surefire-plugin
${maven-surefire-plugin.version}
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
diff --git a/spring-autowire/src/test/java/com/baeldung/autowire/sample/FooServiceTest.java b/spring-autowire/src/test/java/com/baeldung/autowire/sample/FooServiceIntegrationTest.java
similarity index 94%
rename from spring-autowire/src/test/java/com/baeldung/autowire/sample/FooServiceTest.java
rename to spring-autowire/src/test/java/com/baeldung/autowire/sample/FooServiceIntegrationTest.java
index 50e89fcc55..34ba7902ca 100644
--- a/spring-autowire/src/test/java/com/baeldung/autowire/sample/FooServiceTest.java
+++ b/spring-autowire/src/test/java/com/baeldung/autowire/sample/FooServiceIntegrationTest.java
@@ -10,7 +10,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = AppConfig.class, loader = AnnotationConfigContextLoader.class)
-public class FooServiceTest {
+public class FooServiceIntegrationTest {
@Autowired
FooService fooService;
diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml
index 5281b9b2c0..a2555259b0 100644
--- a/spring-boot/pom.xml
+++ b/spring-boot/pom.xml
@@ -133,10 +133,56 @@
2.2.1
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
+
spring-snapshots
diff --git a/spring-boot/src/test/java/com/baeldung/WebjarsdemoApplicationTests.java b/spring-boot/src/test/java/com/baeldung/WebjarsdemoApplicationIntegrationTest.java
similarity index 89%
rename from spring-boot/src/test/java/com/baeldung/WebjarsdemoApplicationTests.java
rename to spring-boot/src/test/java/com/baeldung/WebjarsdemoApplicationIntegrationTest.java
index c43b13ea0b..3558682b97 100644
--- a/spring-boot/src/test/java/com/baeldung/WebjarsdemoApplicationTests.java
+++ b/spring-boot/src/test/java/com/baeldung/WebjarsdemoApplicationIntegrationTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.web.WebAppConfiguration;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = WebjarsdemoApplication.class)
@WebAppConfiguration
-public class WebjarsdemoApplicationTests {
+public class WebjarsdemoApplicationIntegrationTest {
@Test
public void contextLoads() {
diff --git a/spring-boot/src/test/java/com/baeldung/git/CommitIdTest.java b/spring-boot/src/test/java/com/baeldung/git/CommitIdIntegrationTest.java
similarity index 94%
rename from spring-boot/src/test/java/com/baeldung/git/CommitIdTest.java
rename to spring-boot/src/test/java/com/baeldung/git/CommitIdIntegrationTest.java
index c0fc1befd3..348d594c05 100644
--- a/spring-boot/src/test/java/com/baeldung/git/CommitIdTest.java
+++ b/spring-boot/src/test/java/com/baeldung/git/CommitIdIntegrationTest.java
@@ -12,9 +12,9 @@ import static org.assertj.core.api.Assertions.assertThat;
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = CommitIdApplication.class)
-public class CommitIdTest {
+public class CommitIdIntegrationTest {
- private static final Logger LOG = LoggerFactory.getLogger(CommitIdTest.class);
+ private static final Logger LOG = LoggerFactory.getLogger(CommitIdIntegrationTest.class);
@Value("${git.commit.message.short:UNKNOWN}")
private String commitMessage;
diff --git a/spring-boot/src/test/java/org/baeldung/SpringBootApplicationTest.java b/spring-boot/src/test/java/org/baeldung/SpringBootApplicationIntegrationTest.java
similarity index 97%
rename from spring-boot/src/test/java/org/baeldung/SpringBootApplicationTest.java
rename to spring-boot/src/test/java/org/baeldung/SpringBootApplicationIntegrationTest.java
index 1255180e44..3c5444942c 100644
--- a/spring-boot/src/test/java/org/baeldung/SpringBootApplicationTest.java
+++ b/spring-boot/src/test/java/org/baeldung/SpringBootApplicationIntegrationTest.java
@@ -26,7 +26,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
-public class SpringBootApplicationTest {
+public class SpringBootApplicationIntegrationTest {
@Autowired
private WebApplicationContext webApplicationContext;
private MockMvc mockMvc;
diff --git a/spring-boot/src/test/java/org/baeldung/SpringBootJPATest.java b/spring-boot/src/test/java/org/baeldung/SpringBootJPAIntegrationTest.java
similarity index 95%
rename from spring-boot/src/test/java/org/baeldung/SpringBootJPATest.java
rename to spring-boot/src/test/java/org/baeldung/SpringBootJPAIntegrationTest.java
index 8a6b5139fe..233684bc24 100644
--- a/spring-boot/src/test/java/org/baeldung/SpringBootJPATest.java
+++ b/spring-boot/src/test/java/org/baeldung/SpringBootJPAIntegrationTest.java
@@ -13,7 +13,7 @@ import static org.junit.Assert.assertNotNull;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
-public class SpringBootJPATest {
+public class SpringBootJPAIntegrationTest {
@Autowired
private GenericEntityRepository genericEntityRepository;
diff --git a/spring-boot/src/test/java/org/baeldung/SpringBootMailTest.java b/spring-boot/src/test/java/org/baeldung/SpringBootMailIntegrationTest.java
similarity index 98%
rename from spring-boot/src/test/java/org/baeldung/SpringBootMailTest.java
rename to spring-boot/src/test/java/org/baeldung/SpringBootMailIntegrationTest.java
index f4ce158661..cec25f20f9 100644
--- a/spring-boot/src/test/java/org/baeldung/SpringBootMailTest.java
+++ b/spring-boot/src/test/java/org/baeldung/SpringBootMailIntegrationTest.java
@@ -24,7 +24,7 @@ import static org.junit.Assert.assertThat;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
-public class SpringBootMailTest {
+public class SpringBootMailIntegrationTest {
@Autowired
private JavaMailSender javaMailSender;
diff --git a/spring-boot/src/test/java/org/baeldung/boot/ApplicationTests.java b/spring-boot/src/test/java/org/baeldung/boot/ApplicationIntegrationTest.java
similarity index 92%
rename from spring-boot/src/test/java/org/baeldung/boot/ApplicationTests.java
rename to spring-boot/src/test/java/org/baeldung/boot/ApplicationIntegrationTest.java
index 7911465048..57a8abc1ee 100644
--- a/spring-boot/src/test/java/org/baeldung/boot/ApplicationTests.java
+++ b/spring-boot/src/test/java/org/baeldung/boot/ApplicationIntegrationTest.java
@@ -10,7 +10,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)
@TestPropertySource("classpath:exception.properties")
-public class ApplicationTests {
+public class ApplicationIntegrationTest {
@Test
public void contextLoads() {
}
diff --git a/spring-boot/src/test/java/org/baeldung/boot/DemoApplicationTests.java b/spring-boot/src/test/java/org/baeldung/boot/DemoApplicationIntegrationTest.java
similarity index 90%
rename from spring-boot/src/test/java/org/baeldung/boot/DemoApplicationTests.java
rename to spring-boot/src/test/java/org/baeldung/boot/DemoApplicationIntegrationTest.java
index 7f9b2ba912..4fcea35b4a 100644
--- a/spring-boot/src/test/java/org/baeldung/boot/DemoApplicationTests.java
+++ b/spring-boot/src/test/java/org/baeldung/boot/DemoApplicationIntegrationTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.web.WebAppConfiguration;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = DemoApplication.class)
@WebAppConfiguration
-public class DemoApplicationTests {
+public class DemoApplicationIntegrationTest {
@Test
public void contextLoads() {
diff --git a/spring-boot/src/test/java/org/baeldung/boot/repository/FooRepositoryTest.java b/spring-boot/src/test/java/org/baeldung/boot/repository/FooRepositoryIntegrationTest.java
similarity index 84%
rename from spring-boot/src/test/java/org/baeldung/boot/repository/FooRepositoryTest.java
rename to spring-boot/src/test/java/org/baeldung/boot/repository/FooRepositoryIntegrationTest.java
index 9de7790a75..a844b26b2d 100644
--- a/spring-boot/src/test/java/org/baeldung/boot/repository/FooRepositoryTest.java
+++ b/spring-boot/src/test/java/org/baeldung/boot/repository/FooRepositoryIntegrationTest.java
@@ -2,7 +2,7 @@ package org.baeldung.boot.repository;
import static org.junit.Assert.assertThat;
-import org.baeldung.boot.DemoApplicationTests;
+import org.baeldung.boot.DemoApplicationIntegrationTest;
import org.baeldung.boot.model.Foo;
import static org.hamcrest.Matchers.notNullValue;
@@ -14,7 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@Transactional
-public class FooRepositoryTest extends DemoApplicationTests {
+public class FooRepositoryIntegrationTest extends DemoApplicationIntegrationTest {
@Autowired
private FooRepository fooRepository;
diff --git a/spring-boot/src/test/java/org/baeldung/boot/repository/HibernateSessionTest.java b/spring-boot/src/test/java/org/baeldung/boot/repository/HibernateSessionIntegrationTest.java
similarity index 88%
rename from spring-boot/src/test/java/org/baeldung/boot/repository/HibernateSessionTest.java
rename to spring-boot/src/test/java/org/baeldung/boot/repository/HibernateSessionIntegrationTest.java
index 4cb1b60cde..be992bcc36 100644
--- a/spring-boot/src/test/java/org/baeldung/boot/repository/HibernateSessionTest.java
+++ b/spring-boot/src/test/java/org/baeldung/boot/repository/HibernateSessionIntegrationTest.java
@@ -4,7 +4,7 @@ import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.junit.Assert.assertThat;
-import org.baeldung.boot.ApplicationTests;
+import org.baeldung.boot.ApplicationIntegrationTest;
import org.baeldung.boot.model.Foo;
import org.baeldung.session.exception.repository.FooRepository;
import org.junit.Test;
@@ -14,7 +14,7 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional
@TestPropertySource("classpath:exception-hibernate.properties")
-public class HibernateSessionTest extends ApplicationTests {
+public class HibernateSessionIntegrationTest extends ApplicationIntegrationTest {
@Autowired
private FooRepository fooRepository;
diff --git a/spring-boot/src/test/java/org/baeldung/boot/repository/NoHibernateSessionTest.java b/spring-boot/src/test/java/org/baeldung/boot/repository/NoHibernateSessionIntegrationTest.java
similarity index 81%
rename from spring-boot/src/test/java/org/baeldung/boot/repository/NoHibernateSessionTest.java
rename to spring-boot/src/test/java/org/baeldung/boot/repository/NoHibernateSessionIntegrationTest.java
index 5f5a49841a..55b7fa7216 100644
--- a/spring-boot/src/test/java/org/baeldung/boot/repository/NoHibernateSessionTest.java
+++ b/spring-boot/src/test/java/org/baeldung/boot/repository/NoHibernateSessionIntegrationTest.java
@@ -1,6 +1,6 @@
package org.baeldung.boot.repository;
-import org.baeldung.boot.ApplicationTests;
+import org.baeldung.boot.ApplicationIntegrationTest;
import org.baeldung.boot.model.Foo;
import org.baeldung.session.exception.repository.FooRepository;
import org.hibernate.HibernateException;
@@ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@Transactional
-public class NoHibernateSessionTest extends ApplicationTests {
+public class NoHibernateSessionIntegrationTest extends ApplicationIntegrationTest {
@Autowired
private FooRepository fooRepository;
diff --git a/spring-boot/src/test/java/org/baeldung/client/DetailsServiceClientTest.java b/spring-boot/src/test/java/org/baeldung/client/DetailsServiceClientIntegrationTest.java
similarity index 96%
rename from spring-boot/src/test/java/org/baeldung/client/DetailsServiceClientTest.java
rename to spring-boot/src/test/java/org/baeldung/client/DetailsServiceClientIntegrationTest.java
index ba0da968ad..5627855aa3 100644
--- a/spring-boot/src/test/java/org/baeldung/client/DetailsServiceClientTest.java
+++ b/spring-boot/src/test/java/org/baeldung/client/DetailsServiceClientIntegrationTest.java
@@ -16,7 +16,7 @@ import static org.springframework.test.web.client.response.MockRestResponseCreat
@RunWith(SpringRunner.class)
@RestClientTest(DetailsServiceClient.class)
-public class DetailsServiceClientTest {
+public class DetailsServiceClientIntegrationTest {
@Autowired
private DetailsServiceClient client;
diff --git a/spring-cloud-data-flow/batch-job/pom.xml b/spring-cloud-data-flow/batch-job/pom.xml
index 2ddb9d85a3..99e57d4c20 100644
--- a/spring-cloud-data-flow/batch-job/pom.xml
+++ b/spring-cloud-data-flow/batch-job/pom.xml
@@ -67,8 +67,17 @@
org.springframework.boot
spring-boot-maven-plugin
-
-
-
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
diff --git a/spring-cloud-data-flow/batch-job/src/test/java/org/baeldung/spring/cloud/BatchJobApplicationTests.java b/spring-cloud-data-flow/batch-job/src/test/java/org/baeldung/spring/cloud/BatchJobApplicationIntegrationTest.java
similarity index 86%
rename from spring-cloud-data-flow/batch-job/src/test/java/org/baeldung/spring/cloud/BatchJobApplicationTests.java
rename to spring-cloud-data-flow/batch-job/src/test/java/org/baeldung/spring/cloud/BatchJobApplicationIntegrationTest.java
index 5f18ec75c4..f8dfdec197 100644
--- a/spring-cloud-data-flow/batch-job/src/test/java/org/baeldung/spring/cloud/BatchJobApplicationTests.java
+++ b/spring-cloud-data-flow/batch-job/src/test/java/org/baeldung/spring/cloud/BatchJobApplicationIntegrationTest.java
@@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
-public class BatchJobApplicationTests {
+public class BatchJobApplicationIntegrationTest {
@Test
public void contextLoads() {
diff --git a/spring-cloud-data-flow/data-flow-server/pom.xml b/spring-cloud-data-flow/data-flow-server/pom.xml
index 94c4106d6f..451a58e12a 100644
--- a/spring-cloud-data-flow/data-flow-server/pom.xml
+++ b/spring-cloud-data-flow/data-flow-server/pom.xml
@@ -62,8 +62,53 @@
org.springframework.boot
spring-boot-maven-plugin
-
-
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
diff --git a/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationIntegrationTest.java b/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationIntegrationTest.java
new file mode 100644
index 0000000000..bb8660b816
--- /dev/null
+++ b/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung.spring.cloud;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class DataFlowServerApplicationIntegrationTest {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/spring-cloud-data-flow/data-flow-shell/pom.xml b/spring-cloud-data-flow/data-flow-shell/pom.xml
index a074fef88f..31d3dce507 100644
--- a/spring-cloud-data-flow/data-flow-shell/pom.xml
+++ b/spring-cloud-data-flow/data-flow-shell/pom.xml
@@ -62,8 +62,18 @@
org.springframework.boot
spring-boot-maven-plugin
-
-
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
diff --git a/spring-cloud-data-flow/data-flow-shell/spring-shell.log b/spring-cloud-data-flow/data-flow-shell/spring-shell.log
new file mode 100644
index 0000000000..92a8488c7d
--- /dev/null
+++ b/spring-cloud-data-flow/data-flow-shell/spring-shell.log
@@ -0,0 +1,2 @@
+// dataflow 1.2.0.RELEASE log opened at 2016-10-20 13:13:20
+// dataflow 1.2.0.RELEASE log opened at 2016-10-24 16:51:17
diff --git a/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationTests.java b/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationIntegrationTest.java
similarity index 85%
rename from spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationTests.java
rename to spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationIntegrationTest.java
index f853e29244..5ab3292388 100644
--- a/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationTests.java
+++ b/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationIntegrationTest.java
@@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
-public class DataFlowServerApplicationTests {
+public class DataFlowShellApplicationIntegrationTest {
@Test
public void contextLoads() {
diff --git a/spring-cloud-data-flow/log-sink/pom.xml b/spring-cloud-data-flow/log-sink/pom.xml
index 8415d95373..db488c05ef 100644
--- a/spring-cloud-data-flow/log-sink/pom.xml
+++ b/spring-cloud-data-flow/log-sink/pom.xml
@@ -1,62 +1,105 @@
- 4.0.0
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
- org.baeldung.spring.cloud
- log-sink
- 0.0.1-SNAPSHOT
- jar
+ org.baeldung.spring.cloud
+ log-sink
+ 0.0.1-SNAPSHOT
+ jar
- log-sink
- Demo project for Spring Boot
+ log-sink
+ Demo project for Spring Boot
-
- org.springframework.boot
- spring-boot-starter-parent
- 1.4.0.RELEASE
-
-
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 1.4.0.RELEASE
+
+
-
- UTF-8
- UTF-8
- 1.8
-
+
+ UTF-8
+ UTF-8
+ 1.8
+
-
-
- org.springframework.cloud
- spring-cloud-starter-stream-rabbit
-
+
+
+ org.springframework.cloud
+ spring-cloud-starter-stream-rabbit
+
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- Brixton.SR5
- pom
- import
-
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ Brixton.SR5
+ pom
+ import
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
diff --git a/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationTests.java b/spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationIntegrationTest.java
similarity index 86%
rename from spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationTests.java
rename to spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationIntegrationTest.java
index 7e2bc1cb37..b362d72705 100644
--- a/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationTests.java
+++ b/spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationIntegrationTest.java
@@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
-public class DataFlowShellApplicationTests {
+public class LogSinkApplicationIntegrationTest {
@Test
public void contextLoads() {
diff --git a/spring-cloud-data-flow/time-processor/pom.xml b/spring-cloud-data-flow/time-processor/pom.xml
index bc2efe7754..8277c9c836 100644
--- a/spring-cloud-data-flow/time-processor/pom.xml
+++ b/spring-cloud-data-flow/time-processor/pom.xml
@@ -49,14 +49,57 @@
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
diff --git a/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationIntegrationTest.java b/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationIntegrationTest.java
new file mode 100644
index 0000000000..9bd0fd8c24
--- /dev/null
+++ b/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung.spring.cloud;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class TimeProcessorApplicationIntegrationTest {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationTests.java b/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationTests.java
deleted file mode 100644
index 875346f9db..0000000000
--- a/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationTests.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung.spring.cloud;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest
-public class TimeProcessorApplicationTests {
-
- @Test
- public void contextLoads() {
- }
-
-}
diff --git a/spring-cloud-data-flow/time-source/pom.xml b/spring-cloud-data-flow/time-source/pom.xml
index 587b782227..086d761f78 100644
--- a/spring-cloud-data-flow/time-source/pom.xml
+++ b/spring-cloud-data-flow/time-source/pom.xml
@@ -49,14 +49,57 @@
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
diff --git a/spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationTests.java b/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationIntegrationTest.java
similarity index 85%
rename from spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationTests.java
rename to spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationIntegrationTest.java
index 9f88c7f632..6d71a785a3 100644
--- a/spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationTests.java
+++ b/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationIntegrationTest.java
@@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
-public class LogSinkApplicationTests {
+public class TimeSourceApplicationIntegrationTest {
@Test
public void contextLoads() {
diff --git a/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationTests.java b/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationTests.java
deleted file mode 100644
index 61fd8323d2..0000000000
--- a/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationTests.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung.spring.cloud;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest
-public class TimeSourceApplicationTests {
-
- @Test
- public void contextLoads() {
- }
-
-}
diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java
index f008dff90e..e607144f11 100644
--- a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java
+++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java
@@ -1,6 +1,8 @@
package com.baeldung.spring.cloud.bootstrap.config;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@@ -9,11 +11,19 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http
- .authorizeRequests().anyRequest().hasRole("SYSTEM").and()
- .httpBasic().and()
- .csrf().disable();
- }
+ @Autowired
+ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{
+ auth.inMemoryAuthentication().withUser("configUser").password("configPassword").roles("SYSTEM");
+ }
+
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ http.authorizeRequests()
+ .anyRequest().hasRole("SYSTEM")
+ .and()
+ .httpBasic()
+ .and()
+ .csrf()
+ .disable();
+ }
}
diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java
index b8cb66e3e4..b559da6394 100644
--- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java
+++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java
@@ -15,37 +15,51 @@ import org.springframework.security.config.http.SessionCreationPolicy;
@Order(1)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
- @Autowired
- public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
- auth.inMemoryAuthentication().withUser("discUser").password("discPassword").roles("SYSTEM");
+ @Autowired
+ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{
+ auth.inMemoryAuthentication().withUser("discUser").password("discPassword").roles("SYSTEM");
+ }
+
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ http.sessionManagement()
+ .sessionCreationPolicy(SessionCreationPolicy.ALWAYS)
+ .and()
+ .requestMatchers()
+ .antMatchers("/eureka/**")
+ .and()
+ .authorizeRequests()
+ .antMatchers("/eureka/**").hasRole("SYSTEM")
+ .anyRequest().denyAll()
+ .and()
+ .httpBasic()
+ .and()
+ .csrf()
+ .disable();
+ }
+
+ @Configuration
+ //no order tag means this is the last security filter to be evaluated
+ public static class AdminSecurityConfig extends WebSecurityConfigurerAdapter {
+
+ @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
+ auth.inMemoryAuthentication();
}
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http
- .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.ALWAYS).and()
- .requestMatchers().antMatchers("/eureka/**").and()
- .authorizeRequests()
- .antMatchers("/eureka/**").hasRole("SYSTEM")
- .anyRequest().denyAll().and()
- .httpBasic().and()
- .csrf().disable();
- }
-
- @Configuration
- //no order tag means this is the last security filter to be evaluated
- public static class AdminSecurityConfig extends WebSecurityConfigurerAdapter {
-
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http
- .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER).and()
- .httpBasic().disable()
- .authorizeRequests()
- .antMatchers(HttpMethod.GET, "/").hasRole("ADMIN")
- .antMatchers("/info", "/health").authenticated()
- .anyRequest().denyAll().and()
- .csrf().disable();
- }
+ @Override protected void configure(HttpSecurity http) throws Exception {
+ http
+ .sessionManagement()
+ .sessionCreationPolicy(SessionCreationPolicy.NEVER)
+ .and()
+ .httpBasic()
+ .disable()
+ .authorizeRequests()
+ .antMatchers(HttpMethod.GET, "/").hasRole("ADMIN")
+ .antMatchers("/info","/health").authenticated()
+ .anyRequest().denyAll()
+ .and()
+ .csrf()
+ .disable();
}
+ }
}
diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java
index 417b61d238..60dccf9042 100644
--- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java
+++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java
@@ -11,23 +11,27 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
- @Autowired
- public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
- auth.inMemoryAuthentication()
- .withUser("user").password("password").roles("USER").and()
- .withUser("admin").password("admin").roles("ADMIN");
- }
+ @Autowired
+ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
+ auth.inMemoryAuthentication()
+ .withUser("user").password("password").roles("USER")
+ .and()
+ .withUser("admin").password("admin").roles("ADMIN");
+ }
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http
- .authorizeRequests()
- .antMatchers("/resource/hello/cloud").permitAll()
- .antMatchers("/eureka/**").hasRole("ADMIN")
- .anyRequest().authenticated().and()
- .formLogin().and()
- .logout().permitAll()
- .logoutSuccessUrl("/resource/hello/cloud").permitAll().and()
- .csrf().disable();
- }
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ http.authorizeRequests()
+ .antMatchers("/resource/hello/cloud").permitAll()
+ .antMatchers("/eureka/**").hasRole("ADMIN")
+ .anyRequest().authenticated()
+ .and()
+ .formLogin()
+ .and()
+ .logout().permitAll()
+ .logoutSuccessUrl("/resource/hello/cloud").permitAll()
+ .and()
+ .csrf()
+ .disable();
+ }
}
diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java
index 813956676e..0b0de6ec20 100644
--- a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java
+++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java
@@ -1,6 +1,8 @@
package com.baeldung.spring.cloud.bootstrap.resource;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@@ -9,15 +11,23 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http
- .httpBasic().disable()
- .authorizeRequests()
- .antMatchers("/hello/cloud").permitAll()
- .antMatchers("/hello/user").hasAnyRole("USER", "ADMIN")
- .antMatchers("/hello/admin").hasRole("ADMIN")
- .anyRequest().authenticated().and()
- .csrf().disable();
- }
+ @Autowired
+ public void configureGlobal1(AuthenticationManagerBuilder auth) throws Exception {
+ //try in memory auth with no users to support the case that this will allow for users that are logged in to go anywhere
+ auth.inMemoryAuthentication();
+ }
+
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ http.httpBasic()
+ .disable()
+ .authorizeRequests()
+ .antMatchers("/hello/cloud").permitAll()
+ .antMatchers("/hello/user").hasAnyRole("USER", "ADMIN")
+ .antMatchers("/hello/admin").hasRole("ADMIN")
+ .anyRequest().authenticated()
+ .and()
+ .csrf()
+ .disable();
+ }
}
diff --git a/spring-cloud/spring-cloud-config/client-config/config-client-production.properties b/spring-cloud/spring-cloud-config/client-config/config-client-production.properties
deleted file mode 100644
index cd2e14fcc3..0000000000
--- a/spring-cloud/spring-cloud-config/client-config/config-client-production.properties
+++ /dev/null
@@ -1 +0,0 @@
-user.role=User
diff --git a/spring-cloud/spring-cloud-config/client/pom.xml b/spring-cloud/spring-cloud-config/client/pom.xml
index 0ef4b35581..2c4b748e8a 100644
--- a/spring-cloud/spring-cloud-config/client/pom.xml
+++ b/spring-cloud/spring-cloud-config/client/pom.xml
@@ -6,49 +6,30 @@
com.baeldung.spring.cloud
spring-cloud-config
- 0.0.1-SNAPSHOT
+ 1.0-SNAPSHOT
client
- jar
-
- client
- Demo project for Spring Cloud Config Client
-
-
- UTF-8
- UTF-8
- 1.8
-
org.springframework.cloud
spring-cloud-starter-config
+ 1.2.0.RELEASE
org.springframework.boot
spring-boot-starter-web
+ ${org.springframework.boot.version}
org.springframework.boot
spring-boot-starter-test
+ ${org.springframework.boot.version}
test
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- Brixton.BUILD-SNAPSHOT
- pom
- import
-
-
-
-
@@ -57,23 +38,4 @@
-
-
-
- spring-snapshots
- Spring Snapshots
- https://repo.spring.io/snapshot
-
- true
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
- false
-
-
-
diff --git a/spring-cloud/spring-cloud-config/client/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-config/client/src/main/resources/bootstrap.properties
index 18982a93b5..5dde8baa28 100644
--- a/spring-cloud/spring-cloud-config/client/src/main/resources/bootstrap.properties
+++ b/spring-cloud/spring-cloud-config/client/src/main/resources/bootstrap.properties
@@ -3,3 +3,4 @@ spring.profiles.active=development
spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.username=root
spring.cloud.config.password=s3cr3t
+spring.cloud.config.fail-fast=true
diff --git a/spring-cloud/spring-cloud-config/client-config/config-client-development.properties b/spring-cloud/spring-cloud-config/config-repo/config-client-development.properties
similarity index 100%
rename from spring-cloud/spring-cloud-config/client-config/config-client-development.properties
rename to spring-cloud/spring-cloud-config/config-repo/config-client-development.properties
diff --git a/spring-cloud/spring-cloud-config/config-repo/config-client-production.properties b/spring-cloud/spring-cloud-config/config-repo/config-client-production.properties
new file mode 100644
index 0000000000..ca00f0e390
--- /dev/null
+++ b/spring-cloud/spring-cloud-config/config-repo/config-client-production.properties
@@ -0,0 +1,2 @@
+user.role=User
+user.password=pass
diff --git a/spring-cloud/spring-cloud-config/pom.xml b/spring-cloud/spring-cloud-config/pom.xml
index 8e0e4b8706..7d9fd97ee4 100644
--- a/spring-cloud/spring-cloud-config/pom.xml
+++ b/spring-cloud/spring-cloud-config/pom.xml
@@ -5,7 +5,7 @@
com.baeldung.spring.cloud
spring-cloud-config
- 0.0.1-SNAPSHOT
+ 1.0-SNAPSHOT
pom
@@ -16,9 +16,22 @@
org.springframework.boot
spring-boot-starter-parent
- 1.3.5.RELEASE
+ 1.4.1.RELEASE
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ Camden.SR1
+ pom
+ import
+
+
+
+
@@ -36,7 +49,10 @@
- 1.3.5.RELEASE
+ UTF-8
+ UTF-8
+ 1.8
+ 1.4.1.RELEASE
2.19.1
diff --git a/spring-cloud/spring-cloud-config/server/pom.xml b/spring-cloud/spring-cloud-config/server/pom.xml
index c3f68854bb..33fac435b1 100644
--- a/spring-cloud/spring-cloud-config/server/pom.xml
+++ b/spring-cloud/spring-cloud-config/server/pom.xml
@@ -6,77 +6,42 @@
com.baeldung.spring.cloud
spring-cloud-config
- 0.0.1-SNAPSHOT
+ 1.0-SNAPSHOT
server
- server
- Demo project for Spring Cloud Config Server
-
-
- UTF-8
- UTF-8
- 1.8
-
-
org.springframework.cloud
spring-cloud-config-server
+ 1.2.0.RELEASE
org.springframework.boot
spring-boot-starter-security
+ ${org.springframework.boot.version}
org.springframework.boot
spring-boot-starter-web
+ ${org.springframework.boot.version}
org.springframework.boot
spring-boot-starter-test
+ ${org.springframework.boot.version}
test
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- Brixton.BUILD-SNAPSHOT
- pom
- import
-
-
-
-
org.springframework.boot
spring-boot-maven-plugin
+ ${org.springframework.boot.version}
-
-
-
- spring-snapshots
- Spring Snapshots
- https://repo.spring.io/snapshot
-
- true
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
- false
-
-
-
diff --git a/spring-cloud/spring-cloud-config/server/src/main/java/com/baeldung/spring/cloud/config/server/ConfigServer.java b/spring-cloud/spring-cloud-config/server/src/main/java/com/baeldung/spring/cloud/config/server/ConfigServer.java
index 4dd34ae3ff..7c5933e509 100644
--- a/spring-cloud/spring-cloud-config/server/src/main/java/com/baeldung/spring/cloud/config/server/ConfigServer.java
+++ b/spring-cloud/spring-cloud-config/server/src/main/java/com/baeldung/spring/cloud/config/server/ConfigServer.java
@@ -3,11 +3,9 @@ package com.baeldung.spring.cloud.config.server;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
@SpringBootApplication
@EnableConfigServer
-@EnableWebSecurity
public class ConfigServer {
public static void main(String[] args) {
SpringApplication.run(ConfigServer.class, args);
diff --git a/spring-cloud/spring-cloud-config/server/src/main/resources/application.properties b/spring-cloud/spring-cloud-config/server/src/main/resources/application.properties
index 2131f3b249..3d4f3bcd47 100644
--- a/spring-cloud/spring-cloud-config/server/src/main/resources/application.properties
+++ b/spring-cloud/spring-cloud-config/server/src/main/resources/application.properties
@@ -1,6 +1,6 @@
server.port=8888
-spring.cloud.config.server.git.uri=https://github.com/eugenp/tutorials/tree/master/spring-cloud-config/client-config
-spring.cloud.config.server.git.clone-on-start=false
+spring.cloud.config.server.git.uri=
+spring.cloud.config.server.git.clone-on-start=true
security.user.name=root
security.user.password=s3cr3t
encrypt.key-store.location=classpath:/config-server.jks
diff --git a/dependency-injection/.gitignore b/spring-core/.gitignore
similarity index 100%
rename from dependency-injection/.gitignore
rename to spring-core/.gitignore
diff --git a/dependency-injection/README.md b/spring-core/README.md
similarity index 100%
rename from dependency-injection/README.md
rename to spring-core/README.md
diff --git a/dependency-injection/pom.xml b/spring-core/pom.xml
similarity index 65%
rename from dependency-injection/pom.xml
rename to spring-core/pom.xml
index 9e78a66ad6..9b94ba7b35 100644
--- a/dependency-injection/pom.xml
+++ b/spring-core/pom.xml
@@ -66,9 +66,10 @@
org.apache.maven.plugins
maven-surefire-plugin
-
- **/*Test.java
-
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
@@ -85,6 +86,41 @@
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
+
2.6
diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java
similarity index 100%
rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java
rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java
diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java
similarity index 100%
rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java
rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java
diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java
similarity index 100%
rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java
rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java
diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java
similarity index 100%
rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java
rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java
diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java
similarity index 100%
rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java
rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java
diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java
similarity index 100%
rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java
rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java
diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java
similarity index 100%
rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java
rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java
diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java
similarity index 100%
rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java
rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java
diff --git a/dependency-injection/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java b/spring-core/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java
similarity index 100%
rename from dependency-injection/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java
rename to spring-core/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java
diff --git a/dependency-injection/src/main/java/com/baeldung/dependency/ArbitraryDependency.java b/spring-core/src/main/java/com/baeldung/dependency/ArbitraryDependency.java
similarity index 100%
rename from dependency-injection/src/main/java/com/baeldung/dependency/ArbitraryDependency.java
rename to spring-core/src/main/java/com/baeldung/dependency/ArbitraryDependency.java
diff --git a/dependency-injection/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java b/spring-core/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java
similarity index 100%
rename from dependency-injection/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java
rename to spring-core/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java
diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java b/spring-core/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java
similarity index 95%
rename from dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java
rename to spring-core/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java
index b736871f85..a78799f1d9 100644
--- a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java
+++ b/spring-core/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java
@@ -16,7 +16,7 @@ import static org.junit.Assert.assertNotNull;
@ContextConfiguration(
loader = AnnotationConfigContextLoader.class,
classes = ApplicationContextTestAutowiredType.class)
-public class FieldAutowiredTest {
+public class FieldAutowiredIntegrationTest {
@Autowired
private ArbitraryDependency fieldDependency;
diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java b/spring-core/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java
similarity index 95%
rename from dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java
rename to spring-core/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java
index cbdac68543..8f09e73c33 100644
--- a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java
+++ b/spring-core/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java
@@ -16,7 +16,7 @@ import static org.junit.Assert.assertNotNull;
@ContextConfiguration(
loader = AnnotationConfigContextLoader.class,
classes = ApplicationContextTestAutowiredName.class)
-public class FieldAutowiredNameTest {
+public class FieldAutowiredNameIntegrationTest {
@Autowired
private ArbitraryDependency autowiredFieldDependency;
diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java b/spring-core/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java
similarity index 96%
rename from dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java
rename to spring-core/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java
index cbc3d56f67..01317aef6f 100644
--- a/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java
+++ b/spring-core/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java
@@ -17,7 +17,7 @@ import static org.junit.Assert.assertNotNull;
@ContextConfiguration(
loader = AnnotationConfigContextLoader.class,
classes = ApplicationContextTestAutowiredQualifier.class)
-public class FieldQualifierAutowiredTest {
+public class FieldQualifierAutowiredIntegrationTest {
@Autowired
@Qualifier("autowiredFieldDependency")
diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java b/spring-core/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java
similarity index 95%
rename from dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java
rename to spring-core/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java
index 665c9f1ddc..f5897febab 100644
--- a/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java
+++ b/spring-core/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java
@@ -18,7 +18,7 @@ import static org.junit.Assert.assertNotNull;
@ContextConfiguration(
loader = AnnotationConfigContextLoader.class,
classes = ApplicationContextTestInjectName.class)
-public class FieldByNameInjectTest {
+public class FieldByNameInjectIntegrationTest {
@Inject
@Named("yetAnotherFieldInjectDependency")
diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java b/spring-core/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java
similarity index 95%
rename from dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java
rename to spring-core/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java
index 7561c39e76..45b7c8015c 100644
--- a/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java
+++ b/spring-core/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java
@@ -17,7 +17,7 @@ import static org.junit.Assert.assertNotNull;
@ContextConfiguration(
loader = AnnotationConfigContextLoader.class,
classes = ApplicationContextTestInjectType.class)
-public class FieldInjectTest {
+public class FieldInjectIntegrationTest {
@Inject
private ArbitraryDependency fieldInjectDependency;
diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java b/spring-core/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java
similarity index 96%
rename from dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java
rename to spring-core/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java
index 7e5f7e7453..0fd6a0e4c1 100644
--- a/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java
+++ b/spring-core/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java
@@ -17,7 +17,7 @@ import static org.junit.Assert.assertNotNull;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class,
classes = ApplicationContextTestInjectQualifier.class)
-public class FieldQualifierInjectTest {
+public class FieldQualifierInjectIntegrationTest {
@Inject
@Qualifier("defaultFile")
diff --git a/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java b/spring-core/src/test/java/com/baeldung/resource/FieldResourceInjectionIntegrationTest.java
similarity index 94%
rename from dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java
rename to spring-core/src/test/java/com/baeldung/resource/FieldResourceInjectionIntegrationTest.java
index ef7e7b0aeb..63a25cb499 100644
--- a/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java
+++ b/spring-core/src/test/java/com/baeldung/resource/FieldResourceInjectionIntegrationTest.java
@@ -17,7 +17,7 @@ import static org.junit.Assert.assertNotNull;
@ContextConfiguration(
loader = AnnotationConfigContextLoader.class,
classes = ApplicationContextTestResourceNameType.class)
-public class FieldResourceInjectionTest {
+public class FieldResourceInjectionIntegrationTest {
@Resource(name = "namedFile")
private File defaultFile;
diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java b/spring-core/src/test/java/com/baeldung/resource/MethodByQualifierResourceIntegrationTest.java
similarity index 96%
rename from dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java
rename to spring-core/src/test/java/com/baeldung/resource/MethodByQualifierResourceIntegrationTest.java
index 95e9fc0bd5..f5bb9f10cf 100644
--- a/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java
+++ b/spring-core/src/test/java/com/baeldung/resource/MethodByQualifierResourceIntegrationTest.java
@@ -18,7 +18,7 @@ import static org.junit.Assert.assertNotNull;
@ContextConfiguration(
loader = AnnotationConfigContextLoader.class,
classes = ApplicationContextTestResourceQualifier.class)
-public class MethodByQualifierResourceTest {
+public class MethodByQualifierResourceIntegrationTest {
private File arbDependency;
private File anotherArbDependency;
diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java b/spring-core/src/test/java/com/baeldung/resource/MethodByTypeResourceIntegrationTest.java
similarity index 95%
rename from dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java
rename to spring-core/src/test/java/com/baeldung/resource/MethodByTypeResourceIntegrationTest.java
index ad9a9a4fb6..171cbfea47 100644
--- a/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java
+++ b/spring-core/src/test/java/com/baeldung/resource/MethodByTypeResourceIntegrationTest.java
@@ -17,7 +17,7 @@ import static org.junit.Assert.assertNotNull;
@ContextConfiguration(
loader = AnnotationConfigContextLoader.class,
classes = ApplicationContextTestResourceNameType.class)
-public class MethodByTypeResourceTest {
+public class MethodByTypeResourceIntegrationTest {
private File defaultFile;
diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java b/spring-core/src/test/java/com/baeldung/resource/MethodResourceInjectionIntegrationTest.java
similarity index 95%
rename from dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java
rename to spring-core/src/test/java/com/baeldung/resource/MethodResourceInjectionIntegrationTest.java
index 1622d8896c..2e1c3c39a9 100644
--- a/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java
+++ b/spring-core/src/test/java/com/baeldung/resource/MethodResourceInjectionIntegrationTest.java
@@ -17,7 +17,7 @@ import static org.junit.Assert.assertNotNull;
@ContextConfiguration(
loader = AnnotationConfigContextLoader.class,
classes = ApplicationContextTestResourceNameType.class)
-public class MethodResourceInjectionTest {
+public class MethodResourceInjectionIntegrationTest {
private File defaultFile;
diff --git a/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java b/spring-core/src/test/java/com/baeldung/resource/NamedResourceIntegrationTest.java
similarity index 95%
rename from dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java
rename to spring-core/src/test/java/com/baeldung/resource/NamedResourceIntegrationTest.java
index da104ecaae..d52660e9b8 100644
--- a/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java
+++ b/spring-core/src/test/java/com/baeldung/resource/NamedResourceIntegrationTest.java
@@ -16,7 +16,7 @@ import static org.junit.Assert.assertNotNull;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class,
classes = ApplicationContextTestResourceNameType.class)
-public class NamedResourceTest {
+public class NamedResourceIntegrationTest {
@Resource(name = "namedFile")
private File testFile;
diff --git a/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java b/spring-core/src/test/java/com/baeldung/resource/QualifierResourceInjectionIntegrationTest.java
similarity index 95%
rename from dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java
rename to spring-core/src/test/java/com/baeldung/resource/QualifierResourceInjectionIntegrationTest.java
index 024c8e2bbe..3f812350c9 100644
--- a/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java
+++ b/spring-core/src/test/java/com/baeldung/resource/QualifierResourceInjectionIntegrationTest.java
@@ -18,7 +18,7 @@ import static org.junit.Assert.assertNotNull;
@ContextConfiguration(
loader = AnnotationConfigContextLoader.class,
classes = ApplicationContextTestResourceQualifier.class)
-public class QualifierResourceInjectionTest {
+public class QualifierResourceInjectionIntegrationTest {
@Resource
@Qualifier("defaultFile")
diff --git a/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java b/spring-core/src/test/java/com/baeldung/resource/SetterResourceInjectionIntegrationTest.java
similarity index 95%
rename from dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java
rename to spring-core/src/test/java/com/baeldung/resource/SetterResourceInjectionIntegrationTest.java
index aa7cfda975..ae13b2336a 100644
--- a/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java
+++ b/spring-core/src/test/java/com/baeldung/resource/SetterResourceInjectionIntegrationTest.java
@@ -16,7 +16,7 @@ import static org.junit.Assert.assertNotNull;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class,
classes = ApplicationContextTestResourceNameType.class)
-public class SetterResourceInjectionTest {
+public class SetterResourceInjectionIntegrationTest {
private File defaultFile;
diff --git a/spring-cucumber/pom.xml b/spring-cucumber/pom.xml
index f3b9c983f0..b493962a75 100644
--- a/spring-cucumber/pom.xml
+++ b/spring-cucumber/pom.xml
@@ -73,17 +73,63 @@
-
-
-
+
+
+
org.springframework.boot
spring-boot-maven-plugin
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
diff --git a/spring-cucumber/src/test/java/com/baeldung/CucumberTest.java b/spring-cucumber/src/test/java/com/baeldung/CucumberIntegrationTest.java
similarity index 84%
rename from spring-cucumber/src/test/java/com/baeldung/CucumberTest.java
rename to spring-cucumber/src/test/java/com/baeldung/CucumberIntegrationTest.java
index c31a35b271..56eb810c09 100644
--- a/spring-cucumber/src/test/java/com/baeldung/CucumberTest.java
+++ b/spring-cucumber/src/test/java/com/baeldung/CucumberIntegrationTest.java
@@ -6,5 +6,5 @@ import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resources")
-public class CucumberTest {
+public class CucumberIntegrationTest {
}
\ No newline at end of file
diff --git a/spring-cucumber/src/test/java/com/baeldung/OtherDefs.java b/spring-cucumber/src/test/java/com/baeldung/OtherDefsIntegrationTest.java
similarity index 85%
rename from spring-cucumber/src/test/java/com/baeldung/OtherDefs.java
rename to spring-cucumber/src/test/java/com/baeldung/OtherDefsIntegrationTest.java
index edbc14f319..17f298c3fb 100644
--- a/spring-cucumber/src/test/java/com/baeldung/OtherDefs.java
+++ b/spring-cucumber/src/test/java/com/baeldung/OtherDefsIntegrationTest.java
@@ -3,7 +3,7 @@ package com.baeldung;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.When;
-public class OtherDefs extends SpringIntegrationTest {
+public class OtherDefsIntegrationTest extends SpringIntegrationTest {
@When("^the client calls /baeldung$")
public void the_client_issues_POST_hello() throws Throwable {
executePost("http://localhost:8080/baeldung");
diff --git a/spring-cucumber/src/test/java/com/baeldung/StepDefs.java b/spring-cucumber/src/test/java/com/baeldung/StepDefsIntegrationTest.java
similarity index 93%
rename from spring-cucumber/src/test/java/com/baeldung/StepDefs.java
rename to spring-cucumber/src/test/java/com/baeldung/StepDefsIntegrationTest.java
index 865a1e13fa..8220d5e861 100644
--- a/spring-cucumber/src/test/java/com/baeldung/StepDefs.java
+++ b/spring-cucumber/src/test/java/com/baeldung/StepDefsIntegrationTest.java
@@ -9,7 +9,7 @@ import cucumber.api.java.en.And;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
-public class StepDefs extends SpringIntegrationTest {
+public class StepDefsIntegrationTest extends SpringIntegrationTest {
@When("^the client calls /version$")
public void the_client_issues_GET_version() throws Throwable {
diff --git a/spring-data-cassandra/pom.xml b/spring-data-cassandra/pom.xml
index e5f8779942..5c1a42b8bd 100644
--- a/spring-data-cassandra/pom.xml
+++ b/spring-data-cassandra/pom.xml
@@ -23,6 +23,7 @@
2.1.9.2
2.1.9.2
2.0-0
+ 2.19.1
@@ -108,6 +109,52 @@
1.7
-
-
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${maven-surefire-plugin.version}
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
diff --git a/spring-data-couchbase-2/pom.xml b/spring-data-couchbase-2/pom.xml
index d24ef4aeaa..6716f82246 100644
--- a/spring-data-couchbase-2/pom.xml
+++ b/spring-data-couchbase-2/pom.xml
@@ -86,6 +86,17 @@
1.7
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${maven-surefire-plugin.version}
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
@@ -99,7 +110,7 @@
1.1.3
1.7.12
4.11
-
+ 2.19.1
diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonRepositoryServiceTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonRepositoryServiceIntegrationTest.java
similarity index 78%
rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonRepositoryServiceTest.java
rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonRepositoryServiceIntegrationTest.java
index ce5cf7667d..d710e57def 100644
--- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonRepositoryServiceTest.java
+++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonRepositoryServiceIntegrationTest.java
@@ -3,7 +3,7 @@ package org.baeldung.spring.data.couchbase.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
-public class PersonRepositoryServiceTest extends PersonServiceTest {
+public class PersonRepositoryServiceIntegrationTest extends PersonServiceIntegrationTest {
@Autowired
@Qualifier("PersonRepositoryService")
diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonServiceTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonServiceIntegrationTest.java
similarity index 98%
rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonServiceTest.java
rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonServiceIntegrationTest.java
index c3bf9f2138..4044183849 100644
--- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonServiceTest.java
+++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonServiceIntegrationTest.java
@@ -20,7 +20,7 @@ import com.couchbase.client.java.CouchbaseCluster;
import com.couchbase.client.java.document.JsonDocument;
import com.couchbase.client.java.document.json.JsonObject;
-public abstract class PersonServiceTest extends IntegrationTest {
+public abstract class PersonServiceIntegrationTest extends IntegrationTest {
static final String typeField = "_class";
static final String john = "John";
diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonTemplateServiceTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonTemplateServiceIntegrationTest.java
similarity index 79%
rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonTemplateServiceTest.java
rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonTemplateServiceIntegrationTest.java
index 0238fa21fb..e19df8fc84 100644
--- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonTemplateServiceTest.java
+++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonTemplateServiceIntegrationTest.java
@@ -3,7 +3,7 @@ package org.baeldung.spring.data.couchbase.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
-public class PersonTemplateServiceTest extends PersonServiceTest {
+public class PersonTemplateServiceIntegrationTest extends PersonServiceIntegrationTest {
@Autowired
@Qualifier("PersonTemplateService")
diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentRepositoryServiceTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentRepositoryServiceIntegrationTest.java
similarity index 78%
rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentRepositoryServiceTest.java
rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentRepositoryServiceIntegrationTest.java
index 040453fd73..3b3f2a531a 100644
--- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentRepositoryServiceTest.java
+++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentRepositoryServiceIntegrationTest.java
@@ -3,7 +3,7 @@ package org.baeldung.spring.data.couchbase.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
-public class StudentRepositoryServiceTest extends StudentServiceTest {
+public class StudentRepositoryServiceIntegrationTest extends StudentServiceIntegrationTest {
@Autowired
@Qualifier("StudentRepositoryService")
diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentServiceTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentServiceIntegrationTest.java
similarity index 98%
rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentServiceTest.java
rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentServiceIntegrationTest.java
index 0bf2c5d673..fba549a9e5 100644
--- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentServiceTest.java
+++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentServiceIntegrationTest.java
@@ -22,7 +22,7 @@ import com.couchbase.client.java.CouchbaseCluster;
import com.couchbase.client.java.document.JsonDocument;
import com.couchbase.client.java.document.json.JsonObject;
-public abstract class StudentServiceTest extends IntegrationTest {
+public abstract class StudentServiceIntegrationTest extends IntegrationTest {
static final String typeField = "_class";
static final String joe = "Joe";
diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentTemplateServiceTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentTemplateServiceIntegrationTest.java
similarity index 79%
rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentTemplateServiceTest.java
rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentTemplateServiceIntegrationTest.java
index dd5be8e059..29fd605bc6 100644
--- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentTemplateServiceTest.java
+++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentTemplateServiceIntegrationTest.java
@@ -3,7 +3,7 @@ package org.baeldung.spring.data.couchbase.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
-public class StudentTemplateServiceTest extends StudentServiceTest {
+public class StudentTemplateServiceIntegrationTest extends StudentServiceIntegrationTest {
@Autowired
@Qualifier("StudentTemplateService")
diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/CampusServiceImplTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/CampusServiceImplIntegrationTest.java
similarity index 98%
rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/CampusServiceImplTest.java
rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/CampusServiceImplIntegrationTest.java
index d3982e1ecc..71648cf59b 100644
--- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/CampusServiceImplTest.java
+++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/CampusServiceImplIntegrationTest.java
@@ -18,7 +18,7 @@ import org.springframework.data.geo.Distance;
import org.springframework.data.geo.Metrics;
import org.springframework.data.geo.Point;
-public class CampusServiceImplTest extends MultiBucketIntegationTest {
+public class CampusServiceImplIntegrationTest extends MultiBucketIntegationTest {
@Autowired
private CampusServiceImpl campusService;
diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/PersonServiceImplTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/PersonServiceImplIntegrationTest.java
similarity index 98%
rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/PersonServiceImplTest.java
rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/PersonServiceImplIntegrationTest.java
index e1a880d9da..819798d536 100644
--- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/PersonServiceImplTest.java
+++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/PersonServiceImplIntegrationTest.java
@@ -21,7 +21,7 @@ import com.couchbase.client.java.CouchbaseCluster;
import com.couchbase.client.java.document.JsonDocument;
import com.couchbase.client.java.document.json.JsonObject;
-public class PersonServiceImplTest extends MultiBucketIntegationTest {
+public class PersonServiceImplIntegrationTest extends MultiBucketIntegationTest {
static final String typeField = "_class";
static final String john = "John";
diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/StudentServiceImplTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/StudentServiceImplIntegrationTest.java
similarity index 98%
rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/StudentServiceImplTest.java
rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/StudentServiceImplIntegrationTest.java
index c503726377..f37f11744d 100644
--- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/StudentServiceImplTest.java
+++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/StudentServiceImplIntegrationTest.java
@@ -23,7 +23,7 @@ import com.couchbase.client.java.CouchbaseCluster;
import com.couchbase.client.java.document.JsonDocument;
import com.couchbase.client.java.document.json.JsonObject;
-public class StudentServiceImplTest extends MultiBucketIntegationTest {
+public class StudentServiceImplIntegrationTest extends MultiBucketIntegationTest {
static final String typeField = "_class";
static final String joe = "Joe";
diff --git a/spring-data-dynamodb/.gitignore b/spring-data-dynamodb/.gitignore
new file mode 100644
index 0000000000..e26d6af438
--- /dev/null
+++ b/spring-data-dynamodb/.gitignore
@@ -0,0 +1,4 @@
+/target/
+.settings/
+.classpath
+.project
diff --git a/spring-data-dynamodb/README.MD b/spring-data-dynamodb/README.MD
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/spring-data-dynamodb/README.MD
@@ -0,0 +1 @@
+
diff --git a/spring-data-dynamodb/pom.xml b/spring-data-dynamodb/pom.xml
new file mode 100644
index 0000000000..11e1366f3e
--- /dev/null
+++ b/spring-data-dynamodb/pom.xml
@@ -0,0 +1,177 @@
+
+ 4.0.0
+ com.baeldung
+ spring-boot-dynamodb
+ 0.0.1-SNAPSHOT
+ jar
+ Spring Boot Actuator
+ This is simple boot application for Spring boot actuator test
+
+
+ spring-boot-starter-parent
+ org.springframework.boot
+ 1.2.3.RELEASE
+
+
+
+
+
+ com.baeldung.Application
+ UTF-8
+ 1.8
+ 4.3.1.RELEASE
+
+
+
+
+
+ org.springframework.data
+ spring-data-releasetrain
+ Gosling-SR1
+ pom
+ import
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+
+ io.dropwizard.metrics
+ metrics-core
+
+
+
+ com.h2database
+ h2
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ com.jayway.jsonpath
+ json-path
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-mail
+
+
+
+ org.webjars
+ bootstrap
+ 3.3.4
+
+
+
+ com.amazonaws
+ aws-java-sdk-dynamodb
+ 1.11.34
+
+
+ com.github.derjust
+ spring-data-dynamodb
+ 4.3.1
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.2
+
+
+
+
+ spring-boot
+
+
+ src/main/resources
+ true
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.8
+ 1.8
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+
+
+
+
+
+
+ spring-snapshots
+ Spring Snapshots
+ https://repo.spring.io/snapshot
+
+ true
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+ false
+
+
+
+
+
+ spring-snapshots
+ Spring Snapshots
+ https://repo.spring.io/snapshot
+
+ true
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+ false
+
+
+
+
+
diff --git a/spring-data-dynamodb/src/main/java/com/baeldung/Application.java b/spring-data-dynamodb/src/main/java/com/baeldung/Application.java
new file mode 100644
index 0000000000..f5e0e98fd4
--- /dev/null
+++ b/spring-data-dynamodb/src/main/java/com/baeldung/Application.java
@@ -0,0 +1,13 @@
+package com.baeldung;
+
+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);
+ }
+}
diff --git a/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/config/DynamoDBConfig.java b/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/config/DynamoDBConfig.java
new file mode 100644
index 0000000000..271c1e29ab
--- /dev/null
+++ b/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/config/DynamoDBConfig.java
@@ -0,0 +1,40 @@
+package com.baeldung.spring.data.dynamodb.config;
+
+import com.amazonaws.auth.AWSCredentials;
+import com.amazonaws.auth.BasicAWSCredentials;
+import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
+import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
+import org.socialsignin.spring.data.dynamodb.repository.config.EnableDynamoDBRepositories;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.util.StringUtils;
+
+@Configuration
+@EnableDynamoDBRepositories(basePackages = "com.baeldung.spring.data.dynamodb.repositories")
+public class DynamoDBConfig {
+
+ @Value("${amazon.dynamodb.endpoint}")
+ private String amazonDynamoDBEndpoint;
+
+ @Value("${amazon.aws.accesskey}")
+ private String amazonAWSAccessKey;
+
+ @Value("${amazon.aws.secretkey}")
+ private String amazonAWSSecretKey;
+
+ @Bean
+ public AmazonDynamoDB amazonDynamoDB() {
+ AmazonDynamoDB amazonDynamoDB = new AmazonDynamoDBClient(amazonAWSCredentials());
+ if (!StringUtils.isEmpty(amazonDynamoDBEndpoint)) {
+ amazonDynamoDB.setEndpoint(amazonDynamoDBEndpoint);
+ }
+ return amazonDynamoDB;
+ }
+
+ @Bean
+ public AWSCredentials amazonAWSCredentials() {
+ return new BasicAWSCredentials(amazonAWSAccessKey, amazonAWSSecretKey);
+ }
+
+}
diff --git a/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/model/ProductInfo.java b/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/model/ProductInfo.java
new file mode 100644
index 0000000000..3b9b0628dd
--- /dev/null
+++ b/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/model/ProductInfo.java
@@ -0,0 +1,49 @@
+package com.baeldung.spring.data.dynamodb.model;
+
+import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute;
+import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAutoGeneratedKey;
+import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey;
+import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable;
+
+@DynamoDBTable(tableName = "ProductInfo")
+public class ProductInfo {
+ private String id;
+ private String msrp;
+ private String cost;
+
+ public ProductInfo() {
+ }
+
+ public ProductInfo(String cost, String msrp) {
+ this.msrp = msrp;
+ this.cost = cost;
+ }
+
+ @DynamoDBHashKey
+ @DynamoDBAutoGeneratedKey
+ public String getId() {
+ return id;
+ }
+
+ @DynamoDBAttribute
+ public String getMsrp() {
+ return msrp;
+ }
+
+ @DynamoDBAttribute
+ public String getCost() {
+ return cost;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public void setMsrp(String msrp) {
+ this.msrp = msrp;
+ }
+
+ public void setCost(String cost) {
+ this.cost = cost;
+ }
+}
diff --git a/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/repositories/ProductInfoRepository.java b/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/repositories/ProductInfoRepository.java
new file mode 100644
index 0000000000..da47f033b6
--- /dev/null
+++ b/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/repositories/ProductInfoRepository.java
@@ -0,0 +1,12 @@
+package com.baeldung.spring.data.dynamodb.repositories;
+
+import com.baeldung.spring.data.dynamodb.model.ProductInfo;
+import org.socialsignin.spring.data.dynamodb.repository.EnableScan;
+import org.springframework.data.repository.CrudRepository;
+
+import java.util.List;
+
+@EnableScan
+public interface ProductInfoRepository extends CrudRepository {
+ List findById(String id);
+}
diff --git a/spring-data-dynamodb/src/main/resources/application.properties b/spring-data-dynamodb/src/main/resources/application.properties
new file mode 100644
index 0000000000..e6911bc9e7
--- /dev/null
+++ b/spring-data-dynamodb/src/main/resources/application.properties
@@ -0,0 +1,32 @@
+server.port=8080
+server.contextPath=/springbootapp
+management.port=8081
+management.address=127.0.0.1
+
+endpoints.shutdown.enabled=true
+
+endpoints.jmx.domain=Spring Sample Application
+endpoints.jmx.uniqueNames=true
+
+spring.jmx.enabled=true
+endpoints.jmx.enabled=true
+
+## for pretty printing of json when endpoints accessed over HTTP
+http.mappers.jsonPrettyPrint=true
+
+## Configuring info endpoint
+info.app.name=Spring Sample Application
+info.app.description=This is my first spring boot application G1
+info.app.version=1.0.0
+
+## Spring Security Configurations
+security.user.name=admin1
+security.user.password=secret1
+management.security.role=SUPERUSER
+
+logging.level.org.springframework=INFO
+
+#AWS Keys
+amazon.dynamodb.endpoint=http://localhost:8000/
+amazon.aws.accesskey=test1
+amazon.aws.secretkey=test1
\ No newline at end of file
diff --git a/spring-data-dynamodb/src/main/resources/demo.properties b/spring-data-dynamodb/src/main/resources/demo.properties
new file mode 100644
index 0000000000..649b64f59b
--- /dev/null
+++ b/spring-data-dynamodb/src/main/resources/demo.properties
@@ -0,0 +1,6 @@
+spring.output.ansi.enabled=never
+server.port=7070
+
+# Security
+security.user.name=admin
+security.user.password=password
\ No newline at end of file
diff --git a/spring-data-dynamodb/src/main/resources/logback.xml b/spring-data-dynamodb/src/main/resources/logback.xml
new file mode 100644
index 0000000000..c0bc602910
--- /dev/null
+++ b/spring-data-dynamodb/src/main/resources/logback.xml
@@ -0,0 +1,14 @@
+
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
+
+
+
+
+
+
diff --git a/spring-data-dynamodb/src/main/resources/templates/index.html b/spring-data-dynamodb/src/main/resources/templates/index.html
new file mode 100644
index 0000000000..046d21600a
--- /dev/null
+++ b/spring-data-dynamodb/src/main/resources/templates/index.html
@@ -0,0 +1,19 @@
+
+
+ WebJars Demo
+
+
+
+
+
+
+
×
+
Success! It is working as we expected.
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-data-dynamodb/src/test/java/com/baeldung/spring/data/dynamodb/repository/ProductInfoRepositoryIntegrationTest.java b/spring-data-dynamodb/src/test/java/com/baeldung/spring/data/dynamodb/repository/ProductInfoRepositoryIntegrationTest.java
new file mode 100644
index 0000000000..8fe3e96940
--- /dev/null
+++ b/spring-data-dynamodb/src/test/java/com/baeldung/spring/data/dynamodb/repository/ProductInfoRepositoryIntegrationTest.java
@@ -0,0 +1,77 @@
+package com.baeldung.spring.data.dynamodb.repository;
+
+import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
+import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper;
+import com.amazonaws.services.dynamodbv2.model.CreateTableRequest;
+import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput;
+import com.amazonaws.services.dynamodbv2.model.ResourceInUseException;
+import com.baeldung.Application;
+import com.baeldung.spring.data.dynamodb.model.ProductInfo;
+import com.baeldung.spring.data.dynamodb.repositories.ProductInfoRepository;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.IntegrationTest;
+import org.springframework.boot.test.SpringApplicationConfiguration;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+import java.util.List;
+
+import static org.junit.Assert.assertTrue;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@SpringApplicationConfiguration(classes = Application.class)
+@WebAppConfiguration
+@IntegrationTest
+@ActiveProfiles("local")
+@TestPropertySource(properties = { "amazon.dynamodb.endpoint=http://localhost:8000/", "amazon.aws.accesskey=test1", "amazon.aws.secretkey=test231" })
+public class ProductInfoRepositoryIntegrationTest {
+
+ private DynamoDBMapper dynamoDBMapper;
+
+ @Autowired
+ private AmazonDynamoDB amazonDynamoDB;
+
+ @Autowired
+ ProductInfoRepository repository;
+
+ private static final String EXPECTED_COST = "20";
+ private static final String EXPECTED_PRICE = "50";
+
+ @Before
+ @Ignore //TODO Remove Ignore annotations when running locally with Local DynamoDB instance
+ public void setup() throws Exception {
+
+ try {
+ dynamoDBMapper = new DynamoDBMapper(amazonDynamoDB);
+
+ CreateTableRequest tableRequest = dynamoDBMapper.generateCreateTableRequest(ProductInfo.class);
+
+ tableRequest.setProvisionedThroughput(new ProvisionedThroughput(1L, 1L));
+
+ amazonDynamoDB.createTable(tableRequest);
+ } catch (ResourceInUseException e) {
+ // Do nothing, table already created
+ }
+
+ // TODO How to handle different environments. i.e. AVOID deleting all entries in ProductInfoion table
+ dynamoDBMapper.batchDelete((List) repository.findAll());
+ }
+
+ @Test
+ @Ignore //TODO Remove Ignore annotations when running locally with Local DynamoDB instance
+ public void givenItemWithExpectedCost_whenRunFindAll_thenItemIsFound() {
+
+ ProductInfo productInfo = new ProductInfo(EXPECTED_COST, EXPECTED_PRICE);
+ repository.save(productInfo);
+
+ List result = (List) repository.findAll();
+ assertTrue("Not empty", result.size() > 0);
+ assertTrue("Contains item with expected cost", result.get(0).getCost().equals(EXPECTED_COST));
+ }
+}
diff --git a/spring-data-dynamodb/src/test/resources/application.properties b/spring-data-dynamodb/src/test/resources/application.properties
new file mode 100644
index 0000000000..01e8a2e52e
--- /dev/null
+++ b/spring-data-dynamodb/src/test/resources/application.properties
@@ -0,0 +1,7 @@
+spring.mail.host=localhost
+spring.mail.port=8025
+spring.mail.properties.mail.smtp.auth=false
+
+amazon.dynamodb.endpoint=http://localhost:8000/
+amazon.aws.accesskey=key
+amazon.aws.secretkey=key2
\ No newline at end of file
diff --git a/spring-data-dynamodb/src/test/resources/exception-hibernate.properties b/spring-data-dynamodb/src/test/resources/exception-hibernate.properties
new file mode 100644
index 0000000000..cde746acb9
--- /dev/null
+++ b/spring-data-dynamodb/src/test/resources/exception-hibernate.properties
@@ -0,0 +1,2 @@
+spring.profiles.active=exception
+spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext
diff --git a/spring-data-dynamodb/src/test/resources/exception.properties b/spring-data-dynamodb/src/test/resources/exception.properties
new file mode 100644
index 0000000000..c55e415a3a
--- /dev/null
+++ b/spring-data-dynamodb/src/test/resources/exception.properties
@@ -0,0 +1,6 @@
+# Security
+security.user.name=admin
+security.user.password=password
+
+spring.dao.exceptiontranslation.enabled=false
+spring.profiles.active=exception
\ No newline at end of file
diff --git a/spring-data-elasticsearch/pom.xml b/spring-data-elasticsearch/pom.xml
index 42cf8fc740..dcb702ab16 100644
--- a/spring-data-elasticsearch/pom.xml
+++ b/spring-data-elasticsearch/pom.xml
@@ -20,6 +20,7 @@
1.7.12
1.1.3
2.0.1.RELEASE
+ 2.19.1
@@ -86,4 +87,54 @@
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${maven-surefire-plugin.version}
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchTest.java b/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchIntegrationTest.java
similarity index 99%
rename from spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchTest.java
rename to spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchIntegrationTest.java
index 863e1e4620..1280c8e1de 100644
--- a/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchTest.java
+++ b/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchIntegrationTest.java
@@ -29,7 +29,7 @@ import com.baeldung.spring.data.es.service.ArticleService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Config.class)
-public class ElasticSearchTest {
+public class ElasticSearchIntegrationTest {
@Autowired
private ElasticsearchTemplate elasticsearchTemplate;
diff --git a/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryTest.java b/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryIntegrationTest.java
similarity index 99%
rename from spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryTest.java
rename to spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryIntegrationTest.java
index ddf0ef4dac..cc4bce0c75 100644
--- a/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryTest.java
+++ b/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryIntegrationTest.java
@@ -42,7 +42,7 @@ import com.baeldung.spring.data.es.service.ArticleService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Config.class)
-public class ElasticSearchQueryTest {
+public class ElasticSearchQueryIntegrationTest {
@Autowired
private ElasticsearchTemplate elasticsearchTemplate;
diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml
index 102344a3fa..fd212548d0 100644
--- a/spring-data-mongodb/pom.xml
+++ b/spring-data-mongodb/pom.xml
@@ -112,9 +112,55 @@
1.8
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${maven-surefire-plugin.version}
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
+
UTF-8
@@ -130,6 +176,7 @@
1.7.12
1.1.3
+ 2.19.1
diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml
index b0cf62ef2e..653dd6b2f6 100644
--- a/spring-data-neo4j/pom.xml
+++ b/spring-data-neo4j/pom.xml
@@ -13,6 +13,7 @@
UTF-8
3.0.1
4.1.1.RELEASE
+ 2.19.1
@@ -83,12 +84,57 @@
-
-
-
- maven-compiler-plugin
-
-
-
+
+
+
+ maven-compiler-plugin
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${maven-surefire-plugin.version}
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryIntegrationTest.java
similarity index 97%
rename from spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java
rename to spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryIntegrationTest.java
index 0e54208c31..95bc38aafc 100644
--- a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java
+++ b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryIntegrationTest.java
@@ -24,7 +24,7 @@ import static org.junit.Assert.assertNotNull;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = MovieDatabaseNeo4jTestConfiguration.class)
@ActiveProfiles(profiles = "test")
-public class MovieRepositoryTest {
+public class MovieRepositoryIntegrationTest {
@Autowired
private MovieRepository movieRepository;
@@ -32,7 +32,7 @@ public class MovieRepositoryTest {
@Autowired
private PersonRepository personRepository;
- public MovieRepositoryTest() {
+ public MovieRepositoryIntegrationTest() {
}
@Before
diff --git a/spring-dispatcher-servlet/pom.xml b/spring-dispatcher-servlet/pom.xml
new file mode 100644
index 0000000000..646db663db
--- /dev/null
+++ b/spring-dispatcher-servlet/pom.xml
@@ -0,0 +1,82 @@
+
+
+ 4.0.0
+
+ spring-dispatcher-servlet
+ war
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+ ..
+
+
+
+
+ javax.servlet
+ javax.servlet-api
+ 3.1.0
+ provided
+
+
+ org.springframework
+ spring-webmvc
+ 4.3.3.RELEASE
+
+
+ org.thymeleaf
+ thymeleaf-spring4
+ 3.0.2.RELEASE
+
+
+ org.slf4j
+ slf4j-api
+ 1.7.21
+
+
+ org.apache.logging.log4j
+ log4j-core
+ 2.7
+
+
+ org.apache.logging.log4j
+ log4j-slf4j-impl
+ 2.7
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.5.1
+
+ 1.8
+ 1.8
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 3.0.0
+
+ false
+
+
+
+ org.eclipse.jetty
+ jetty-maven-plugin
+ 9.3.12.v20160915
+
+
+ /
+
+
+
+
+
+
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/RootConfiguration.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/RootConfiguration.java
new file mode 100644
index 0000000000..48281c5e5d
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/RootConfiguration.java
@@ -0,0 +1,19 @@
+package com.baeldung.spring.dispatcher.servlet;
+
+import com.baeldung.spring.dispatcher.servlet.models.Task;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.*;
+
+@Configuration
+public class RootConfiguration {
+ @Bean
+ public Map> taskList() {
+ Map> taskMap = new HashMap<>();
+ List taskList = new ArrayList<>();
+ taskList.add(new Task("Clean the dishes!", new Date()));
+ taskMap.put("Cid", taskList);
+ return taskMap;
+ }
+}
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebApplicationInitializer.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebApplicationInitializer.java
new file mode 100644
index 0000000000..016e4a8b4c
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebApplicationInitializer.java
@@ -0,0 +1,30 @@
+package com.baeldung.spring.dispatcher.servlet;
+
+import org.springframework.web.context.ContextLoaderListener;
+import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
+import org.springframework.web.servlet.DispatcherServlet;
+
+import javax.servlet.MultipartConfigElement;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRegistration;
+
+public class WebApplicationInitializer implements org.springframework.web.WebApplicationInitializer {
+ @Override
+ public void onStartup(ServletContext servletContext) throws ServletException {
+ AnnotationConfigWebApplicationContext rootContext =
+ new AnnotationConfigWebApplicationContext();
+ rootContext.register(RootConfiguration.class);
+ servletContext.addListener(new ContextLoaderListener(rootContext));
+ AnnotationConfigWebApplicationContext webContext =
+ new AnnotationConfigWebApplicationContext();
+ webContext.register(WebConfiguration.class);
+ DispatcherServlet dispatcherServlet = new DispatcherServlet(webContext);
+ ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher",
+ dispatcherServlet);
+ servlet.addMapping("/*");
+ MultipartConfigElement multipartConfigElement =
+ new MultipartConfigElement("/tmp");
+ servlet.setMultipartConfig(multipartConfigElement);
+ }
+}
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java
new file mode 100644
index 0000000000..419c1a2908
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java
@@ -0,0 +1,129 @@
+package com.baeldung.spring.dispatcher.servlet;
+
+import org.springframework.context.MessageSource;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.support.ResourceBundleMessageSource;
+import org.springframework.ui.context.support.ResourceBundleThemeSource;
+import org.springframework.web.multipart.MultipartResolver;
+import org.springframework.web.multipart.support.StandardServletMultipartResolver;
+import org.springframework.web.servlet.HandlerExceptionResolver;
+import org.springframework.web.servlet.LocaleResolver;
+import org.springframework.web.servlet.ThemeResolver;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+import org.springframework.web.servlet.i18n.CookieLocaleResolver;
+import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
+import org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver;
+import org.springframework.web.servlet.theme.CookieThemeResolver;
+import org.springframework.web.servlet.theme.ThemeChangeInterceptor;
+import org.thymeleaf.spring4.SpringTemplateEngine;
+import org.thymeleaf.spring4.view.ThymeleafViewResolver;
+import org.thymeleaf.templatemode.TemplateMode;
+import org.thymeleaf.templateresolver.ServletContextTemplateResolver;
+
+import javax.servlet.ServletContext;
+import java.util.Locale;
+
+@Configuration
+@ComponentScan("com.baeldung.spring.dispatcher.servlet.web")
+@EnableWebMvc
+public class WebConfiguration extends WebMvcConfigurerAdapter {
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ registry
+ .addResourceHandler("/public/**")
+ .addResourceLocations("/public/");
+ }
+
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ registry.addInterceptor(localeChangeInterceptor());
+ registry.addInterceptor(themeChangeInterceptor());
+ }
+
+ @Bean
+ public ServletContextTemplateResolver templateResolver(ServletContext servletContext) {
+ ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(servletContext);
+ templateResolver.setPrefix("/WEB-INF/views/");
+ templateResolver.setSuffix(".html");
+ templateResolver.setTemplateMode(TemplateMode.HTML);
+ return templateResolver;
+ }
+
+ @Bean
+ public SpringTemplateEngine templateEngine(ServletContextTemplateResolver templateResolver) {
+ SpringTemplateEngine templateEngine = new SpringTemplateEngine();
+ templateEngine.setTemplateResolver(templateResolver);
+ return templateEngine;
+ }
+
+ @Bean
+ public ThymeleafViewResolver viewResolver(SpringTemplateEngine templateEngine) {
+ ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
+ viewResolver.setTemplateEngine(templateEngine);
+ return viewResolver;
+ }
+
+ @Bean
+ public MessageSource messageSource() {
+ ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
+ messageSource.setBasename("messages");
+ messageSource.setFallbackToSystemLocale(false);
+ return messageSource;
+ }
+
+ @Bean
+ public LocaleResolver localeResolver() {
+ CookieLocaleResolver localeResolver = new CookieLocaleResolver();
+ localeResolver.setDefaultLocale(Locale.ENGLISH);
+ localeResolver.setCookieName("locale");
+ localeResolver.setCookieMaxAge(-1);
+ return localeResolver;
+ }
+
+ @Bean
+ public LocaleChangeInterceptor localeChangeInterceptor() {
+ LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
+ localeChangeInterceptor.setParamName("lang");
+ localeChangeInterceptor.setIgnoreInvalidLocale(true);
+ return localeChangeInterceptor;
+ }
+
+ @Bean
+ public ResourceBundleThemeSource themeSource() {
+ ResourceBundleThemeSource themeSource = new ResourceBundleThemeSource();
+ themeSource.setBasenamePrefix("theme-");
+ themeSource.setFallbackToSystemLocale(false);
+ return themeSource;
+ }
+
+ @Bean
+ public ThemeResolver themeResolver() {
+ CookieThemeResolver themeResolver = new CookieThemeResolver();
+ themeResolver.setDefaultThemeName("robotask");
+ themeResolver.setCookieName("theme");
+ themeResolver.setCookieMaxAge(-1);
+ return themeResolver;
+ }
+
+ @Bean
+ public ThemeChangeInterceptor themeChangeInterceptor() {
+ ThemeChangeInterceptor themeChangeInterceptor = new ThemeChangeInterceptor();
+ themeChangeInterceptor.setParamName("theme");
+ return themeChangeInterceptor;
+ }
+
+ @Bean
+ public MultipartResolver multipartResolver() {
+ return new StandardServletMultipartResolver();
+ }
+
+ @Bean
+ public HandlerExceptionResolver handlerExceptionResolver() {
+ return new ExceptionHandlerExceptionResolver();
+ }
+}
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Attachment.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Attachment.java
new file mode 100644
index 0000000000..1d6248650f
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Attachment.java
@@ -0,0 +1,58 @@
+package com.baeldung.spring.dispatcher.servlet.models;
+
+import java.util.UUID;
+
+public class Attachment {
+ private String id;
+
+ private String name;
+
+ private String description;
+
+ public Attachment() {
+ this.id = UUID.randomUUID().toString();
+ }
+
+ public Attachment(String name, String description) {
+ this();
+ this.name = name;
+ this.description = description;
+ }
+
+ 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 String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Attachment that = (Attachment) o;
+ return id.equals(that.id);
+ }
+
+ @Override
+ public int hashCode() {
+ return id.hashCode();
+ }
+}
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Task.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Task.java
new file mode 100644
index 0000000000..1e6a533e3a
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Task.java
@@ -0,0 +1,52 @@
+package com.baeldung.spring.dispatcher.servlet.models;
+
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+
+public class Task {
+ private String description;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd'T'hh:mm")
+ private Date due;
+
+ private Set attachments = new HashSet<>();
+
+ public Task() {
+ }
+
+ public Task(Date due) {
+ this.due = due;
+ }
+
+ public Task(String description, Date due) {
+ this.description = description;
+ this.due = due;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public Date getDue() {
+ return due;
+ }
+
+ public void setDue(Date due) {
+ this.due = due;
+ }
+
+ public Set getAttachments() {
+ return attachments;
+ }
+
+ public void setAttachments(Set attachments) {
+ this.attachments = attachments;
+ }
+}
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/AttachmentController.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/AttachmentController.java
new file mode 100644
index 0000000000..2521004ff1
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/AttachmentController.java
@@ -0,0 +1,17 @@
+package com.baeldung.spring.dispatcher.servlet.web;
+
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@RequestMapping("/attachments")
+public interface AttachmentController {
+ @GetMapping("/{attachmentId}")
+ ResponseEntity getAttachment(
+ @PathVariable("attachmentId") String attachmentId,
+ @RequestParam(name = "download", required = false, defaultValue = "false") boolean forcedDownload
+ );
+}
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/AttachmentControllerImpl.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/AttachmentControllerImpl.java
new file mode 100644
index 0000000000..75a15cf657
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/AttachmentControllerImpl.java
@@ -0,0 +1,45 @@
+package com.baeldung.spring.dispatcher.servlet.web;
+
+import com.baeldung.spring.dispatcher.servlet.models.Task;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.net.URLConnection;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+@Controller
+public class AttachmentControllerImpl implements AttachmentController {
+ @Autowired
+ private Map> taskMap;
+
+ @Override
+ public ResponseEntity getAttachment(
+ @PathVariable("attachmentId") String attachmentId,
+ @RequestParam(name = "download", required = false, defaultValue = "false") boolean forcedDownload
+ ) {
+ FileSystemResource resource = new FileSystemResource("/tmp/" + attachmentId);
+ HttpHeaders headers = new HttpHeaders();
+ taskMap.values().stream()
+ .flatMap(Collection::stream)
+ .flatMap(t -> t.getAttachments().stream())
+ .filter(a -> a.getId().equals(attachmentId))
+ .findFirst()
+ .ifPresent(a -> {
+ headers.add("Content-Disposition",
+ "attachment; filename=" + a.getName());
+ headers.add("Content-Type", forcedDownload ?
+ MediaType.APPLICATION_OCTET_STREAM_VALUE :
+ URLConnection.guessContentTypeFromName(a.getName()));
+ });
+ return new ResponseEntity<>(resource, headers, HttpStatus.OK);
+ }
+}
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java
new file mode 100644
index 0000000000..f25eb601a7
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java
@@ -0,0 +1,19 @@
+package com.baeldung.spring.dispatcher.servlet.web;
+
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+
+@ControllerAdvice
+public class GlobalDefaultExceptionHandler {
+ @ExceptionHandler(Exception.class)
+ public ModelAndView defaultErrorHandler(HttpServletRequest request, Exception e) throws Exception {
+ ModelAndView modelAndView = new ModelAndView();
+ modelAndView.addObject("exception", e);
+ modelAndView.addObject("url", request.getRequestURL());
+ modelAndView.setViewName("error");
+ return modelAndView;
+ }
+}
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeController.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeController.java
new file mode 100644
index 0000000000..5ac39fadb4
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeController.java
@@ -0,0 +1,13 @@
+package com.baeldung.spring.dispatcher.servlet.web;
+
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@RequestMapping("/")
+public interface HomeController {
+ @GetMapping("/*")
+ String home(
+ Model model
+ );
+}
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeControllerImpl.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeControllerImpl.java
new file mode 100644
index 0000000000..66d869ca67
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeControllerImpl.java
@@ -0,0 +1,25 @@
+package com.baeldung.spring.dispatcher.servlet.web;
+
+import com.baeldung.spring.dispatcher.servlet.models.Task;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Controller
+public class HomeControllerImpl implements HomeController {
+ @Autowired
+ private Map> taskMap;
+
+ @Override
+ public String home(Model model) {
+ List users = taskMap.keySet().stream()
+ .sorted()
+ .collect(Collectors.toList());
+ model.addAttribute("users", users);
+ return "home";
+ }
+}
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskController.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskController.java
new file mode 100644
index 0000000000..eff93ffb2f
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskController.java
@@ -0,0 +1,49 @@
+package com.baeldung.spring.dispatcher.servlet.web;
+
+import com.baeldung.spring.dispatcher.servlet.models.Task;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+@RequestMapping("/tasks")
+public interface TaskController {
+ @GetMapping("/{username}/list")
+ String listTasks(
+ @PathVariable("username") String username,
+ Model model
+ );
+
+ @GetMapping("/{username}/add")
+ String addTask(
+ @PathVariable("username") String username,
+ Model model
+ );
+
+ @PostMapping("/{username}/add")
+ String addTask(
+ @PathVariable("username") String username,
+ @ModelAttribute Task task
+ );
+
+ @GetMapping("/{username}/get/{id}")
+ String getTask(
+ @PathVariable("username") String username,
+ @PathVariable("id") int id,
+ Model model
+ );
+
+ @GetMapping("/{username}/get/{id}/attach")
+ String attachToTask(
+ @PathVariable("username") String username,
+ @PathVariable("id") int id,
+ Model model
+ );
+
+ @PostMapping("/{username}/get/{id}/attach")
+ String attachToTask(
+ @PathVariable("username") String username,
+ @PathVariable("id") int id,
+ @RequestParam("attachment") MultipartFile attachment,
+ @RequestParam("description") String description
+ );
+}
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskControllerImpl.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskControllerImpl.java
new file mode 100644
index 0000000000..464e58aa54
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskControllerImpl.java
@@ -0,0 +1,111 @@
+package com.baeldung.spring.dispatcher.servlet.web;
+
+import com.baeldung.spring.dispatcher.servlet.models.Attachment;
+import com.baeldung.spring.dispatcher.servlet.models.Task;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Controller
+public class TaskControllerImpl implements TaskController {
+ @Autowired
+ private Map> taskMap;
+
+ @Override
+ public String listTasks(
+ @PathVariable("username") String username,
+ Model model
+ ) {
+ List tasks = taskMap.get(username).stream()
+ .sorted(Comparator.comparing(Task::getDue))
+ .collect(Collectors.toList());
+ model.addAttribute("username", username);
+ model.addAttribute("tasks", tasks);
+ return "task-list";
+ }
+
+ @Override
+ public String addTask(
+ @PathVariable("username") String username,
+ Model model
+ ) {
+ model.addAttribute("username", username);
+ model.addAttribute("task", new Task(new Date()));
+ return "task-add";
+ }
+
+ @Override
+ public String addTask(
+ @PathVariable("username") String username,
+ @ModelAttribute Task task
+ ) {
+ List taskList = taskMap.get(username);
+ if (taskList == null) {
+ taskList = new ArrayList<>();
+ }
+ taskList.add(task);
+ taskMap.put(username, taskList);
+ return "redirect:list";
+ }
+
+ @Override
+ public String getTask(
+ @PathVariable("username") String username,
+ @PathVariable("id") int id,
+ Model model
+ ) {
+ Task task = taskMap.get(username).get(id);
+ model.addAttribute("username", username);
+ model.addAttribute("id", id);
+ model.addAttribute("task", task);
+ return "task-get";
+ }
+
+ @Override
+ public String attachToTask(
+ @PathVariable("username") String username,
+ @PathVariable("id") int id,
+ Model model
+ ) {
+ model.addAttribute("username", username);
+ model.addAttribute("id", id);
+ return "task-attach";
+ }
+
+ @Override
+ public String attachToTask(
+ @PathVariable("username") String username,
+ @PathVariable("id") int id,
+ @RequestParam("attachment") MultipartFile multipartFile,
+ @RequestParam("description") String description
+ ) {
+ Task task = taskMap.get(username).get(id);
+ Attachment attachment = new Attachment(multipartFile.getOriginalFilename(),
+ description);
+ task.getAttachments().add(attachment);
+ try (InputStream inputStream =
+ new BufferedInputStream(multipartFile.getInputStream());
+ OutputStream outputStream =
+ new BufferedOutputStream(Files.newOutputStream(
+ Paths.get("/tmp", attachment.getId())))) {
+ byte[] buf = new byte[1024 * 16];
+ int len;
+ while ((len = inputStream.read(buf)) != -1) {
+ outputStream.write(buf, 0, len);
+ }
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to upload file!", e);
+ }
+ return "redirect:./";
+ }
+}
diff --git a/spring-dispatcher-servlet/src/main/resources/log4j2.xml b/spring-dispatcher-servlet/src/main/resources/log4j2.xml
new file mode 100644
index 0000000000..fb18e8279a
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/resources/log4j2.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-dispatcher-servlet/src/main/resources/messages.properties b/spring-dispatcher-servlet/src/main/resources/messages.properties
new file mode 100644
index 0000000000..c36eb5aa42
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/resources/messages.properties
@@ -0,0 +1,22 @@
+home.title=Welcome to TaskTools!
+task.add.description=description
+task.add.due=due
+task.add.header=Adding a task to {0}''s list:
+task.add.submit=Submit
+task.add.title={0}: task add
+task.attach.attachment=attached file
+task.attach.description=description
+task.attach.header=task #{0}: attach file
+task.attach.submit=Submit
+task.attach.title=#{0}: Attach file
+task.get.attach=Attach file
+task.get.attachments=attachments:
+task.get.download=Download
+task.get.header=task #{0}:
+task.get.list=Back
+task.get.title={0}: task details
+task.list.add-new=Add new
+task.list.details=Details
+task.list.header={0}''s tasks:
+task.list.home=Home
+task.list.title={0}: task list
diff --git a/spring-dispatcher-servlet/src/main/resources/messages_de.properties b/spring-dispatcher-servlet/src/main/resources/messages_de.properties
new file mode 100644
index 0000000000..184b72101c
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/resources/messages_de.properties
@@ -0,0 +1,22 @@
+home.title=Willkommen bei TaskTools!
+task.add.description=Beschreibung
+task.add.due=f\u00e4llig
+task.add.header=F\u00fcge eine Aufgabe zu {0}''s Liste hinzu:
+task.add.submit=Senden
+task.add.title={0}: Task hinzuf\u00fcgen
+task.attach.attachment=Angeh\u00e4ngte Datei
+task.attach.description=Beschreibung
+task.attach.header=Task #{0}: Datei anh\u00e4ngen
+task.attach.submit=Senden
+task.attach.title=#{0}: Datei anh\u00e4ngen
+task.get.attach=Datei anh\u00e4ngen
+task.get.attachments=Anh\u00e4nge:
+task.get.download=Download
+task.get.header=Task #{0}:
+task.get.list=Zur\u00fcck
+task.get.title={0}: Task Details
+task.list.add-new=Neuer Task
+task.list.details=Details
+task.list.header={0}''s Tasks:
+task.list.home=Startseite
+task.list.title={0}: Task Liste
diff --git a/spring-dispatcher-servlet/src/main/resources/theme-post_it.properties b/spring-dispatcher-servlet/src/main/resources/theme-post_it.properties
new file mode 100644
index 0000000000..d2998e2bdf
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/resources/theme-post_it.properties
@@ -0,0 +1 @@
+stylesheet=/public/css/themes/post_it.css
diff --git a/spring-dispatcher-servlet/src/main/resources/theme-robotask.properties b/spring-dispatcher-servlet/src/main/resources/theme-robotask.properties
new file mode 100644
index 0000000000..68fe270b64
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/resources/theme-robotask.properties
@@ -0,0 +1 @@
+stylesheet=/public/css/themes/robotask.css
diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html
new file mode 100644
index 0000000000..8f0f6afca7
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html
@@ -0,0 +1,13 @@
+
+
+
+ Error
+
+
+
+
+ Error:
+
+
+
+
diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html
new file mode 100644
index 0000000000..6adec7bb12
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+ TaskTools
+
+
+
diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html
new file mode 100644
index 0000000000..520486f52e
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-attach.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-attach.html
new file mode 100644
index 0000000000..23246f330b
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-attach.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-get.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-get.html
new file mode 100644
index 0000000000..e7b35b6780
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-get.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 
+ -
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html
new file mode 100644
index 0000000000..0671f24ba3
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-dispatcher-servlet/src/main/webapp/public/css/base.css b/spring-dispatcher-servlet/src/main/webapp/public/css/base.css
new file mode 100644
index 0000000000..4d3c2597cf
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/webapp/public/css/base.css
@@ -0,0 +1,8 @@
+a.button {
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ text-decoration: none;
+ color: #2196f3;
+ background-color: #e0e0e0;
+}
diff --git a/spring-dispatcher-servlet/src/main/webapp/public/css/themes/post_it.css b/spring-dispatcher-servlet/src/main/webapp/public/css/themes/post_it.css
new file mode 100644
index 0000000000..578781ec83
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/webapp/public/css/themes/post_it.css
@@ -0,0 +1,8 @@
+@import url('https://fonts.googleapis.com/css?family=Indie+Flower');
+
+* {
+ font-family: 'Indie Flower', sans-serif;
+ font-size: 18px;
+ color: #ffeb3b;
+ background-color: #212121;
+}
diff --git a/spring-dispatcher-servlet/src/main/webapp/public/css/themes/robotask.css b/spring-dispatcher-servlet/src/main/webapp/public/css/themes/robotask.css
new file mode 100644
index 0000000000..8c0121b536
--- /dev/null
+++ b/spring-dispatcher-servlet/src/main/webapp/public/css/themes/robotask.css
@@ -0,0 +1,8 @@
+@import url('https://fonts.googleapis.com/css?family=Roboto');
+
+* {
+ font-family: Roboto, sans-serif;
+ font-size: 1em;
+ color: #212121;
+ background-color: #fafafa;
+}
diff --git a/spring-exceptions/pom.xml b/spring-exceptions/pom.xml
index 12b7e5de79..6994a518fe 100644
--- a/spring-exceptions/pom.xml
+++ b/spring-exceptions/pom.xml
@@ -194,7 +194,7 @@
${maven-surefire-plugin.version}
- **/*IntegrationTest.java
+ **/*ManualTest.java
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/BeanCreationExceptionTestSuite.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/BeanCreationExceptionTestSuite.java
index f88138fec2..9597c09568 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/BeanCreationExceptionTestSuite.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/BeanCreationExceptionTestSuite.java
@@ -5,15 +5,15 @@ import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({ // @formatter:off
- Cause1BeanCreationExceptionIntegrationTest.class
- ,Cause2BeanCreationExceptionIntegrationTest.class
- ,Cause3BeanCreationExceptionIntegrationTest.class
- ,Cause4BeanCreationExceptionIntegrationTest.class
- ,Cause5BeanCreationExceptionIntegrationTest.class
- ,Cause6BeanCreationExceptionIntegrationTest.class
- ,Cause7BeanCreationExceptionIntegrationTest.class
- ,Cause8BeanCreationExceptionIntegrationTest.class
- ,Cause9BeanCreationExceptionIntegrationTest.class
+ Cause1BeanCreationExceptionManualTest.class
+ ,Cause2BeanCreationExceptionManualTest.class
+ ,Cause3BeanCreationExceptionManualTest.class
+ ,Cause4BeanCreationExceptionManualTest.class
+ ,Cause5BeanCreationExceptionManualTest.class
+ ,Cause6BeanCreationExceptionManualTest.class
+ ,Cause7BeanCreationExceptionManualTest.class
+ ,Cause8BeanCreationExceptionManualTest.class
+ ,Cause9BeanCreationExceptionManualTest.class
}) // @formatter:on
public class BeanCreationExceptionTestSuite {
//
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause1BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause1BeanCreationExceptionManualTest.java
similarity index 91%
rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause1BeanCreationExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause1BeanCreationExceptionManualTest.java
index 56d916e25d..350347bb19 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause1BeanCreationExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause1BeanCreationExceptionManualTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause1ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause1BeanCreationExceptionIntegrationTest {
+public class Cause1BeanCreationExceptionManualTest {
@Test
public final void givenContextIsInitialized_thenNoException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause2BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause2BeanCreationExceptionManualTest.java
similarity index 91%
rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause2BeanCreationExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause2BeanCreationExceptionManualTest.java
index 968e7312de..c2b9561848 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause2BeanCreationExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause2BeanCreationExceptionManualTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause2ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause2BeanCreationExceptionIntegrationTest {
+public class Cause2BeanCreationExceptionManualTest {
@Test
public final void givenContextIsInitialized_thenNoException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause3BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause3BeanCreationExceptionManualTest.java
similarity index 91%
rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause3BeanCreationExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause3BeanCreationExceptionManualTest.java
index 4730d59334..7b9b49bf58 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause3BeanCreationExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause3BeanCreationExceptionManualTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause3ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause3BeanCreationExceptionIntegrationTest {
+public class Cause3BeanCreationExceptionManualTest {
@Test
public final void givenContextIsInitialized_thenNoException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause4BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause4BeanCreationExceptionManualTest.java
similarity index 91%
rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause4BeanCreationExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause4BeanCreationExceptionManualTest.java
index b5108c1ab4..3a6e30476c 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause4BeanCreationExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause4BeanCreationExceptionManualTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause4ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause4BeanCreationExceptionIntegrationTest {
+public class Cause4BeanCreationExceptionManualTest {
@Test
public final void givenContextIsInitialized_thenNoException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause5BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause5BeanCreationExceptionManualTest.java
similarity index 91%
rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause5BeanCreationExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause5BeanCreationExceptionManualTest.java
index 9a08ec45a1..e69a323f8d 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause5BeanCreationExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause5BeanCreationExceptionManualTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause5ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause5BeanCreationExceptionIntegrationTest {
+public class Cause5BeanCreationExceptionManualTest {
@Test
public final void givenContextIsInitialized_thenNoException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause6BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause6BeanCreationExceptionManualTest.java
similarity index 91%
rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause6BeanCreationExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause6BeanCreationExceptionManualTest.java
index 423a0a98a9..30fbd47635 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause6BeanCreationExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause6BeanCreationExceptionManualTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause6ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause6BeanCreationExceptionIntegrationTest {
+public class Cause6BeanCreationExceptionManualTest {
@Test
public final void givenContextIsInitialized_thenNoException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause7BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause7BeanCreationExceptionManualTest.java
similarity index 91%
rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause7BeanCreationExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause7BeanCreationExceptionManualTest.java
index a61e598b41..d832bddf72 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause7BeanCreationExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause7BeanCreationExceptionManualTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause7ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause7BeanCreationExceptionIntegrationTest {
+public class Cause7BeanCreationExceptionManualTest {
@Test
public final void givenContextIsInitialized_thenNoException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause8BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause8BeanCreationExceptionManualTest.java
similarity index 91%
rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause8BeanCreationExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause8BeanCreationExceptionManualTest.java
index 8550f307d5..a9f32b6d1a 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause8BeanCreationExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause8BeanCreationExceptionManualTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause8ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause8BeanCreationExceptionIntegrationTest {
+public class Cause8BeanCreationExceptionManualTest {
@Test
public final void givenContextIsInitialized_thenNoException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause9BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause9BeanCreationExceptionManualTest.java
similarity index 91%
rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause9BeanCreationExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause9BeanCreationExceptionManualTest.java
index ad1ba5f2f1..6af5fb3712 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause9BeanCreationExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause9BeanCreationExceptionManualTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause9ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause9BeanCreationExceptionIntegrationTest {
+public class Cause9BeanCreationExceptionManualTest {
@Test
public final void givenContextIsInitialized_thenNoException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause1BeanDefinitionStoreExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause1BeanDefinitionStoreExceptionManualTest.java
similarity index 91%
rename from spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause1BeanDefinitionStoreExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause1BeanDefinitionStoreExceptionManualTest.java
index 8de51a4bf0..1580546fa7 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause1BeanDefinitionStoreExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause1BeanDefinitionStoreExceptionManualTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause1ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause1BeanDefinitionStoreExceptionIntegrationTest {
+public class Cause1BeanDefinitionStoreExceptionManualTest {
@Test
public final void givenContextIsInitialized_thenNoException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause2BeanDefinitionStoreExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause2BeanDefinitionStoreExceptionManualTest.java
similarity index 91%
rename from spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause2BeanDefinitionStoreExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause2BeanDefinitionStoreExceptionManualTest.java
index 8dbc50cda5..ce0db694dc 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause2BeanDefinitionStoreExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause2BeanDefinitionStoreExceptionManualTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause2ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause2BeanDefinitionStoreExceptionIntegrationTest {
+public class Cause2BeanDefinitionStoreExceptionManualTest {
@Test
public final void givenContextIsInitialized_thenNoException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause3BeanDefinitionStoreExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause3BeanDefinitionStoreExceptionManualTest.java
similarity index 91%
rename from spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause3BeanDefinitionStoreExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause3BeanDefinitionStoreExceptionManualTest.java
index 370b67e2fa..c090ac7b5f 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause3BeanDefinitionStoreExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause3BeanDefinitionStoreExceptionManualTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause3ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause3BeanDefinitionStoreExceptionIntegrationTest {
+public class Cause3BeanDefinitionStoreExceptionManualTest {
@Test
public final void givenContextIsInitialized_thenNoException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause1DataIntegrityViolationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause1DataIntegrityViolationExceptionManualTest.java
similarity index 96%
rename from spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause1DataIntegrityViolationExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause1DataIntegrityViolationExceptionManualTest.java
index 0f46481116..056e052359 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause1DataIntegrityViolationExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause1DataIntegrityViolationExceptionManualTest.java
@@ -15,7 +15,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause1DataContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause1DataIntegrityViolationExceptionIntegrationTest {
+public class Cause1DataIntegrityViolationExceptionManualTest {
@Autowired
private IParentService service;
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause2DataIntegrityViolationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause2DataIntegrityViolationExceptionManualTest.java
similarity index 93%
rename from spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause2DataIntegrityViolationExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause2DataIntegrityViolationExceptionManualTest.java
index 0ea0dd2f28..e36a027105 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause2DataIntegrityViolationExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause2DataIntegrityViolationExceptionManualTest.java
@@ -13,7 +13,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause2DataContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause2DataIntegrityViolationExceptionIntegrationTest {
+public class Cause2DataIntegrityViolationExceptionManualTest {
@Autowired
private IFooService fooService;
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause3DataIntegrityViolationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause3DataIntegrityViolationExceptionManualTest.java
similarity index 94%
rename from spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause3DataIntegrityViolationExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause3DataIntegrityViolationExceptionManualTest.java
index 75d5793910..4194e1c9fe 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause3DataIntegrityViolationExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause3DataIntegrityViolationExceptionManualTest.java
@@ -15,7 +15,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause3DataContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause3DataIntegrityViolationExceptionIntegrationTest {
+public class Cause3DataIntegrityViolationExceptionManualTest {
@Autowired
private IFooService fooService;
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause1MappingExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause1MappingExceptionManualTest.java
similarity index 95%
rename from spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause1MappingExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause1MappingExceptionManualTest.java
index 671b0a473e..7ba9618a77 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause1MappingExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause1MappingExceptionManualTest.java
@@ -14,7 +14,7 @@ import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause1PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause1MappingExceptionIntegrationTest {
+public class Cause1MappingExceptionManualTest {
@Autowired
private SessionFactory sessionFactory;
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause2MappingExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause2MappingExceptionManualTest.java
similarity index 95%
rename from spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause2MappingExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause2MappingExceptionManualTest.java
index eae5ebd9a2..66923fc6a9 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause2MappingExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause2MappingExceptionManualTest.java
@@ -13,7 +13,7 @@ import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause2PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause2MappingExceptionIntegrationTest {
+public class Cause2MappingExceptionManualTest {
@Autowired
private SessionFactory sessionFactory;
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause3MappingExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause3MappingExceptionManualTest.java
similarity index 95%
rename from spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause3MappingExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause3MappingExceptionManualTest.java
index d6abe7db4f..e6888d1685 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause3MappingExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause3MappingExceptionManualTest.java
@@ -14,7 +14,7 @@ import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause3PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause3MappingExceptionIntegrationTest {
+public class Cause3MappingExceptionManualTest {
@Autowired
private SessionFactory sessionFactory;
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionManualTest.java
similarity index 96%
rename from spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionManualTest.java
index 864da76e4b..760d082f54 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionManualTest.java
@@ -12,7 +12,7 @@ import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.Test;
-public class Cause4MappingExceptionIntegrationTest {
+public class Cause4MappingExceptionManualTest {
// tests
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/CannotGetJdbcConnectionExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/CannotGetJdbcConnectionExceptionManualTest.java
similarity index 95%
rename from spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/CannotGetJdbcConnectionExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/CannotGetJdbcConnectionExceptionManualTest.java
index 84038e4dcf..b7ed103394 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/CannotGetJdbcConnectionExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/CannotGetJdbcConnectionExceptionManualTest.java
@@ -18,7 +18,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause5NonTransientConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class CannotGetJdbcConnectionExceptionIntegrationTest {
+public class CannotGetJdbcConnectionExceptionManualTest {
@Autowired
private DataSource restDataSource;
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataIntegrityExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataIntegrityExceptionManualTest.java
similarity index 96%
rename from spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataIntegrityExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataIntegrityExceptionManualTest.java
index e62a455dd4..b98a210125 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataIntegrityExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataIntegrityExceptionManualTest.java
@@ -17,7 +17,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause1NonTransientConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class DataIntegrityExceptionIntegrationTest {
+public class DataIntegrityExceptionManualTest {
@Autowired
private IFooService fooService;
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataRetrievalExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataRetrievalExceptionManualTest.java
similarity index 97%
rename from spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataRetrievalExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataRetrievalExceptionManualTest.java
index 8a7c237708..122278580f 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataRetrievalExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataRetrievalExceptionManualTest.java
@@ -17,7 +17,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause1NonTransientConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class DataRetrievalExceptionIntegrationTest {
+public class DataRetrievalExceptionManualTest {
@Autowired
private DataSource restDataSource;
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataSourceLookupExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataSourceLookupExceptionManualTest.java
similarity index 95%
rename from spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataSourceLookupExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataSourceLookupExceptionManualTest.java
index 161bf3252b..4da5f94098 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataSourceLookupExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataSourceLookupExceptionManualTest.java
@@ -13,7 +13,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause4NonTransientConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class DataSourceLookupExceptionIntegrationTest {
+public class DataSourceLookupExceptionManualTest {
@Test(expected = DataSourceLookupFailureException.class)
public void whenLookupNonExistentDataSource_thenDataSourceLookupFailureException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionManualTest.java
similarity index 96%
rename from spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionManualTest.java
index 316efba0b9..fc420acfe9 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionManualTest.java
@@ -16,7 +16,7 @@ import javax.sql.DataSource;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause1NonTransientConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class InvalidResourceUsageExceptionIntegrationTest {
+public class InvalidResourceUsageExceptionManualTest {
@Autowired
private IFooService fooService;
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionManualTest.java
similarity index 93%
rename from spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionManualTest.java
index 1a9711b2d6..45ffdf9096 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionManualTest.java
@@ -15,7 +15,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause1ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause1NoSuchBeanDefinitionExceptionIntegrationTest {
+public class Cause1NoSuchBeanDefinitionExceptionManualTest {
@Test
public final void givenContextIsInitialized_thenNoException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause2NoSuchBeanDefinitionExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause2NoSuchBeanDefinitionExceptionManualTest.java
similarity index 91%
rename from spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause2NoSuchBeanDefinitionExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause2NoSuchBeanDefinitionExceptionManualTest.java
index 90d7317f44..09ed2b4435 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause2NoSuchBeanDefinitionExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause2NoSuchBeanDefinitionExceptionManualTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause2ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause2NoSuchBeanDefinitionExceptionIntegrationTest {
+public class Cause2NoSuchBeanDefinitionExceptionManualTest {
@Test
public final void givenContextIsInitialized_thenNoException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause3NoSuchBeanDefinitionExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause3NoSuchBeanDefinitionExceptionManualTest.java
similarity index 91%
rename from spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause3NoSuchBeanDefinitionExceptionIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause3NoSuchBeanDefinitionExceptionManualTest.java
index 0e2123b7ff..7dc016a568 100644
--- a/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause3NoSuchBeanDefinitionExceptionIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause3NoSuchBeanDefinitionExceptionManualTest.java
@@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Cause3ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class Cause3NoSuchBeanDefinitionExceptionIntegrationTest {
+public class Cause3NoSuchBeanDefinitionExceptionManualTest {
@Test
public final void givenContextIsInitialized_thenNoException() {
diff --git a/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithJavaIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithJavaManualTest.java
similarity index 95%
rename from spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithJavaIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithJavaManualTest.java
index d6c99502d7..91db8210b3 100644
--- a/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithJavaIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithJavaManualTest.java
@@ -13,7 +13,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { PropertiesWithJavaConfig.class, PropertiesWithJavaConfigOther.class }, loader = AnnotationConfigContextLoader.class)
-public class PropertiesWithJavaIntegrationTest {
+public class PropertiesWithJavaManualTest {
@Autowired
private Environment env;
diff --git a/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithMultipleXmlsIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithMultipleXmlsManualTest.java
similarity index 95%
rename from spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithMultipleXmlsIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithMultipleXmlsManualTest.java
index 9fc793fc1b..201e554381 100644
--- a/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithMultipleXmlsIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithMultipleXmlsManualTest.java
@@ -13,7 +13,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { PropertiesWithXmlConfigOne.class, PropertiesWithXmlConfigTwo.class }, loader = AnnotationConfigContextLoader.class)
-public class PropertiesWithMultipleXmlsIntegrationTest {
+public class PropertiesWithMultipleXmlsManualTest {
@Autowired
private Environment env;
diff --git a/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithXmlIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithXmlManualTest.java
similarity index 95%
rename from spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithXmlIntegrationTest.java
rename to spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithXmlManualTest.java
index ff5eaab910..a54dd8a3fb 100644
--- a/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithXmlIntegrationTest.java
+++ b/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithXmlManualTest.java
@@ -12,7 +12,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { PropertiesWithXmlConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class PropertiesWithXmlIntegrationTest {
+public class PropertiesWithXmlManualTest {
@Autowired
private Environment env;
diff --git a/spring-freemarker/pom.xml b/spring-freemarker/pom.xml
index 9bbdbcecfb..51df4e6647 100644
--- a/spring-freemarker/pom.xml
+++ b/spring-freemarker/pom.xml
@@ -77,7 +77,7 @@
${jdk.version}
${jdk.version}
- true
+ false
diff --git a/spring-freemarker/src/main/webapp/WEB-INF/web.xml b/spring-freemarker/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..a498aef4ad
--- /dev/null
+++ b/spring-freemarker/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,12 @@
+
+
+ spring4-freemarker-example
+
+ index.html
+ index.htm
+ index.jsp
+ default.html
+ default.htm
+ default.jsp
+
+
\ No newline at end of file
diff --git a/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Bar.java b/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Bar.java
index efc6367116..c7f05254cc 100644
--- a/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Bar.java
+++ b/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Bar.java
@@ -80,7 +80,7 @@ public class Bar implements Serializable {
@Column(name = "timestamp")
private long timestamp;
- @Column(name = "created_date")
+ @Column(name = "created_date", updatable = false, nullable = false)
@CreatedDate
private long createdDate;
diff --git a/spring-integration/pom.xml b/spring-integration/pom.xml
new file mode 100644
index 0000000000..b33f8bd740
--- /dev/null
+++ b/spring-integration/pom.xml
@@ -0,0 +1,133 @@
+
+ 4.0.0
+
+ com.baeldung.samples.spring.integration
+ spring-integration
+ 1.0.0.BUILD-SNAPSHOT
+ jar
+
+ spring-integration
+ http://www.springsource.org/spring-integration
+
+
+ 2.2.1
+
+
+
+ UTF-8
+ 2.2.4.RELEASE
+ 1.2.17
+ 4.11
+
+
+
+
+ repo.springsource.org.milestone
+ Spring Framework Maven Milestone Repository
+ https://repo.springsource.org/milestone
+
+
+
+
+
+
+ maven-eclipse-plugin
+ 2.9
+
+
+ org.springframework.ide.eclipse.core.springnature
+
+
+ org.springframework.ide.eclipse.core.springbuilder
+
+ true
+ true
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.1
+
+ 1.6
+ 1.6
+ -Xlint:all
+ true
+ true
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+ com.baeldung.samples.Main
+
+
+
+
+
+
+
+
+
+
+ junit
+ junit
+ ${junit.version}
+ test
+
+
+ org.springframework.integration
+ spring-integration-core
+ 4.3.4.RELEASE
+
+
+ javax.activation
+ activation
+ 1.1.1
+ true
+
+
+ javax.mail
+ mail
+ 1.4.7
+
+
+ log4j
+ log4j
+ ${log4j.version}
+
+
+ org.springframework.integration
+ spring-integration-twitter
+ 4.3.4.RELEASE
+
+
+ org.springframework.integration
+ spring-integration-mail
+ 4.3.4.RELEASE
+
+
+ org.springframework.integration
+ spring-integration-ftp
+ 4.3.4.RELEASE
+
+
+ org.springframework.social
+ spring-social-core
+ 1.1.4.RELEASE
+
+
+ org.springframework.integration
+ spring-integration-file
+ 4.3.4.RELEASE
+
+
+ junit
+ junit
+ 4.12
+
+
+
diff --git a/spring-integration/src/main/java/com/baeldung/samples/endpoints/Activator.java b/spring-integration/src/main/java/com/baeldung/samples/endpoints/Activator.java
new file mode 100644
index 0000000000..4b6ee5d03a
--- /dev/null
+++ b/spring-integration/src/main/java/com/baeldung/samples/endpoints/Activator.java
@@ -0,0 +1,7 @@
+package com.baeldung.samples.endpoints;
+
+public interface Activator {
+
+ public void handleMessage(T input);
+
+}
diff --git a/spring-integration/src/main/java/com/baeldung/samples/endpoints/ActivatorImpl.java b/spring-integration/src/main/java/com/baeldung/samples/endpoints/ActivatorImpl.java
new file mode 100644
index 0000000000..9b7c2763fc
--- /dev/null
+++ b/spring-integration/src/main/java/com/baeldung/samples/endpoints/ActivatorImpl.java
@@ -0,0 +1,20 @@
+package com.baeldung.samples.endpoints;
+
+import java.io.File;
+import java.util.logging.Logger;
+
+import org.springframework.integration.IntegrationMessageHeaderAccessor;
+import org.springframework.messaging.Message;
+
+public class ActivatorImpl implements Activator> {
+
+ @Override
+ public void handleMessage(Message input) {
+ File filePayload = input.getPayload();
+ IntegrationMessageHeaderAccessor accessor = new IntegrationMessageHeaderAccessor(input);
+ Logger.getAnonymousLogger().info("The file size "+filePayload.length());
+ Logger.getAnonymousLogger().info("The time of the message "+accessor.getTimestamp());
+
+ }
+
+}
diff --git a/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.backup b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.backup
new file mode 100644
index 0000000000..5687a15f02
--- /dev/null
+++ b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.backup
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.xml b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.xml
new file mode 100644
index 0000000000..b814e1a6a8
--- /dev/null
+++ b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-file-copy-context.xml b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-file-copy-context.xml
new file mode 100644
index 0000000000..567a3464e7
--- /dev/null
+++ b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-file-copy-context.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-file-publish-context.xml b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-file-publish-context.xml
new file mode 100644
index 0000000000..3bbd59093a
--- /dev/null
+++ b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-file-publish-context.xml
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-integration/src/main/resources/source/penguins.jpg b/spring-integration/src/main/resources/source/penguins.jpg
new file mode 100644
index 0000000000..030ab8a685
Binary files /dev/null and b/spring-integration/src/main/resources/source/penguins.jpg differ
diff --git a/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java b/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java
new file mode 100644
index 0000000000..96e5a98f41
--- /dev/null
+++ b/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2002-2013 the original author or authors.
+ *
+ * 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 com.baeldung.samples;
+
+import org.apache.log4j.Logger;
+import org.junit.Test;
+import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import java.util.Scanner;
+
+
+/**
+ * Starts the Spring Context and will initialize the Spring Integration routes.
+ *
+ * @author Baeldung
+ * @since 1.0
+ *
+ */
+public final class FileCopyTest {
+
+ private static final Logger LOGGER = Logger.getLogger(FileCopyTest.class);
+
+ @Test
+ public void test() throws InterruptedException {
+
+
+ final AbstractApplicationContext context =
+ new ClassPathXmlApplicationContext("classpath:META-INF/spring/integration/spring-integration-file-copy-context.xml");
+
+ Thread.sleep(5000);
+
+
+ }
+
+ @Test
+ public void publish() throws InterruptedException {
+
+
+ final AbstractApplicationContext context =
+ new ClassPathXmlApplicationContext("classpath:META-INF/spring/integration/spring-integration-file-publish-context.xml");
+
+ Thread.sleep(15000);
+
+
+ }
+}
diff --git a/jooq-spring/.gitignore b/spring-jooq/.gitignore
similarity index 100%
rename from jooq-spring/.gitignore
rename to spring-jooq/.gitignore
diff --git a/spring-jooq/README.md b/spring-jooq/README.md
new file mode 100644
index 0000000000..2777aa450c
--- /dev/null
+++ b/spring-jooq/README.md
@@ -0,0 +1,7 @@
+### Relevant Articles:
+- [Spring Boot Support for jOOQ](http://www.baeldung.com/spring-boot-support-for-jooq)
+- [Introduction to jOOQ with Spring](http://www.baeldung.com/jooq-with-spring)
+
+In order to fix the error "Plugin execution not covered by lifecycle configuration: org.jooq:jooq-codegen-maven:3.7.3:generate (execution: default, phase: generate-sources)", right-click on the error message and choose "Mark goal generated as ignore in pom.xml". Until version 1.4.x, the maven-plugin-plugin was covered by the default lifecycle mapping that ships with m2e.
+
+Since version 1.5.x, the m2e default lifecycle mapping no longer covers the maven-plugin-plugin.
diff --git a/jooq-spring/pom.xml b/spring-jooq/pom.xml
similarity index 63%
rename from jooq-spring/pom.xml
rename to spring-jooq/pom.xml
index e77ff0cbfd..bf60acd6f6 100644
--- a/jooq-spring/pom.xml
+++ b/spring-jooq/pom.xml
@@ -161,9 +161,88 @@
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+
+
+
+ org.eclipse.m2e
+ lifecycle-mapping
+ 1.0.0
+
+
+
+
+
+ org.jooq
+
+ jooq-codegen-maven
+
+
+ [3.7.3,)
+
+
+ generate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
+
3.7.3
1.4.191
@@ -173,6 +252,7 @@
4.12
3.5.1
+ 2.19.1
\ No newline at end of file
diff --git a/jooq-spring/src/main/resources/application.properties b/spring-jooq/src/main/resources/application.properties
similarity index 100%
rename from jooq-spring/src/main/resources/application.properties
rename to spring-jooq/src/main/resources/application.properties
diff --git a/jooq-spring/src/main/resources/intro_config.properties b/spring-jooq/src/main/resources/intro_config.properties
similarity index 100%
rename from jooq-spring/src/main/resources/intro_config.properties
rename to spring-jooq/src/main/resources/intro_config.properties
diff --git a/jooq-spring/src/main/resources/intro_schema.sql b/spring-jooq/src/main/resources/intro_schema.sql
similarity index 100%
rename from jooq-spring/src/main/resources/intro_schema.sql
rename to spring-jooq/src/main/resources/intro_schema.sql
diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java b/spring-jooq/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java
similarity index 100%
rename from jooq-spring/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java
rename to spring-jooq/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java
diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/PersistenceContext.java b/spring-jooq/src/test/java/com/baeldung/jooq/introduction/PersistenceContextIntegrationTest.java
similarity index 98%
rename from jooq-spring/src/test/java/com/baeldung/jooq/introduction/PersistenceContext.java
rename to spring-jooq/src/test/java/com/baeldung/jooq/introduction/PersistenceContextIntegrationTest.java
index df628f9f78..06290ae8db 100644
--- a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/PersistenceContext.java
+++ b/spring-jooq/src/test/java/com/baeldung/jooq/introduction/PersistenceContextIntegrationTest.java
@@ -22,7 +22,7 @@ import javax.sql.DataSource;
@ComponentScan({ "com.baeldung.jooq.introduction.db.public_.tables" })
@EnableTransactionManagement
@PropertySource("classpath:intro_config.properties")
-public class PersistenceContext {
+public class PersistenceContextIntegrationTest {
@Autowired
private Environment environment;
diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/QueryTest.java b/spring-jooq/src/test/java/com/baeldung/jooq/introduction/QueryIntegrationTest.java
similarity index 97%
rename from jooq-spring/src/test/java/com/baeldung/jooq/introduction/QueryTest.java
rename to spring-jooq/src/test/java/com/baeldung/jooq/introduction/QueryIntegrationTest.java
index 68f975dd6d..28bc4c63c7 100644
--- a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/QueryTest.java
+++ b/spring-jooq/src/test/java/com/baeldung/jooq/introduction/QueryIntegrationTest.java
@@ -17,10 +17,10 @@ import static com.baeldung.jooq.introduction.db.public_.tables.AuthorBook.AUTHOR
import static com.baeldung.jooq.introduction.db.public_.tables.Book.BOOK;
import static org.junit.Assert.assertEquals;
-@ContextConfiguration(classes = PersistenceContext.class)
+@ContextConfiguration(classes = PersistenceContextIntegrationTest.class)
@Transactional(transactionManager = "transactionManager")
@RunWith(SpringJUnit4ClassRunner.class)
-public class QueryTest {
+public class QueryIntegrationTest {
@Autowired
private DSLContext dsl;
diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java b/spring-jooq/src/test/java/com/baeldung/jooq/springboot/Application.java
similarity index 100%
rename from jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java
rename to spring-jooq/src/test/java/com/baeldung/jooq/springboot/Application.java
diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/InitialConfiguration.java b/spring-jooq/src/test/java/com/baeldung/jooq/springboot/InitialConfiguration.java
similarity index 100%
rename from jooq-spring/src/test/java/com/baeldung/jooq/springboot/InitialConfiguration.java
rename to spring-jooq/src/test/java/com/baeldung/jooq/springboot/InitialConfiguration.java
diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootTest.java b/spring-jooq/src/test/java/com/baeldung/jooq/springboot/SpringBootIntegrationTest.java
similarity index 99%
rename from jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootTest.java
rename to spring-jooq/src/test/java/com/baeldung/jooq/springboot/SpringBootIntegrationTest.java
index f9427f30fb..fa3f342ecd 100644
--- a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootTest.java
+++ b/spring-jooq/src/test/java/com/baeldung/jooq/springboot/SpringBootIntegrationTest.java
@@ -20,7 +20,7 @@ import static org.junit.Assert.assertEquals;
@SpringApplicationConfiguration(Application.class)
@Transactional("transactionManager")
@RunWith(SpringJUnit4ClassRunner.class)
-public class SpringBootTest {
+public class SpringBootIntegrationTest {
@Autowired
private DSLContext dsl;
diff --git a/spring-jpa/README.md b/spring-jpa/README.md
index 4568c0bc7f..30b39e1a4e 100644
--- a/spring-jpa/README.md
+++ b/spring-jpa/README.md
@@ -12,3 +12,13 @@
- [Spring JPA – Multiple Databases](http://www.baeldung.com/spring-data-jpa-multiple-databases)
- [Hibernate Second-Level Cache](http://www.baeldung.com/hibernate-second-level-cache)
- [Spring, Hibernate and a JNDI Datasource](http://www.baeldung.com/spring-persistence-jpa-jndi-datasource)
+
+### Eclipse Config
+After importing the project into Eclipse, you may see the following error:
+"No persistence xml file found in project"
+
+This can be ignored:
+- Project -> Properties -> Java Persistance -> JPA -> Error/Warnings -> Select Ignore on "No persistence xml file found in project"
+Or:
+- Eclipse -> Preferences - Validation - disable the "Build" execution of the JPA Validator
+
diff --git a/spring-jpa/src/main/resources/jpaConfig.xml b/spring-jpa/src/main/resources/persistence.xml
similarity index 100%
rename from spring-jpa/src/main/resources/jpaConfig.xml
rename to spring-jpa/src/main/resources/persistence.xml
diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml
index 8248343105..011de70ad2 100644
--- a/spring-mvc-java/pom.xml
+++ b/spring-mvc-java/pom.xml
@@ -208,28 +208,44 @@
-
- org.codehaus.cargo
- cargo-maven2-plugin
- ${cargo-maven2-plugin.version}
-
-
- jetty8x
- embedded
-
-
-
-
-
-
- 8082
-
-
-
-
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ **/*LiveTest.java
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+ json
+
+
+
+
+
+
+
+
4.2.5.RELEASE
diff --git a/spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyA b/spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyA.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyA
rename to spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyA.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyB b/spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyB.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyB
rename to spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyB.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/MainWebAppInitializer.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/MainWebAppInitializer.java
index f428fc3223..80ce22edd6 100644
--- a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/MainWebAppInitializer.java
+++ b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/MainWebAppInitializer.java
@@ -1,17 +1,16 @@
package com.baeldung.spring.web.config;
-import java.util.Set;
-
-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.servlet.DispatcherServlet;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRegistration;
+import java.util.Set;
+
public class MainWebAppInitializer implements WebApplicationInitializer {
private static final String TMP_FOLDER = "/tmp";
@@ -28,7 +27,6 @@ public class MainWebAppInitializer implements WebApplicationInitializer {
root.scan("com.baeldung.spring.web.config");
// root.getEnvironment().setDefaultProfiles("embedded");
- // Manages the lifecycle of the root application context
sc.addListener(new ContextLoaderListener(root));
// Handles requests into the application
diff --git a/spring-mvc-java/src/test/java/com/baeldung/circulardependency/CircularDependencyIntegrationTest.java b/spring-mvc-java/src/test/java/com/baeldung/circulardependency/CircularDependencyIntegrationTest.java
new file mode 100644
index 0000000000..42847f4dd1
--- /dev/null
+++ b/spring-mvc-java/src/test/java/com/baeldung/circulardependency/CircularDependencyIntegrationTest.java
@@ -0,0 +1,35 @@
+package com.baeldung.circulardependency;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { TestConfig.class })
+public class CircularDependencyIntegrationTest {
+
+ @Autowired
+ ApplicationContext context;
+
+ @Bean
+ public CircularDependencyA getCircularDependencyA() {
+ return new CircularDependencyA();
+ }
+
+ @Bean
+ public CircularDependencyB getCircularDependencyB() {
+ return new CircularDependencyB();
+ }
+
+ @Test
+ public void givenCircularDependency_whenSetterInjection_thenItWorks() {
+ final CircularDependencyA circA = context.getBean(CircularDependencyA.class);
+
+ Assert.assertEquals("Hi!", circA.getCircB().getMessage());
+ }
+}
diff --git a/spring-mvc-java/src/test/java/com/baeldung/circulardependency/CircularDependencyTest b/spring-mvc-java/src/test/java/com/baeldung/circulardependency/CircularDependencyTest
deleted file mode 100644
index 4229f21f10..0000000000
--- a/spring-mvc-java/src/test/java/com/baeldung/circulardependency/CircularDependencyTest
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.baeldung.circulardependency;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Bean;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = { TestConfig.class })
-public class CircularDependencyTest {
-
- @Autowired
- ApplicationContext context;
-
- @Bean
- public CircularDependencyA getCircularDependencyA() {
- return new CircularDependencyA();
- }
-
- @Bean
- public CircularDependencyB getCircularDependencyB() {
- return new CircularDependencyB();
- }
-
- @Test
- public void givenCircularDependency_whenSetterInjection_thenItWorks() {
- final CircularDependencyA circA = context.getBean(CircularDependencyA.class);
-
- Assert.assertEquals("Hi!", circA.getCircB().getMessage());
- }
-}
diff --git a/spring-mvc-java/src/test/java/com/baeldung/circulardependency/TestConfig b/spring-mvc-java/src/test/java/com/baeldung/circulardependency/TestConfig.java
similarity index 100%
rename from spring-mvc-java/src/test/java/com/baeldung/circulardependency/TestConfig
rename to spring-mvc-java/src/test/java/com/baeldung/circulardependency/TestConfig.java
diff --git a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringIntegrationTest.java b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringIntegrationTest.java
index 7a23908fe5..406975b6cc 100644
--- a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringIntegrationTest.java
+++ b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringIntegrationTest.java
@@ -5,6 +5,7 @@ import java.net.MalformedURLException;
import org.junit.Assert;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
@@ -39,9 +40,10 @@ public class HtmlUnitAndSpringIntegrationTest {
//
@Test
+ @Ignore("Related view message.html does not exist check MessageController")
public void givenAMessage_whenSent_thenItShows() throws FailingHttpStatusCodeException, MalformedURLException, IOException {
final String text = "Hello world!";
- HtmlPage page = webClient.getPage("http://localhost/message/showForm");
+ final HtmlPage page = webClient.getPage("http://localhost/message/showForm");
System.out.println(page.asXml());
final HtmlTextInput messageText = page.getHtmlElementById("message");
diff --git a/spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeTestWithoutMockMvc.java b/spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeTestWithoutMockMvc.java
new file mode 100644
index 0000000000..19806e0559
--- /dev/null
+++ b/spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeTestWithoutMockMvc.java
@@ -0,0 +1,51 @@
+package com.baeldung.web.controller;
+
+import org.junit.Before;
+import org.junit.Assert;
+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.web.WebAppConfiguration;
+
+import com.baeldung.model.Employee;
+import com.baeldung.spring.web.config.WebConfig;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@WebAppConfiguration
+@ContextConfiguration(classes = WebConfig.class)
+public class EmployeeTestWithoutMockMvc {
+
+ @Autowired
+ private EmployeeController employeeController;
+
+ @Before
+ public void setup() {
+ employeeController.initEmployees();
+ }
+
+ @Test
+ public void whenInitEmployees_thenVerifyValuesInitiation() {
+
+ Employee employee1 = employeeController.employeeMap.get(1L);
+ Employee employee2 = employeeController.employeeMap.get(2L);
+ Employee employee3 = employeeController.employeeMap.get(3L);
+
+ Assert.assertTrue(employee1.getId() == 1L);
+ Assert.assertTrue(employee1.getName().equals("John"));
+ Assert.assertTrue(employee1.getContactNumber().equals("223334411"));
+ Assert.assertTrue(employee1.getWorkingArea().equals("rh"));
+
+ Assert.assertTrue(employee2.getId() == 2L);
+ Assert.assertTrue(employee2.getName().equals("Peter"));
+ Assert.assertTrue(employee2.getContactNumber().equals("22001543"));
+ Assert.assertTrue(employee2.getWorkingArea().equals("informatics"));
+
+ Assert.assertTrue(employee3.getId() == 3L);
+ Assert.assertTrue(employee3.getName().equals("Mike"));
+ Assert.assertTrue(employee3.getContactNumber().equals("223334411"));
+ Assert.assertTrue(employee3.getWorkingArea().equals("admin"));
+ }
+
+}
diff --git a/spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml b/spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml
index 88af78dabc..b9e15c7bae 100644
--- a/spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml
+++ b/spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml
@@ -5,7 +5,8 @@
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd"
>
-
+
+
diff --git a/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml b/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml
index 9bebc263be..5c7a0b52d4 100644
--- a/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml
+++ b/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml
@@ -9,11 +9,11 @@
org.springframework.web.servlet.DispatcherServlet
- 1
contextConfigLocation
classpath*:mvc-configuration.xml
+ 1
diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java
new file mode 100644
index 0000000000..96556bd5b1
--- /dev/null
+++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java
@@ -0,0 +1,52 @@
+package com.baeldung.spring.controller;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.servlet.ModelAndView;
+
+@Controller
+public class ErrorController {
+
+ @RequestMapping(value = "500Error", method = RequestMethod.GET)
+ public void throwRuntimeException() {
+ throw new NullPointerException("Throwing a null pointer exception");
+ }
+
+ @RequestMapping(value = "errors", method = RequestMethod.GET)
+ public ModelAndView renderErrorPage(HttpServletRequest httpRequest) {
+ ModelAndView errorPage = new ModelAndView("errorPage");
+ String errorMsg = "";
+ int httpErrorCode = getErrorCode(httpRequest);
+
+ switch (httpErrorCode) {
+ case 400: {
+ errorMsg = "Http Error Code : 400 . Bad Request";
+ break;
+ }
+ case 401: {
+ errorMsg = "Http Error Code : 401. Unauthorized";
+ break;
+ }
+ case 404: {
+ errorMsg = "Http Error Code : 404. Resource not found";
+ break;
+ }
+ // Handle other 4xx error codes.
+ case 500: {
+ errorMsg = "Http Error Code : 500. Internal Server Error";
+ break;
+ }
+ // Handle other 5xx error codes.
+ }
+ errorPage.addObject("errorMsg", errorMsg);
+ return errorPage;
+ }
+
+ private int getErrorCode(HttpServletRequest httpRequest) {
+ return (Integer) httpRequest
+ .getAttribute("javax.servlet.error.status_code");
+ }
+}
diff --git a/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp b/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp
new file mode 100644
index 0000000000..ba8a836285
--- /dev/null
+++ b/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp
@@ -0,0 +1,10 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ page session="false"%>
+
+
+ Home
+
+
+ ${errorMsg}
+
+
diff --git a/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml b/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml
index 29608a17ef..2240ac0a22 100644
--- a/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml
+++ b/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml
@@ -43,4 +43,7 @@
index.jsp
+
+ /errors
+
\ No newline at end of file
diff --git a/spring-rest-docs/pom.xml b/spring-rest-docs/pom.xml
index 04ee11d0de..8e758eeb4a 100644
--- a/spring-rest-docs/pom.xml
+++ b/spring-rest-docs/pom.xml
@@ -63,7 +63,7 @@
maven-surefire-plugin
- **/*Documentation.java
+ **/*IntegrationTest.java
diff --git a/spring-rest-docs/src/test/java/com/example/ApiDocumentation.java b/spring-rest-docs/src/test/java/com/example/ApiDocumentationIntegrationTest.java
similarity index 99%
rename from spring-rest-docs/src/test/java/com/example/ApiDocumentation.java
rename to spring-rest-docs/src/test/java/com/example/ApiDocumentationIntegrationTest.java
index 5b753aff0c..0912023fb7 100644
--- a/spring-rest-docs/src/test/java/com/example/ApiDocumentation.java
+++ b/spring-rest-docs/src/test/java/com/example/ApiDocumentationIntegrationTest.java
@@ -38,7 +38,7 @@ import static org.springframework.util.StringUtils.collectionToDelimitedString;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = SpringRestDocsApplication.class)
@WebAppConfiguration
-public class ApiDocumentation {
+public class ApiDocumentationIntegrationTest {
@Rule
public final RestDocumentation restDocumentation = new RestDocumentation("target/generated-snippets");
diff --git a/spring-rest-docs/src/test/java/com/example/GettingStartedDocumentation.java b/spring-rest-docs/src/test/java/com/example/GettingStartedDocumentationIntegrationTest.java
similarity index 99%
rename from spring-rest-docs/src/test/java/com/example/GettingStartedDocumentation.java
rename to spring-rest-docs/src/test/java/com/example/GettingStartedDocumentationIntegrationTest.java
index 7aea9d303c..1af626d03b 100644
--- a/spring-rest-docs/src/test/java/com/example/GettingStartedDocumentation.java
+++ b/spring-rest-docs/src/test/java/com/example/GettingStartedDocumentationIntegrationTest.java
@@ -33,7 +33,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = SpringRestDocsApplication.class)
@WebAppConfiguration
-public class GettingStartedDocumentation {
+public class GettingStartedDocumentationIntegrationTest {
@Rule
public final RestDocumentation restDocumentation = new RestDocumentation("target/generated-snippets");
diff --git a/spring-rest/pom.xml b/spring-rest/pom.xml
index 69ab4ed361..6580f5ecc7 100644
--- a/spring-rest/pom.xml
+++ b/spring-rest/pom.xml
@@ -332,5 +332,17 @@
3.4.1
-
+
+
+
+ org.codehaus.mojo
+ findbugs-maven-plugin
+ 3.0.4
+
+ Max
+ FindDeadLocalStores,FindNullDeref
+
+
+
+
diff --git a/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/CustomFilter.java b/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/CustomFilter.java
new file mode 100644
index 0000000000..8d2b919cb0
--- /dev/null
+++ b/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/CustomFilter.java
@@ -0,0 +1,18 @@
+package org.baeldung.security.filter;
+
+import org.springframework.web.filter.GenericFilterBean;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import java.io.IOException;
+
+public class CustomFilter extends GenericFilterBean {
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+ chain.doFilter(request, response);
+ }
+
+}
diff --git a/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java b/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java
new file mode 100644
index 0000000000..468c99cb2a
--- /dev/null
+++ b/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java
@@ -0,0 +1,17 @@
+package org.baeldung.security.filter.configuration;
+
+import org.baeldung.security.filter.CustomFilter;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
+
+@Configuration
+public class CustomWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
+
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ http.addFilterAfter(new CustomFilter(), BasicAuthenticationFilter.class);
+ }
+
+}
diff --git a/spring-security-basic-auth/src/main/resources/webSecurityConfig.xml b/spring-security-basic-auth/src/main/resources/webSecurityConfig.xml
index 48302e8e93..f840d3014e 100644
--- a/spring-security-basic-auth/src/main/resources/webSecurityConfig.xml
+++ b/spring-security-basic-auth/src/main/resources/webSecurityConfig.xml
@@ -12,6 +12,7 @@
+
@@ -22,4 +23,6 @@
+
+
\ No newline at end of file
diff --git a/spring-security-custom-permission/README.MD b/spring-security-custom-permission/README.MD
index 760cf41c63..0812a73090 100644
--- a/spring-security-custom-permission/README.MD
+++ b/spring-security-custom-permission/README.MD
@@ -3,3 +3,4 @@ The "REST With Spring" Classes: http://github.learnspringsecurity.com
###Relevant Articles:
- [A Custom Security Expression with Spring Security](http://www.baeldung.com/spring-security-create-new-custom-security-expression)
+- [Custom AccessDecisionVoters in Spring Security](http://www.baeldung.com/spring-security-custom-voter)
\ No newline at end of file
diff --git a/spring-security-custom-permission/pom.xml b/spring-security-custom-permission/pom.xml
index 6098fe5b65..288cc3d6ba 100644
--- a/spring-security-custom-permission/pom.xml
+++ b/spring-security-custom-permission/pom.xml
@@ -14,7 +14,7 @@
org.springframework.boot
spring-boot-starter-parent
- 1.3.3.RELEASE
+ 1.3.8.RELEASE
@@ -128,6 +128,7 @@
spring-security-taglibs
4.1.3.RELEASE
+
javax.servlet.jsp.jstl
jstl-api
@@ -239,6 +240,9 @@
+ org.baeldung.Application
+
+
UTF-8
1.8
2.4.0
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/Application.java b/spring-security-custom-permission/src/main/java/org/baeldung/Application.java
index b4e8d04b49..2d59fab6be 100644
--- a/spring-security-custom-permission/src/main/java/org/baeldung/Application.java
+++ b/spring-security-custom-permission/src/main/java/org/baeldung/Application.java
@@ -1,12 +1,17 @@
package org.baeldung;
import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.web.SpringBootServletInitializer;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.FilterType;
-@SpringBootApplication
+@Configuration
+@EnableAutoConfiguration
+@ComponentScan(excludeFilters =
+ @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.baeldung.voter.*"))
public class Application extends SpringBootServletInitializer {
-
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/voter/MinuteBasedVoter.java b/spring-security-custom-permission/src/main/java/org/baeldung/voter/MinuteBasedVoter.java
new file mode 100644
index 0000000000..ca9072bcac
--- /dev/null
+++ b/spring-security-custom-permission/src/main/java/org/baeldung/voter/MinuteBasedVoter.java
@@ -0,0 +1,33 @@
+package org.baeldung.voter;
+
+import java.time.LocalDateTime;
+import java.util.Collection;
+
+import org.springframework.security.access.AccessDecisionVoter;
+import org.springframework.security.access.ConfigAttribute;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.GrantedAuthority;
+
+public class MinuteBasedVoter implements AccessDecisionVoter {
+ @Override
+ public boolean supports(ConfigAttribute attribute) {
+ return true;
+ }
+
+ @Override
+ public boolean supports(Class clazz) {
+ return true;
+ }
+
+ @Override
+ public int vote(Authentication authentication, Object object, Collection collection) {
+ return authentication
+ .getAuthorities()
+ .stream()
+ .map(GrantedAuthority::getAuthority)
+ .filter(r -> "ROLE_USER".equals(r) && LocalDateTime.now().getMinute() % 2 != 0)
+ .findAny()
+ .map(s -> ACCESS_DENIED)
+ .orElseGet(() -> ACCESS_ABSTAIN);
+ }
+}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterApplication.java b/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterApplication.java
new file mode 100644
index 0000000000..046eca9be7
--- /dev/null
+++ b/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterApplication.java
@@ -0,0 +1,17 @@
+package org.baeldung.voter;
+
+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.FilterType;
+
+@Configuration
+@EnableAutoConfiguration
+@ComponentScan(basePackages = {"org.baeldung.voter"})
+public class VoterApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(VoterApplication.class, args);
+ }
+}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterMvcConfig.java b/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterMvcConfig.java
new file mode 100644
index 0000000000..e282c794d0
--- /dev/null
+++ b/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterMvcConfig.java
@@ -0,0 +1,18 @@
+package org.baeldung.voter;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+/**
+ * Created by ambrusadrianz on 30/09/2016.
+ */
+
+@Configuration
+public class VoterMvcConfig extends WebMvcConfigurerAdapter {
+ @Override
+ public void addViewControllers(ViewControllerRegistry registry) {
+ registry.addViewController("/").setViewName("private");
+ }
+}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/voter/WebSecurityConfig.java b/spring-security-custom-permission/src/main/java/org/baeldung/voter/WebSecurityConfig.java
new file mode 100644
index 0000000000..3330fda7ec
--- /dev/null
+++ b/spring-security-custom-permission/src/main/java/org/baeldung/voter/WebSecurityConfig.java
@@ -0,0 +1,69 @@
+package org.baeldung.voter;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.access.AccessDecisionManager;
+import org.springframework.security.access.AccessDecisionVoter;
+import org.springframework.security.access.vote.AuthenticatedVoter;
+import org.springframework.security.access.vote.RoleVoter;
+import org.springframework.security.access.vote.UnanimousBased;
+import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.web.access.expression.WebExpressionVoter;
+import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
+
+import java.util.Arrays;
+import java.util.List;
+
+//@Configuration
+//@EnableWebSecurity
+public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
+ @Autowired
+ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
+ // @formatter: off
+ auth.inMemoryAuthentication()
+ .withUser("user").password("pass").roles("USER")
+ .and()
+ .withUser("admin").password("pass").roles("ADMIN");
+ // @formatter: on
+ }
+
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ // @formatter: off
+ http
+ // needed so our login could work
+ .csrf()
+ .disable()
+ .authorizeRequests()
+ .anyRequest()
+ .authenticated()
+ .accessDecisionManager(accessDecisionManager())
+ .antMatchers("/").hasAnyRole("ROLE_ADMIN", "ROLE_USER")
+ .and()
+ .formLogin()
+ .permitAll()
+ .and()
+ .logout()
+ .permitAll()
+ .deleteCookies("JSESSIONID")
+ .logoutSuccessUrl("/login");
+ // @formatter: on
+ }
+
+ @Bean
+ public AccessDecisionManager accessDecisionManager() {
+ // @formatter: off
+ List> decisionVoters =
+ Arrays.asList(
+ new WebExpressionVoter(),
+ new RoleVoter(),
+ new AuthenticatedVoter(),
+ new MinuteBasedVoter());
+ // @formatter: on
+ return new UnanimousBased(decisionVoters);
+ }
+}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/voter/XmlSecurityConfig.java b/spring-security-custom-permission/src/main/java/org/baeldung/voter/XmlSecurityConfig.java
new file mode 100644
index 0000000000..c206df7d1f
--- /dev/null
+++ b/spring-security-custom-permission/src/main/java/org/baeldung/voter/XmlSecurityConfig.java
@@ -0,0 +1,15 @@
+package org.baeldung.voter;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.ImportResource;
+
+/**
+ * Created by ambrusadrianz on 09/10/2016.
+ */
+@Configuration
+@ImportResource({"classpath:spring-security.xml"})
+public class XmlSecurityConfig {
+ public XmlSecurityConfig() {
+ super();
+ }
+}
diff --git a/spring-security-custom-permission/src/main/resources/spring-security.xml b/spring-security-custom-permission/src/main/resources/spring-security.xml
new file mode 100644
index 0000000000..382dbf5dff
--- /dev/null
+++ b/spring-security-custom-permission/src/main/resources/spring-security.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/resources/templates/private.html b/spring-security-custom-permission/src/main/resources/templates/private.html
new file mode 100644
index 0000000000..5af8c7a13e
--- /dev/null
+++ b/spring-security-custom-permission/src/main/resources/templates/private.html
@@ -0,0 +1,10 @@
+
+
+
+ Private
+
+
+Congrats!
+
+
\ No newline at end of file
diff --git a/spring-security-mvc-ldap/pom.xml b/spring-security-mvc-ldap/pom.xml
index b001a86955..145321b2f4 100644
--- a/spring-security-mvc-ldap/pom.xml
+++ b/spring-security-mvc-ldap/pom.xml
@@ -10,7 +10,7 @@
org.springframework.boot
spring-boot-starter-parent
- 1.3.3.RELEASE
+ 1.3.8.RELEASE
diff --git a/spring-security-rest-custom/pom.xml b/spring-security-rest-custom/pom.xml
index 071fa14b71..296703c27e 100644
--- a/spring-security-rest-custom/pom.xml
+++ b/spring-security-rest-custom/pom.xml
@@ -10,7 +10,7 @@
org.springframework.boot
spring-boot-starter-parent
- 1.3.3.RELEASE
+ 1.3.8.RELEASE
diff --git a/spring-security-rest-full/pom.xml b/spring-security-rest-full/pom.xml
index 5cd0ed51f3..957a349d3c 100644
--- a/spring-security-rest-full/pom.xml
+++ b/spring-security-rest-full/pom.xml
@@ -10,7 +10,7 @@
org.springframework.boot
spring-boot-starter-parent
- 1.3.3.RELEASE
+ 1.3.8.RELEASE
diff --git a/spring-security-rest-full/src/main/java/org/baeldung/example/spring/AnotherBootApp.java b/spring-security-rest-full/src/main/java/org/baeldung/example/spring/AnotherBootApp.java
new file mode 100644
index 0000000000..445a70f29c
--- /dev/null
+++ b/spring-security-rest-full/src/main/java/org/baeldung/example/spring/AnotherBootApp.java
@@ -0,0 +1,17 @@
+package org.baeldung.example.spring;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+@EnableScheduling
+@EnableAutoConfiguration
+@ComponentScan("org.baeldung")
+public class AnotherBootApp extends WebMvcConfigurerAdapter {
+
+ public static void main(final String[] args) {
+ SpringApplication.run(AnotherBootApp.class, args);
+ }
+}
\ No newline at end of file
diff --git a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/CustomRsqlVisitor.java b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/CustomRsqlVisitor.java
index 64c84678af..89cec89951 100644
--- a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/CustomRsqlVisitor.java
+++ b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/CustomRsqlVisitor.java
@@ -1,6 +1,5 @@
package org.baeldung.persistence.dao.rsql;
-import org.baeldung.persistence.model.User;
import org.springframework.data.jpa.domain.Specification;
import cz.jirutka.rsql.parser.ast.AndNode;
@@ -8,26 +7,26 @@ import cz.jirutka.rsql.parser.ast.ComparisonNode;
import cz.jirutka.rsql.parser.ast.OrNode;
import cz.jirutka.rsql.parser.ast.RSQLVisitor;
-public class CustomRsqlVisitor implements RSQLVisitor, Void> {
+public class CustomRsqlVisitor implements RSQLVisitor, Void> {
- private UserRsqlSpecBuilder builder;
+ private GenericRsqlSpecBuilder builder;
public CustomRsqlVisitor() {
- builder = new UserRsqlSpecBuilder();
+ builder = new GenericRsqlSpecBuilder();
}
@Override
- public Specification visit(final AndNode node, final Void param) {
+ public Specification visit(final AndNode node, final Void param) {
return builder.createSpecification(node);
}
@Override
- public Specification visit(final OrNode node, final Void param) {
+ public Specification visit(final OrNode node, final Void param) {
return builder.createSpecification(node);
}
@Override
- public Specification visit(final ComparisonNode node, final Void params) {
+ public Specification visit(final ComparisonNode node, final Void params) {
return builder.createSpecification(node);
}
diff --git a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecBuilder.java b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecBuilder.java
similarity index 65%
rename from spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecBuilder.java
rename to spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecBuilder.java
index 202370a64b..01ec389465 100644
--- a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecBuilder.java
+++ b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecBuilder.java
@@ -3,7 +3,6 @@ package org.baeldung.persistence.dao.rsql;
import java.util.ArrayList;
import java.util.List;
-import org.baeldung.persistence.model.User;
import org.springframework.data.jpa.domain.Specifications;
import cz.jirutka.rsql.parser.ast.ComparisonNode;
@@ -11,9 +10,9 @@ import cz.jirutka.rsql.parser.ast.LogicalNode;
import cz.jirutka.rsql.parser.ast.LogicalOperator;
import cz.jirutka.rsql.parser.ast.Node;
-public class UserRsqlSpecBuilder {
+public class GenericRsqlSpecBuilder {
- public Specifications createSpecification(final Node node) {
+ public Specifications createSpecification(final Node node) {
if (node instanceof LogicalNode) {
return createSpecification((LogicalNode) node);
}
@@ -23,9 +22,9 @@ public class UserRsqlSpecBuilder {
return null;
}
- public Specifications createSpecification(final LogicalNode logicalNode) {
- final List> specs = new ArrayList>();
- Specifications temp;
+ public Specifications createSpecification(final LogicalNode logicalNode) {
+ final List> specs = new ArrayList>();
+ Specifications temp;
for (final Node node : logicalNode.getChildren()) {
temp = createSpecification(node);
if (temp != null) {
@@ -33,7 +32,7 @@ public class UserRsqlSpecBuilder {
}
}
- Specifications result = specs.get(0);
+ Specifications result = specs.get(0);
if (logicalNode.getOperator() == LogicalOperator.AND) {
for (int i = 1; i < specs.size(); i++) {
@@ -50,8 +49,8 @@ public class UserRsqlSpecBuilder {
return result;
}
- public Specifications createSpecification(final ComparisonNode comparisonNode) {
- final Specifications result = Specifications.where(new UserRsqlSpecification(comparisonNode.getSelector(), comparisonNode.getOperator(), comparisonNode.getArguments()));
+ public Specifications createSpecification(final ComparisonNode comparisonNode) {
+ final Specifications result = Specifications.where(new GenericRsqlSpecification(comparisonNode.getSelector(), comparisonNode.getOperator(), comparisonNode.getArguments()));
return result;
}
diff --git a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecification.java b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecification.java
similarity index 87%
rename from spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecification.java
rename to spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecification.java
index b7aaa14ba6..6609a87953 100644
--- a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecification.java
+++ b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecification.java
@@ -8,18 +8,17 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
-import org.baeldung.persistence.model.User;
import org.springframework.data.jpa.domain.Specification;
import cz.jirutka.rsql.parser.ast.ComparisonOperator;
-public class UserRsqlSpecification implements Specification {
+public class GenericRsqlSpecification implements Specification {
private String property;
private ComparisonOperator operator;
private List arguments;
- public UserRsqlSpecification(final String property, final ComparisonOperator operator, final List arguments) {
+ public GenericRsqlSpecification(final String property, final ComparisonOperator operator, final List arguments) {
super();
this.property = property;
this.operator = operator;
@@ -27,7 +26,7 @@ public class UserRsqlSpecification implements Specification {
}
@Override
- public Predicate toPredicate(final Root root, final CriteriaQuery> query, final CriteriaBuilder builder) {
+ public Predicate toPredicate(final Root root, final CriteriaQuery> query, final CriteriaBuilder builder) {
final List