From 4576a1e3ae6643113714d22a7efe6ace9ca2bfbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=A4del?= Date: Mon, 24 Oct 2016 03:45:07 +0200 Subject: [PATCH] BAEL-325: Refactored to use multi-module structure. --- patterns/front-controller/pom.xml | 45 +++++++++ .../controller/FrontControllerServlet.java | 38 ++++++++ .../controller/commands/FrontCommand.java | 32 +++++++ .../controller/commands/SearchCommand.java | 21 +++++ .../controller/commands/UnknownCommand.java | 11 +++ .../patterns/front/controller/data/Book.java | 15 +++ .../front/controller/data/BookImpl.java | 46 +++++++++ .../front/controller/data/Bookshelf.java | 15 +++ .../front/controller/data/BookshelfImpl.java | 24 +++++ .../src/main/resources/front controller.png | Bin 0 -> 9492 bytes .../src/main/resources/front controller.puml | 22 +++++ .../main/webapp/WEB-INF/jsp/book-found.jsp | 12 +++ .../main/webapp/WEB-INF/jsp/book-notfound.jsp | 10 ++ .../src/main/webapp/WEB-INF/jsp/unknown.jsp | 9 ++ .../src/main/webapp/WEB-INF/web.xml | 15 +++ .../filter}/FrontControllerServlet.java | 14 +-- .../filter}/commands/CheckoutCommand.java | 6 +- .../filter}/commands/FrontCommand.java | 6 +- .../filter}/commands/HomeCommand.java | 4 +- .../filter}/commands/LoginCommand.java | 2 +- .../filter}/commands/LogoutCommand.java | 4 +- .../filter}/commands/OrderCommand.java | 12 +-- .../filter}/commands/SearchCommand.java | 6 +- .../filter}/commands/ShowCommand.java | 6 +- .../filter}/commands/UnknownCommand.java | 2 +- .../intercepting/filter}/data/Book.java | 2 +- .../intercepting/filter}/data/BookImpl.java | 2 +- .../intercepting/filter}/data/Bookshelf.java | 2 +- .../filter}/data/BookshelfImpl.java | 2 +- .../intercepting/filter}/data/Order.java | 2 +- .../intercepting/filter}/data/OrderImpl.java | 2 +- .../filter}/filters/AuthenticationFilter.java | 6 +- .../filter}/filters/BaseFilter.java | 2 +- .../filter}/filters/EncodingFilter.java | 4 +- .../filter}/filters/FilterChainImpl.java | 2 +- .../filter}/filters/FilterManager.java | 2 +- .../filter}/filters/LoggingFilter.java | 4 +- .../filter/filters/OnIntercept.java | 5 + .../filter}/filters/TemplateFilter.java | 2 +- .../filter}/filters/VisitorCounterFilter.java | 2 +- .../src/main/resources/front_controller.png | Bin .../src/main/resources/front_controller.puml | 0 .../main/resources/intercepting_filter.png | Bin .../main/resources/intercepting_filter.puml | 0 .../main/webapp/WEB-INF/jsp/book-found.jsp | 6 +- .../main/webapp/WEB-INF/jsp/book-notfound.jsp | 0 .../src/main/webapp/WEB-INF/jsp/home.jsp | 6 +- .../src/main/webapp/WEB-INF/jsp/login.jsp | 2 +- .../webapp/WEB-INF/jsp/shopping-cart-hint.jsp | 4 +- .../main/webapp/WEB-INF/jsp/shopping-cart.jsp | 6 +- .../src/main/webapp/WEB-INF/jsp/unknown.jsp | 9 ++ .../webapp/WEB-INF/jsp/visitor-counter.jsp | 2 +- patterns/pom.xml | 89 +++++++++--------- .../patterns/filters/OnIntercept.java | 5 - 54 files changed, 433 insertions(+), 114 deletions(-) create mode 100644 patterns/front-controller/pom.xml create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/FrontControllerServlet.java create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/FrontCommand.java create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/SearchCommand.java create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/UnknownCommand.java create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Book.java create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookImpl.java create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Bookshelf.java create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookshelfImpl.java create mode 100644 patterns/front-controller/src/main/resources/front controller.png create mode 100644 patterns/front-controller/src/main/resources/front controller.puml create mode 100644 patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-found.jsp create mode 100644 patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-notfound.jsp create mode 100644 patterns/front-controller/src/main/webapp/WEB-INF/jsp/unknown.jsp create mode 100644 patterns/front-controller/src/main/webapp/WEB-INF/web.xml rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/FrontControllerServlet.java (78%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/CheckoutCommand.java (80%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/FrontCommand.java (84%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/HomeCommand.java (76%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/LoginCommand.java (93%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/LogoutCommand.java (79%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/OrderCommand.java (72%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/SearchCommand.java (77%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/ShowCommand.java (75%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/UnknownCommand.java (81%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/data/Book.java (82%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/data/BookImpl.java (94%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/data/Bookshelf.java (89%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/data/BookshelfImpl.java (91%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/data/Order.java (73%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/data/OrderImpl.java (93%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/AuthenticationFilter.java (86%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/BaseFilter.java (91%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/EncodingFilter.java (90%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/FilterChainImpl.java (91%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/FilterManager.java (91%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/LoggingFilter.java (90%) create mode 100644 patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/OnIntercept.java rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/TemplateFilter.java (95%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/VisitorCounterFilter.java (93%) rename patterns/{ => intercepting-filter}/src/main/resources/front_controller.png (100%) rename patterns/{ => intercepting-filter}/src/main/resources/front_controller.puml (100%) rename patterns/{ => intercepting-filter}/src/main/resources/intercepting_filter.png (100%) rename patterns/{ => intercepting-filter}/src/main/resources/intercepting_filter.puml (100%) rename patterns/{ => intercepting-filter}/src/main/webapp/WEB-INF/jsp/book-found.jsp (81%) rename patterns/{ => intercepting-filter}/src/main/webapp/WEB-INF/jsp/book-notfound.jsp (100%) rename patterns/{ => intercepting-filter}/src/main/webapp/WEB-INF/jsp/home.jsp (79%) rename patterns/{ => intercepting-filter}/src/main/webapp/WEB-INF/jsp/login.jsp (89%) rename patterns/{ => intercepting-filter}/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp (78%) rename patterns/{ => intercepting-filter}/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp (80%) create mode 100644 patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/unknown.jsp rename patterns/{ => intercepting-filter}/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp (60%) delete mode 100644 patterns/src/main/java/com/baeldung/patterns/filters/OnIntercept.java diff --git a/patterns/front-controller/pom.xml b/patterns/front-controller/pom.xml new file mode 100644 index 0000000000..2dabf484e1 --- /dev/null +++ b/patterns/front-controller/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + front-controller + war + + + patterns-parent + com.baeldung.patterns + 1.0.0-SNAPSHOT + .. + + + + + javax.servlet + javax.servlet-api + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.apache.maven.plugins + maven-war-plugin + + + org.eclipse.jetty + jetty-maven-plugin + + + /front-controller + + + + + + diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/FrontControllerServlet.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/FrontControllerServlet.java new file mode 100644 index 0000000000..9fb120399c --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/FrontControllerServlet.java @@ -0,0 +1,38 @@ +package com.baeldung.patterns.front.controller; + +import com.baeldung.patterns.front.controller.commands.FrontCommand; +import com.baeldung.patterns.front.controller.commands.UnknownCommand; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public class FrontControllerServlet extends HttpServlet { + @Override + protected void doGet( + HttpServletRequest request, + HttpServletResponse response + ) throws ServletException, IOException { + FrontCommand command = getCommand(request); + command.init(getServletContext(), request, response); + command.process(); + } + + private FrontCommand getCommand(HttpServletRequest request) { + try { + Class type = Class.forName( + String.format( + "com.baeldung.patterns.front.controller.commands.%sCommand", + request.getParameter("command") + ) + ); + return (FrontCommand) type + .asSubclass(FrontCommand.class) + .newInstance(); + } catch (Exception e) { + return new UnknownCommand(); + } + } +} diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/FrontCommand.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/FrontCommand.java new file mode 100644 index 0000000000..cc92731050 --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/FrontCommand.java @@ -0,0 +1,32 @@ +package com.baeldung.patterns.front.controller.commands; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public abstract class FrontCommand { + protected ServletContext context; + protected HttpServletRequest request; + protected HttpServletResponse response; + + public void init( + ServletContext servletContext, + HttpServletRequest servletRequest, + HttpServletResponse servletResponse + ) { + this.context = servletContext; + this.request = servletRequest; + this.response = servletResponse; + } + + public abstract void process() throws ServletException, IOException; + + protected void forward(String target) throws ServletException, IOException { + target = String.format("/WEB-INF/jsp/%s.jsp", target); + RequestDispatcher dispatcher = context.getRequestDispatcher(target); + dispatcher.forward(request, response); + } +} diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/SearchCommand.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/SearchCommand.java new file mode 100644 index 0000000000..21028b07f0 --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/SearchCommand.java @@ -0,0 +1,21 @@ +package com.baeldung.patterns.front.controller.commands; + +import com.baeldung.patterns.front.controller.data.Book; +import com.baeldung.patterns.front.controller.data.BookshelfImpl; + +import javax.servlet.ServletException; +import java.io.IOException; + +public class SearchCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + Book book = new BookshelfImpl().getInstance() + .findByTitle(request.getParameter("title")); + if (book != null) { + request.setAttribute("book", book); + forward("book-found"); + } else { + forward("book-notfound"); + } + } +} diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/UnknownCommand.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/UnknownCommand.java new file mode 100644 index 0000000000..9f24746598 --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/UnknownCommand.java @@ -0,0 +1,11 @@ +package com.baeldung.patterns.front.controller.commands; + +import javax.servlet.ServletException; +import java.io.IOException; + +public class UnknownCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + forward("unknown"); + } +} diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Book.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Book.java new file mode 100644 index 0000000000..5a15df92c4 --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Book.java @@ -0,0 +1,15 @@ +package com.baeldung.patterns.front.controller.data; + +public interface Book { + String getAuthor(); + + void setAuthor(String author); + + String getTitle(); + + void setTitle(String title); + + Double getPrice(); + + void setPrice(Double price); +} diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookImpl.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookImpl.java new file mode 100644 index 0000000000..0421ff5623 --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookImpl.java @@ -0,0 +1,46 @@ +package com.baeldung.patterns.front.controller.data; + +public class BookImpl implements Book { + private String author; + private String title; + private Double price; + + public BookImpl() { + } + + public BookImpl(String author, String title, Double price) { + this.author = author; + this.title = title; + this.price = price; + } + + @Override + public String getAuthor() { + return author; + } + + @Override + public void setAuthor(String author) { + this.author = author; + } + + @Override + public String getTitle() { + return title; + } + + @Override + public void setTitle(String title) { + this.title = title; + } + + @Override + public Double getPrice() { + return price; + } + + @Override + public void setPrice(Double price) { + this.price = price; + } +} diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Bookshelf.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Bookshelf.java new file mode 100644 index 0000000000..21e3067133 --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Bookshelf.java @@ -0,0 +1,15 @@ +package com.baeldung.patterns.front.controller.data; + +public interface Bookshelf { + + default void init() { + add(new BookImpl("Wilson, Robert Anton & Shea, Robert", "Illuminati", 9.99)); + add(new BookImpl("Fowler, Martin", "Patterns of Enterprise Application Architecture", 27.88)); + } + + Bookshelf getInstance(); + + boolean add(E book); + + Book findByTitle(String title); +} diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookshelfImpl.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookshelfImpl.java new file mode 100644 index 0000000000..dd1fa4e523 --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookshelfImpl.java @@ -0,0 +1,24 @@ +package com.baeldung.patterns.front.controller.data; + +import java.util.ArrayList; + +public class BookshelfImpl extends ArrayList implements Bookshelf { + private static Bookshelf INSTANCE; + + @Override + public Bookshelf getInstance() { + if (INSTANCE == null) { + INSTANCE = new BookshelfImpl(); + INSTANCE.init(); + } + return INSTANCE; + } + + @Override + public Book findByTitle(String title) { + return this.stream() + .filter(book -> book.getTitle().toLowerCase().contains(title.toLowerCase())) + .findFirst() + .orElse(null); + } +} diff --git a/patterns/front-controller/src/main/resources/front controller.png b/patterns/front-controller/src/main/resources/front controller.png new file mode 100644 index 0000000000000000000000000000000000000000..bd475bf3f32a2a82cc0d5d31acc3e09344109f1f GIT binary patch literal 9492 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 AbstractCommand +AbstractCommand <|-- ConcreteCommand1 +AbstractCommand <|-- ConcreteCommand2 + +@enduml \ No newline at end of file diff --git a/patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-found.jsp b/patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-found.jsp new file mode 100644 index 0000000000..42e08b4a46 --- /dev/null +++ b/patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-found.jsp @@ -0,0 +1,12 @@ + + + + Bookshelf: Title found + + +

Our Bookshelf contains this title:

+

${book.getTitle()}

+

Author: ${book.getAuthor()}

+ + + diff --git a/patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-notfound.jsp b/patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-notfound.jsp new file mode 100644 index 0000000000..2f8ac01755 --- /dev/null +++ b/patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-notfound.jsp @@ -0,0 +1,10 @@ + + + + Bookshelf: Title not found + + +

Our Bookshelf doesn't contains this title:

+

${param.get("title")}

+ + diff --git a/patterns/front-controller/src/main/webapp/WEB-INF/jsp/unknown.jsp b/patterns/front-controller/src/main/webapp/WEB-INF/jsp/unknown.jsp new file mode 100644 index 0000000000..b52b2de8d5 --- /dev/null +++ b/patterns/front-controller/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/front-controller/src/main/webapp/WEB-INF/web.xml b/patterns/front-controller/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..4abca2bb97 --- /dev/null +++ b/patterns/front-controller/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,15 @@ + + + + front-controller + com.baeldung.patterns.front.controller.FrontControllerServlet + + + front-controller + / + + diff --git a/patterns/src/main/java/com/baeldung/patterns/FrontControllerServlet.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/FrontControllerServlet.java similarity index 78% rename from patterns/src/main/java/com/baeldung/patterns/FrontControllerServlet.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/FrontControllerServlet.java index beba1d66e5..9d8a004265 100644 --- a/patterns/src/main/java/com/baeldung/patterns/FrontControllerServlet.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/FrontControllerServlet.java @@ -1,9 +1,9 @@ -package com.baeldung.patterns; +package com.baeldung.patterns.intercepting.filter; -import com.baeldung.patterns.commands.FrontCommand; -import com.baeldung.patterns.commands.UnknownCommand; -import com.baeldung.patterns.data.Bookshelf; -import com.baeldung.patterns.data.BookshelfImpl; +import com.baeldung.patterns.intercepting.filter.commands.FrontCommand; +import com.baeldung.patterns.intercepting.filter.commands.UnknownCommand; +import com.baeldung.patterns.intercepting.filter.data.Bookshelf; +import com.baeldung.patterns.intercepting.filter.data.BookshelfImpl; import javax.servlet.ServletConfig; import javax.servlet.ServletException; @@ -13,7 +13,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -@WebServlet(name = "front-controller", urlPatterns = "/index") +@WebServlet(name = "intercepting-filter", urlPatterns = "/") public class FrontControllerServlet extends HttpServlet { @Override public void init(ServletConfig config) throws ServletException { @@ -52,7 +52,7 @@ public class FrontControllerServlet extends HttpServlet { try { Class type = Class.forName( String.format( - "com.baeldung.patterns.commands.%sCommand", + "com.baeldung.patterns.intercepting.filter.commands.%sCommand", request.getParameter("command") ) ); diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/CheckoutCommand.java similarity index 80% rename from patterns/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/CheckoutCommand.java index be6dbe84bd..fda88c741e 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/CheckoutCommand.java @@ -1,6 +1,6 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; -import com.baeldung.patterns.data.Order; +import com.baeldung.patterns.intercepting.filter.data.Order; import javax.servlet.ServletException; import javax.servlet.http.HttpSession; @@ -13,7 +13,7 @@ public class CheckoutCommand extends FrontCommand { HttpSession session = request.getSession(false); if (request.getMethod().equals("POST")) { session.removeAttribute("order"); - response.sendRedirect("index?command=Home&message=Thank you for buying!"); + response.sendRedirect("/?command=Home&message=Thank you for buying!"); } else { Order order = (Order) session.getAttribute("order"); Double total = order.getItems().entrySet().stream() diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/FrontCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/FrontCommand.java similarity index 84% rename from patterns/src/main/java/com/baeldung/patterns/commands/FrontCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/FrontCommand.java index efc0ee4612..a3c545703b 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/FrontCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/FrontCommand.java @@ -1,7 +1,7 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; -import com.baeldung.patterns.filters.FilterManager; -import com.baeldung.patterns.filters.OnIntercept; +import com.baeldung.patterns.intercepting.filter.filters.FilterManager; +import com.baeldung.patterns.intercepting.filter.filters.OnIntercept; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/HomeCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/HomeCommand.java similarity index 76% rename from patterns/src/main/java/com/baeldung/patterns/commands/HomeCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/HomeCommand.java index f2358400b9..33e60b44b5 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/HomeCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/HomeCommand.java @@ -1,6 +1,6 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; -import com.baeldung.patterns.data.Bookshelf; +import com.baeldung.patterns.intercepting.filter.data.Bookshelf; import javax.servlet.ServletException; import java.io.IOException; diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/LoginCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LoginCommand.java similarity index 93% rename from patterns/src/main/java/com/baeldung/patterns/commands/LoginCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LoginCommand.java index 1a7795eb3c..cbc8ad9498 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/LoginCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LoginCommand.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; import javax.servlet.ServletException; import javax.servlet.http.HttpSession; diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LogoutCommand.java similarity index 79% rename from patterns/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LogoutCommand.java index 82f4e753c9..3c9475d6af 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LogoutCommand.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; import javax.servlet.ServletException; import javax.servlet.http.HttpSession; @@ -11,6 +11,6 @@ public class LogoutCommand extends FrontCommand { HttpSession session = request.getSession(false); session.removeAttribute("username"); session.removeAttribute("order"); - response.sendRedirect("index?command=Home"); + response.sendRedirect("/?command=Home"); } } diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/OrderCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/OrderCommand.java similarity index 72% rename from patterns/src/main/java/com/baeldung/patterns/commands/OrderCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/OrderCommand.java index 5926dfddb5..e53fcf78dd 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/OrderCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/OrderCommand.java @@ -1,9 +1,9 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; -import com.baeldung.patterns.data.Book; -import com.baeldung.patterns.data.Bookshelf; -import com.baeldung.patterns.data.Order; -import com.baeldung.patterns.data.OrderImpl; +import com.baeldung.patterns.intercepting.filter.data.Book; +import com.baeldung.patterns.intercepting.filter.data.Bookshelf; +import com.baeldung.patterns.intercepting.filter.data.Order; +import com.baeldung.patterns.intercepting.filter.data.OrderImpl; import javax.servlet.ServletException; import javax.servlet.http.HttpSession; @@ -27,7 +27,7 @@ public class OrderCommand extends FrontCommand { Book book = bookshelf.get(isbn); order.add(book, quantity); session.setAttribute("order", order); - response.sendRedirect(String.format("index?command=Show&isbn=%s", isbn)); + response.sendRedirect(String.format("/?command=Show&isbn=%s", isbn)); } } } diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/SearchCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/SearchCommand.java similarity index 77% rename from patterns/src/main/java/com/baeldung/patterns/commands/SearchCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/SearchCommand.java index 30e401e83a..6c52f4f5a9 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/SearchCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/SearchCommand.java @@ -1,7 +1,7 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; -import com.baeldung.patterns.data.Book; -import com.baeldung.patterns.data.Bookshelf; +import com.baeldung.patterns.intercepting.filter.data.Book; +import com.baeldung.patterns.intercepting.filter.data.Bookshelf; import javax.servlet.ServletException; import java.io.IOException; diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/ShowCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/ShowCommand.java similarity index 75% rename from patterns/src/main/java/com/baeldung/patterns/commands/ShowCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/ShowCommand.java index 3226d9969f..1ea5ca6edb 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/ShowCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/ShowCommand.java @@ -1,7 +1,7 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; -import com.baeldung.patterns.data.Book; -import com.baeldung.patterns.data.Bookshelf; +import com.baeldung.patterns.intercepting.filter.data.Book; +import com.baeldung.patterns.intercepting.filter.data.Bookshelf; import javax.servlet.ServletException; import java.io.IOException; diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/UnknownCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/UnknownCommand.java similarity index 81% rename from patterns/src/main/java/com/baeldung/patterns/commands/UnknownCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/UnknownCommand.java index 71634e5263..427efe5aba 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/UnknownCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/UnknownCommand.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; import javax.servlet.ServletException; import java.io.IOException; diff --git a/patterns/src/main/java/com/baeldung/patterns/data/Book.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Book.java similarity index 82% rename from patterns/src/main/java/com/baeldung/patterns/data/Book.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Book.java index ab417aa93b..4e98095c2c 100644 --- a/patterns/src/main/java/com/baeldung/patterns/data/Book.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Book.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.data; +package com.baeldung.patterns.intercepting.filter.data; public interface Book { String getIsbn(); diff --git a/patterns/src/main/java/com/baeldung/patterns/data/BookImpl.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/BookImpl.java similarity index 94% rename from patterns/src/main/java/com/baeldung/patterns/data/BookImpl.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/BookImpl.java index adecfd1d3a..cd0c0924e2 100644 --- a/patterns/src/main/java/com/baeldung/patterns/data/BookImpl.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/BookImpl.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.data; +package com.baeldung.patterns.intercepting.filter.data; public class BookImpl implements Book { private String isbn; diff --git a/patterns/src/main/java/com/baeldung/patterns/data/Bookshelf.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Bookshelf.java similarity index 89% rename from patterns/src/main/java/com/baeldung/patterns/data/Bookshelf.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Bookshelf.java index 66a1da9272..26541de8e0 100644 --- a/patterns/src/main/java/com/baeldung/patterns/data/Bookshelf.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Bookshelf.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.data; +package com.baeldung.patterns.intercepting.filter.data; import java.util.List; diff --git a/patterns/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/BookshelfImpl.java similarity index 91% rename from patterns/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/BookshelfImpl.java index a7cbda140d..5767af8e50 100644 --- a/patterns/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/BookshelfImpl.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.data; +package com.baeldung.patterns.intercepting.filter.data; import java.util.ArrayList; import java.util.List; diff --git a/patterns/src/main/java/com/baeldung/patterns/data/Order.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Order.java similarity index 73% rename from patterns/src/main/java/com/baeldung/patterns/data/Order.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Order.java index 6dc67e4e58..f4a32002d7 100644 --- a/patterns/src/main/java/com/baeldung/patterns/data/Order.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Order.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.data; +package com.baeldung.patterns.intercepting.filter.data; import java.util.Map; diff --git a/patterns/src/main/java/com/baeldung/patterns/data/OrderImpl.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/OrderImpl.java similarity index 93% rename from patterns/src/main/java/com/baeldung/patterns/data/OrderImpl.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/OrderImpl.java index 73232ab11c..9f50e45082 100644 --- a/patterns/src/main/java/com/baeldung/patterns/data/OrderImpl.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/OrderImpl.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.data; +package com.baeldung.patterns.intercepting.filter.data; import java.util.HashMap; import java.util.Map; diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/AuthenticationFilter.java similarity index 86% rename from patterns/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/AuthenticationFilter.java index f5e03878ca..a2cac9d84c 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/AuthenticationFilter.java @@ -1,7 +1,7 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; -import com.baeldung.patterns.commands.FrontCommand; -import com.baeldung.patterns.commands.LoginCommand; +import com.baeldung.patterns.intercepting.filter.commands.FrontCommand; +import com.baeldung.patterns.intercepting.filter.commands.LoginCommand; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/BaseFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/BaseFilter.java similarity index 91% rename from patterns/src/main/java/com/baeldung/patterns/filters/BaseFilter.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/BaseFilter.java index 670039a62c..90d13a6eda 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/BaseFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/BaseFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/EncodingFilter.java similarity index 90% rename from patterns/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/EncodingFilter.java index 2856bb1112..ef3f95382e 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/EncodingFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; import javax.servlet.*; import javax.servlet.annotation.WebFilter; @@ -6,7 +6,7 @@ import javax.servlet.annotation.WebInitParam; import java.io.IOException; @WebFilter( - servletNames = {"front-controller"}, + servletNames = {"intercepting-filter"}, initParams = {@WebInitParam(name = "encoding", value = "UTF-8")} ) public class EncodingFilter extends BaseFilter { diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/FilterChainImpl.java similarity index 91% rename from patterns/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/FilterChainImpl.java index 789fc003a0..80ddef785c 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/FilterChainImpl.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; import javax.servlet.*; import java.io.IOException; diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/FilterManager.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/FilterManager.java similarity index 91% rename from patterns/src/main/java/com/baeldung/patterns/filters/FilterManager.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/FilterManager.java index ae945107fd..2f7b7ac703 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/FilterManager.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/FilterManager.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; import javax.servlet.FilterChain; import javax.servlet.ServletException; diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/LoggingFilter.java similarity index 90% rename from patterns/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/LoggingFilter.java index f6ffc20585..0ebb397938 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/LoggingFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,7 +11,7 @@ import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import java.io.IOException; -@WebFilter(servletNames = "front-controller") +@WebFilter(servletNames = "intercepting-filter") public class LoggingFilter extends BaseFilter { private static final Logger log = LoggerFactory.getLogger(LoggingFilter.class); diff --git a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/OnIntercept.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/OnIntercept.java new file mode 100644 index 0000000000..1a138f1e1c --- /dev/null +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/OnIntercept.java @@ -0,0 +1,5 @@ +package com.baeldung.patterns.intercepting.filter.filters; + +public interface OnIntercept { + void intercept(); +} diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/TemplateFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/TemplateFilter.java similarity index 95% rename from patterns/src/main/java/com/baeldung/patterns/filters/TemplateFilter.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/TemplateFilter.java index 939d9ad84d..69c613fffe 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/TemplateFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/TemplateFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; import javax.servlet.FilterChain; import javax.servlet.ServletException; diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/VisitorCounterFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/VisitorCounterFilter.java similarity index 93% rename from patterns/src/main/java/com/baeldung/patterns/filters/VisitorCounterFilter.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/VisitorCounterFilter.java index 5c2358686b..5521b9faee 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/VisitorCounterFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/VisitorCounterFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; diff --git a/patterns/src/main/resources/front_controller.png b/patterns/intercepting-filter/src/main/resources/front_controller.png similarity index 100% rename from patterns/src/main/resources/front_controller.png rename to patterns/intercepting-filter/src/main/resources/front_controller.png diff --git a/patterns/src/main/resources/front_controller.puml b/patterns/intercepting-filter/src/main/resources/front_controller.puml similarity index 100% rename from patterns/src/main/resources/front_controller.puml rename to patterns/intercepting-filter/src/main/resources/front_controller.puml diff --git a/patterns/src/main/resources/intercepting_filter.png b/patterns/intercepting-filter/src/main/resources/intercepting_filter.png similarity index 100% rename from patterns/src/main/resources/intercepting_filter.png rename to patterns/intercepting-filter/src/main/resources/intercepting_filter.png diff --git a/patterns/src/main/resources/intercepting_filter.puml b/patterns/intercepting-filter/src/main/resources/intercepting_filter.puml similarity index 100% rename from patterns/src/main/resources/intercepting_filter.puml rename to patterns/intercepting-filter/src/main/resources/intercepting_filter.puml diff --git a/patterns/src/main/webapp/WEB-INF/jsp/book-found.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/book-found.jsp similarity index 81% rename from patterns/src/main/webapp/WEB-INF/jsp/book-found.jsp rename to patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/book-found.jsp index 95a74b9e2e..4de1d3ca23 100644 --- a/patterns/src/main/webapp/WEB-INF/jsp/book-found.jsp +++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/book-found.jsp @@ -1,4 +1,4 @@ -<%@ page import="com.baeldung.patterns.data.Book" %> +<%@ page import="com.baeldung.patterns.intercepting.filter.data.Book" %> <%@ page import="java.util.List" %> @@ -10,12 +10,12 @@ <% for (Book book : (List) request.getAttribute("books")) { %>

<%= book.getTitle() %>

Author: <%= book.getAuthor() %>

-
+ - Go back... + Go back...
<% } %> <%@ include file="shopping-cart-hint.jsp"%> diff --git a/patterns/src/main/webapp/WEB-INF/jsp/book-notfound.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/book-notfound.jsp similarity index 100% rename from patterns/src/main/webapp/WEB-INF/jsp/book-notfound.jsp rename to patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/book-notfound.jsp diff --git a/patterns/src/main/webapp/WEB-INF/jsp/home.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/home.jsp similarity index 79% rename from patterns/src/main/webapp/WEB-INF/jsp/home.jsp rename to patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/home.jsp index e7bf1562ea..2c2d7c2f22 100644 --- a/patterns/src/main/webapp/WEB-INF/jsp/home.jsp +++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/home.jsp @@ -1,4 +1,4 @@ -<%@ page import="com.baeldung.patterns.data.Book" %> +<%@ page import="com.baeldung.patterns.intercepting.filter.data.Book" %> <%@ page import="java.util.List" %> @@ -6,7 +6,7 @@ Bookshelf: Home -
+
@@ -19,7 +19,7 @@

<%= book.getAuthor() %>:

<%= book.getTitle() %>

- More... + More... <% } %> <%@ include file="shopping-cart-hint.jsp"%> <%@ include file="visitor-counter.jsp"%> diff --git a/patterns/src/main/webapp/WEB-INF/jsp/login.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/login.jsp similarity index 89% rename from patterns/src/main/webapp/WEB-INF/jsp/login.jsp rename to patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/login.jsp index 6983fba949..619068bcae 100644 --- a/patterns/src/main/webapp/WEB-INF/jsp/login.jsp +++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/login.jsp @@ -6,7 +6,7 @@

Please input a username:

Login

-
+ "> diff --git a/patterns/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp similarity index 78% rename from patterns/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp rename to patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp index 9173c35711..7e0c051540 100644 --- a/patterns/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp +++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp @@ -1,4 +1,4 @@ -<%@ page import="com.baeldung.patterns.data.Order" %> +<%@ 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) { %> @@ -10,7 +10,7 @@ <% } else { %> <%= (order.getItems().size()) %> items. <% } %> - Checkout + Checkout

<% } %> <% } %> diff --git a/patterns/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp similarity index 80% rename from patterns/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp rename to patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp index 024a3bac3e..5f71d2e54e 100644 --- a/patterns/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp +++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp @@ -1,5 +1,5 @@ -<%@ page import="com.baeldung.patterns.data.Book" %> -<%@ page import="com.baeldung.patterns.data.Order" %> +<%@ page import="com.baeldung.patterns.intercepting.filter.data.Book" %> +<%@ page import="com.baeldung.patterns.intercepting.filter.data.Order" %> <%@ page import="java.util.Map" %> @@ -22,7 +22,7 @@

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/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp similarity index 60% rename from patterns/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp rename to patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp index 397364e2b3..de1c741fb1 100644 --- a/patterns/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp +++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp @@ -1,5 +1,5 @@ <% Integer counter = (Integer) request.getAttribute("counter"); %> <% if (counter != null && counter > 0) { %>
-

You are visitor #<%= counter %>. Logout

+

You are visitor #<%= counter %>. Logout

<% } %> diff --git a/patterns/pom.xml b/patterns/pom.xml index 1b7340304b..6797891353 100644 --- a/patterns/pom.xml +++ b/patterns/pom.xml @@ -4,60 +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.patterns + patterns-parent + pom + + front-controller + intercepting-filter + + com.baeldung parent-modules 1.0.0-SNAPSHOT + .. - com.baeldung.patterns - patterns - war - - - - javax.servlet - javax.servlet-api - 3.1.0 - provided - - - org.slf4j - slf4j-api - 1.7.21 - provided - - + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + - - - 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.11.v20160721 - - - / - - - - + + + + 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/patterns/filters/OnIntercept.java b/patterns/src/main/java/com/baeldung/patterns/filters/OnIntercept.java deleted file mode 100644 index 73be3509f0..0000000000 --- a/patterns/src/main/java/com/baeldung/patterns/filters/OnIntercept.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.baeldung.patterns.filters; - -public interface OnIntercept { - void intercept(); -}