From 7652b11bca5265ee311bda00adcf852a0c352530 Mon Sep 17 00:00:00 2001 From: Kevin Date: Tue, 18 Jan 2022 13:51:53 -0600 Subject: [PATCH] new pattern: Issue#1264: Implemented Composite-View Pattern (#1923) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * initial commit, created package, README, pom, and directory structure. * Issue#1264, continue working on JavaBeans, added getters, setters, and private fields. Created test file for JavaBeans. * set up junit for tests folder. * Issue#1264, set up local server and added web-application framework to composite-view to allow the JSP to run on a local Tomcat container. Wrote unit tests for Java-bean class, working on JSP pages. * Issue#1264, Added forwarding functionality to servlet and main composite view page. * Issue#1264, Finished composite view template in newsDisplay.jsp and created atomic sub-view components in businessNews.jsp, header.jsp, localNews.jsp, scienceNews.jsp, sportsNews.jsp, worldNews.jsp. Composite view page renders correctly, atomic views are inserted in and substituted in the template page depending on request parameters. * Issue#1264, Added all views, updated README.md with documentation. * Issue#1264, updated README.md, moved images folder into etc folder. * Issue#1264, removed build artifacts from tracked files. * Issue#1264, updated README.md * Issue#1264, updated README.md * Issue#1264, removed unused import, made AppServlet class final, changed to .equals() for string comparison. * Issue#1264, in AppServlet, put the output writing into try blocks to ensure writers are closed. * Issue#1264, added tests for Servlet, coverage up to 100%, used lombok to reduce boilerplate setters and getter, updated README.md with better grammar, appropriate tags and links to related patterns. Updated pom.xml to get rid of superfluous lines. * Issue#1264, made changes as requested in README.md. Co-authored-by: Ilkka Seppälä --- composite-view/README.md | 325 ++++++++++++++++++ composite-view/etc/composite-view.urm.puml | 29 ++ composite-view/etc/composite_view.png | Bin 0 -> 19092 bytes composite-view/etc/images/noparam.PNG | Bin 0 -> 72495 bytes composite-view/etc/images/threeparams.PNG | Bin 0 -> 78650 bytes composite-view/pom.xml | 80 +++++ .../iluwatar/compositeview/AppServlet.java | 64 ++++ .../compositeview/ClientPropertiesBean.java | 53 +++ .../compositeview/AppServletTest.java | 83 +++++ .../iluwatar/compositeview/JavaBeansTest.java | 71 ++++ composite-view/web/WEB-INF/web.xml | 14 + composite-view/web/businessNews.jsp | 33 ++ composite-view/web/header.jsp | 23 ++ composite-view/web/index.jsp | 20 ++ composite-view/web/localNews.jsp | 25 ++ composite-view/web/newsDisplay.jsp | 57 +++ composite-view/web/scienceNews.jsp | 34 ++ composite-view/web/sportsNews.jsp | 32 ++ composite-view/web/worldNews.jsp | 34 ++ pom.xml | 1 + 20 files changed, 978 insertions(+) create mode 100644 composite-view/README.md create mode 100644 composite-view/etc/composite-view.urm.puml create mode 100644 composite-view/etc/composite_view.png create mode 100644 composite-view/etc/images/noparam.PNG create mode 100644 composite-view/etc/images/threeparams.PNG create mode 100644 composite-view/pom.xml create mode 100644 composite-view/src/main/java/com/iluwatar/compositeview/AppServlet.java create mode 100644 composite-view/src/main/java/com/iluwatar/compositeview/ClientPropertiesBean.java create mode 100644 composite-view/src/test/java/com/iluwatar/compositeview/AppServletTest.java create mode 100644 composite-view/src/test/java/com/iluwatar/compositeview/JavaBeansTest.java create mode 100644 composite-view/web/WEB-INF/web.xml create mode 100644 composite-view/web/businessNews.jsp create mode 100644 composite-view/web/header.jsp create mode 100644 composite-view/web/index.jsp create mode 100644 composite-view/web/localNews.jsp create mode 100644 composite-view/web/newsDisplay.jsp create mode 100644 composite-view/web/scienceNews.jsp create mode 100644 composite-view/web/sportsNews.jsp create mode 100644 composite-view/web/worldNews.jsp diff --git a/composite-view/README.md b/composite-view/README.md new file mode 100644 index 000000000..e4ccced28 --- /dev/null +++ b/composite-view/README.md @@ -0,0 +1,325 @@ +--- +layout: pattern +title: Composite View +folder: composite-view +permalink: /patterns/composite-view/ +categories: Structural +language: en +tags: +- Enterprise Integration Pattern +- Presentation +--- + +## Name +**Composite View** + +## Intent +The purpose of the Composite View Pattern is to increase re-usability and flexibility when creating views for websites/webapps. +This pattern seeks to decouple the content of the page from its layout, allowing changes to be made to either the content +or layout of the page without impacting the other. This pattern also allows content to be easily reused across different views easily. + +## Explanation +Real World Example +> A news site wants to display the current date and news to different users +> based on that user's preferences. The news site will substitute in different news feed +> components depending on the user's interest, defaulting to local news. + +In Plain Words +> Composite View Pattern is having a main view being composed of smaller subviews. +> The layout of this composite view is based on a template. A View-manager then decides which +> subviews to include in this template. + +Wikipedia Says +> Composite views that are composed of multiple atomic subviews. Each component of +> the template may be included dynamically into the whole and the layout of the page may be managed independently of the content. +> This solution provides for the creation of a composite view based on the inclusion and substitution of +> modular dynamic and static template fragments. +> It promotes the reuse of atomic portions of the view by encouraging modular design. + +**Programmatic Example** + +Since this is a web development pattern, a server is required to demonstrate it. +This example uses Tomcat 10.0.13 to run the servlet, and this programmatic example will only work with Tomcat 10+. + +Firstly there is `AppServlet` which is an `HttpServlet` that runs on Tomcat 10+. +```java +public class AppServlet extends HttpServlet { + private String msgPartOne = "

This Server Doesn't Support"; + private String msgPartTwo = "Requests

\n" + + "

Use a GET request with boolean values for the following parameters

\n" + + "

'name'

\n

'bus'

\n

'sports'

\n

'sci'

\n

'world'

"; + + private String destination = "newsDisplay.jsp"; + + public AppServlet() { + + } + + @Override + public void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + RequestDispatcher requestDispatcher = req.getRequestDispatcher(destination); + ClientPropertiesBean reqParams = new ClientPropertiesBean(req); + req.setAttribute("properties", reqParams); + requestDispatcher.forward(req, resp); + } + + @Override + public void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + resp.setContentType("text/html"); + PrintWriter out = resp.getWriter(); + out.println(msgPartOne + " Post " + msgPartTwo); + + } + + @Override + public void doDelete(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + resp.setContentType("text/html"); + PrintWriter out = resp.getWriter(); + out.println(msgPartOne + " Delete " + msgPartTwo); + + } + + @Override + public void doPut(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + resp.setContentType("text/html"); + PrintWriter out = resp.getWriter(); + out.println(msgPartOne + " Put " + msgPartTwo); + + } +} + +``` +This servlet is not part of the pattern, and simply forwards GET requests to the correct JSP. +PUT, POST, and DELETE requests are not supported and will simply show an error message. + +The view management in this example is done via a javabean class: `ClientPropertiesBean`, which stores user preferences. +```java +public class ClientPropertiesBean implements Serializable { + + private static final String WORLD_PARAM = "world"; + private static final String SCIENCE_PARAM = "sci"; + private static final String SPORTS_PARAM = "sport"; + private static final String BUSINESS_PARAM = "bus"; + private static final String NAME_PARAM = "name"; + + private static final String DEFAULT_NAME = "DEFAULT_NAME"; + private boolean worldNewsInterest; + private boolean sportsInterest; + private boolean businessInterest; + private boolean scienceNewsInterest; + private String name; + + public ClientPropertiesBean() { + worldNewsInterest = true; + sportsInterest = true; + businessInterest = true; + scienceNewsInterest = true; + name = DEFAULT_NAME; + + } + + public ClientPropertiesBean(HttpServletRequest req) { + worldNewsInterest = Boolean.parseBoolean(req.getParameter(WORLD_PARAM)); + sportsInterest = Boolean.parseBoolean(req.getParameter(SPORTS_PARAM)); + businessInterest = Boolean.parseBoolean(req.getParameter(BUSINESS_PARAM)); + scienceNewsInterest = Boolean.parseBoolean(req.getParameter(SCIENCE_PARAM)); + String tempName = req.getParameter(NAME_PARAM); + if (tempName == null || tempName == "") { + tempName = DEFAULT_NAME; + } + name = tempName; + } + // getters and setters generated by Lombok +} +``` +This javabean has a default constructor, and another that takes an `HttpServletRequest`. +This second constructor takes the request object, parses out the request parameters which contain the +user preferences for different types of news. + +The template for the news page is in `newsDisplay.jsp` +```html + + + + + + <%ClientPropertiesBean propertiesBean = (ClientPropertiesBean) request.getAttribute("properties");%> +

Welcome <%= propertiesBean.getName()%>

+ + + + + + <% if(propertiesBean.isWorldNewsInterest()) { %> + + <% } else { %> + + <% } %> + + + + <% if(propertiesBean.isBusinessInterest()) { %> + + <% } else { %> + + <% } %> + + <% if(propertiesBean.isSportsInterest()) { %> + + <% } else { %> + + <% } %> + + + + <% if(propertiesBean.isScienceNewsInterest()) { %> + + <% } else { %> + + <% } %> + + +
<%@include file="worldNews.jsp"%><%@include file="localNews.jsp"%>
<%@include file="businessNews.jsp"%><%@include file="localNews.jsp"%><%@include file="sportsNews.jsp"%><%@include file="localNews.jsp"%>
<%@include file="scienceNews.jsp"%><%@include file="localNews.jsp"%>
+ + +``` +This JSP page is the template. It declares a table with three rows, with one component in the first row, +two components in the second row, and one component in the third row. + +The scriplets in the file are part of the +view management strategy that include different atomic subviews based on the user preferences in the Javabean. + +Here are two examples of the mock atomic subviews used in the composite: +`businessNews.jsp` +```html + + + + + +

+ Generic Business News +

+ + + + + + + + + +
Stock prices up across the worldNew tech companies to invest in
Industry leaders unveil new projectPrice fluctuations and what they mean
+ + +``` +`localNews.jsp` +```html + + +
+

+ Generic Local News +

+
    +
  • + Mayoral elections coming up in 2 weeks +
  • +
  • + New parking meter rates downtown coming tomorrow +
  • +
  • + Park renovations to finish by the next year +
  • +
  • + Annual marathon sign ups available online +
  • +
+
+ + +``` +The results are as such: + +1) The user has put their name as `Tammy` in the request parameters and no preferences: +![alt text](etc/images/noparam.PNG) +2) The user has put their name as `Johnny` in the request parameters and has a preference for world, business, and science news: +![alt text](etc/images/threeparams.PNG) + +The different subviews such as `worldNews.jsp`, `businessNews.jsp`, etc. are included conditionally +based on the request parameters. + +**How To Use** + +To try this example, make sure you have Tomcat 10+ installed. +Set up your IDE to build a WAR file from the module and deploy that file to the server + +IntelliJ: + +Under `Run` and `edit configurations` Make sure Tomcat server is one of the run configurations. +Go to the deployment tab, and make sure there is one artifact being built called `composite-view:war exploded`. +If not present, add one. + +Ensure that the artifact is being built from the content of the `web` directory and the compilation results of the module. +Point the output of the artifact to a convenient place. Run the configuration and view the landing page, +follow instructions on that page to continue. + +## Class diagram + +![alt text](./etc/composite_view.png) + +The class diagram here displays the Javabean which is the view manager. +The views are JSP's held inside the web directory. + +## Applicability + +This pattern is applicable to most websites that require content to be displayed dynamically/conditionally. +If there are components that need to be re-used for multiple views, or if the project requires reusing a template, +or if it needs to include content depending on certain conditions, then this pattern is a good choice. + +## Known uses + +Most modern websites use composite views in some shape or form, as they have templates for views and small atomic components +that are included in the page dynamically. Most modern Javascript libraries, like React, support this design pattern +with components. + +## Consequences +**Pros** +* Easy to re-use components +* Change layout/content without affecting the other +* Reduce code duplication +* Code is more maintainable and modular + +**Cons** +* Overhead cost at runtime +* Slower response compared to directly embedding elements +* Increases potential for display errors + +## Related patterns +* [Composite (GoF)](https://java-design-patterns.com/patterns/composite/) +* [View Helper](https://www.oracle.com/java/technologies/viewhelper.html) + +## Credits +* [Core J2EE Patterns - Composite View](https://www.oracle.com/java/technologies/composite-view.html) +* [Composite View Design Pattern – Core J2EE Patterns](https://www.dineshonjava.com/composite-view-design-pattern/) + diff --git a/composite-view/etc/composite-view.urm.puml b/composite-view/etc/composite-view.urm.puml new file mode 100644 index 000000000..e92b13ea5 --- /dev/null +++ b/composite-view/etc/composite-view.urm.puml @@ -0,0 +1,29 @@ +@startuml +package com.iluwatar.compositeview { + class ClientPropertiesBean { + - BUSINESS_PARAM : String {static} + - DEFAULT_NAME : String {static} + - NAME_PARAM : String {static} + - SCIENCE_PARAM : String {static} + - SPORTS_PARAM : String {static} + - WORLD_PARAM : String {static} + - businessInterest : boolean + - name : String + - scienceNewsInterest : boolean + - sportsInterest : boolean + - worldNewsInterest : boolean + + ClientPropertiesBean() + + ClientPropertiesBean(req : HttpServletRequest) + + getName() : String + + isBusinessInterest() : boolean + + isScienceNewsInterest() : boolean + + isSportsInterest() : boolean + + isWorldNewsInterest() : boolean + + setBusinessInterest(businessInterest : boolean) + + setName(name : String) + + setScienceNewsInterest(scienceNewsInterest : boolean) + + setSportsInterest(sportsInterest : boolean) + + setWorldNewsInterest(worldNewsInterest : boolean) + } +} +@enduml \ No newline at end of file diff --git a/composite-view/etc/composite_view.png b/composite-view/etc/composite_view.png new file mode 100644 index 0000000000000000000000000000000000000000..66215d9416b8ae2422e3c4260a6da24f164e3765 GIT binary patch literal 19092 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

%7Lr|HB3qZ+=U@9^}6r_fI<$JNF~Pnx9O? z8I2i`8o093* z#lfjvaY#wv76ql3 ze|=ki!1oNi?8OBA(=V4J2u>9cAMB1yG+a*At;2Gz4>-s)%=tE$*feh_8*d&SsFM&R zKcLkKx6|e2G<&>ixkn{bQ}_G>im2;{TYUbTq43|o9|^3f){B!vE$HBP2Gu)xZ<{e2 z?NFduC`hg_Ik?1AaAc%RRj_2ZZkTn$**9v>9=QwsoyaT~s2t`pF#-mD3$^^k_o4D zSG0YY3m!nv10}4*IFV9=55*T&*Jwj|eMjqVMW^h$%o+jlV|D$Yh5484jLVCWN;A=E z%R@P28&)9vJkH4UpR=Mcl3clEn+3|Egz_VzS@OM8&87aERU; z?m$gFdrmG(U_AHlP z^3XRE7i+qAY>&`>0YnnPK6JNP{vo0J zhJsXr+Sf^4aZ92w#lI{i(`N}q$s;qS6h@p`bJ>&?>ZAwOJXkGOHGLJ=ULImkB1yv}=eVoaGm!Huf8(hVM2) zxwU6ivbUnHHCiP}{yYDL=HyTKf}wWylrVVT@pZ#i4R6G#iA5@5m6DJMC~OEdowO+x zeq|Uf?tac$oLNlSy6Io3T|P`{8y=jLi$%oA&bI)nt$*kL&-?nvuXc{F<(lIr-Vv7d z2fFq8>pLR-eTHh!G@%ymli03Zn%TH||C#hpm&q(y$2`#Vdif7xr&4{Y*AKZHO*Aa; z^VT|jK+TUEE-loRb8owJUB6#jQ7DCw+gxKP4FVViGPWxl#reNNE#BZW&~Wsh{3_(RY&B#~#ks7#BAFz682y-!gjpJ+`LCK=P%b!w=Z`!hj^b2>j?Q5Pf6d7bpF2oi%4}@%f{L`34 zFVoXvQ;Ud*RZBuq zT!R2456P=?0cUGb@5^VM>kn0XXO$IfW0^D7<|+%260mf`m0(O zl_)f-^GCetRl5CmNYH)D$5S~CIA|=Z-Wy%#$K z(_{WWbB)~TV)^~H^|NEvFWiL1XMzQ=4HmvBg+p=G(%z7nQO=)y)aTDeRq*@mcBq0`eusR1J4}An4BW0=DDT1L zA>bkAAp>lP>Up;bEQ-1XJP}8rOANf5TMWEW8~s2WJW^gBx6;nc*eJ@#$hdF`Q>LFM zXrnii)5-RvDWF4i3T4lpIwb|%sqO*Zz0L{THoNEe_uX@OLT??}AgLb@+=;Gn@WJ1| zdFqEJn(e6p?lWJg()=By!2K5Aqo>(G7pqF_*?<3Sip8b2>FYsz+EYIKt25{N&wusr X3WXK?%143cLos-|`njxgN@xNA1M$d) literal 0 HcmV?d00001 diff --git a/composite-view/etc/images/noparam.PNG b/composite-view/etc/images/noparam.PNG new file mode 100644 index 0000000000000000000000000000000000000000..2979cf2bc65756821c7434fa1892bed02e8225ef GIT binary patch literal 72495 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 ?QdGzbD_KUCQgDO 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 qHm{w{Pe0CEm>6EaQg+Gt;r{_?p+dU= literal 0 HcmV?d00001 diff --git a/composite-view/etc/images/threeparams.PNG b/composite-view/etc/images/threeparams.PNG new file mode 100644 index 0000000000000000000000000000000000000000..9338dedb8885a8636f7260d4ac2f8f992270b854 GIT binary patch literal 78650 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 + + + + java-design-patterns + com.iluwatar + 1.26.0-SNAPSHOT + + 4.0.0 + composite-view + + + org.junit.jupiter + junit-jupiter-engine + test + + + junit + junit + test + + + jakarta.servlet + jakarta.servlet-api + 5.0.0 + compile + + + org.mockito + mockito-core + 4.1.0 + test + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + + + + com.iluwatar.compositeview.App + + + + + + + + + + \ No newline at end of file diff --git a/composite-view/src/main/java/com/iluwatar/compositeview/AppServlet.java b/composite-view/src/main/java/com/iluwatar/compositeview/AppServlet.java new file mode 100644 index 000000000..c15e44c9c --- /dev/null +++ b/composite-view/src/main/java/com/iluwatar/compositeview/AppServlet.java @@ -0,0 +1,64 @@ +package com.iluwatar.compositeview; + +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +/** + * A servlet object that extends HttpServlet. + * Runs on Tomcat 10 and handles Http requests + */ + +public final class AppServlet extends HttpServlet { + private String msgPartOne = "

This Server Doesn't Support"; + private String msgPartTwo = "Requests

\n" + + "

Use a GET request with boolean values for the following parameters

\n" + + "

'name'

\n

'bus'

\n

'sports'

\n

'sci'

\n

'world'

"; + + private String destination = "newsDisplay.jsp"; + + public AppServlet() { + + } + + @Override + public void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + RequestDispatcher requestDispatcher = req.getRequestDispatcher(destination); + ClientPropertiesBean reqParams = new ClientPropertiesBean(req); + req.setAttribute("properties", reqParams); + requestDispatcher.forward(req, resp); + } + + @Override + public void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + resp.setContentType("text/html"); + try (PrintWriter out = resp.getWriter()) { + out.println(msgPartOne + " Post " + msgPartTwo); + } + + } + + @Override + public void doDelete(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + resp.setContentType("text/html"); + try (PrintWriter out = resp.getWriter()) { + out.println(msgPartOne + " Delete " + msgPartTwo); + } + } + + @Override + public void doPut(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + resp.setContentType("text/html"); + try (PrintWriter out = resp.getWriter()) { + out.println(msgPartOne + " Put " + msgPartTwo); + } + } +} diff --git a/composite-view/src/main/java/com/iluwatar/compositeview/ClientPropertiesBean.java b/composite-view/src/main/java/com/iluwatar/compositeview/ClientPropertiesBean.java new file mode 100644 index 000000000..c8e694713 --- /dev/null +++ b/composite-view/src/main/java/com/iluwatar/compositeview/ClientPropertiesBean.java @@ -0,0 +1,53 @@ +package com.iluwatar.compositeview; + +import jakarta.servlet.http.HttpServletRequest; +import java.io.Serializable; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + + +/** + * A Java beans class that parses a http request and stores parameters. + * Java beans used in JSP's to dynamically include elements in view. + * DEFAULT_NAME = a constant, default name to be used for the default constructor + * worldNewsInterest = whether current request has world news interest + * sportsInterest = whether current request has a sportsInterest + * businessInterest = whether current request has a businessInterest + * scienceNewsInterest = whether current request has a scienceNewsInterest + */ +@Getter +@Setter +@NoArgsConstructor +public class ClientPropertiesBean implements Serializable { + + private static final String WORLD_PARAM = "world"; + private static final String SCIENCE_PARAM = "sci"; + private static final String SPORTS_PARAM = "sport"; + private static final String BUSINESS_PARAM = "bus"; + private static final String NAME_PARAM = "name"; + + private static final String DEFAULT_NAME = "DEFAULT_NAME"; + private boolean worldNewsInterest = true; + private boolean sportsInterest = true; + private boolean businessInterest = true; + private boolean scienceNewsInterest = true; + private String name = DEFAULT_NAME; + + /** + * Constructor that parses an HttpServletRequest and stores all the request parameters. + * + * @param req the HttpServletRequest object that is passed in + */ + public ClientPropertiesBean(HttpServletRequest req) { + worldNewsInterest = Boolean.parseBoolean(req.getParameter(WORLD_PARAM)); + sportsInterest = Boolean.parseBoolean(req.getParameter(SPORTS_PARAM)); + businessInterest = Boolean.parseBoolean(req.getParameter(BUSINESS_PARAM)); + scienceNewsInterest = Boolean.parseBoolean(req.getParameter(SCIENCE_PARAM)); + String tempName = req.getParameter(NAME_PARAM); + if (tempName == null || tempName.equals("")) { + tempName = DEFAULT_NAME; + } + name = tempName; + } +} diff --git a/composite-view/src/test/java/com/iluwatar/compositeview/AppServletTest.java b/composite-view/src/test/java/com/iluwatar/compositeview/AppServletTest.java new file mode 100644 index 000000000..38c1a1bc2 --- /dev/null +++ b/composite-view/src/test/java/com/iluwatar/compositeview/AppServletTest.java @@ -0,0 +1,83 @@ +package com.iluwatar.compositeview; + +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +import java.io.PrintWriter; +import java.io.StringWriter; + +import static org.junit.Assert.*; + +/* Written with reference from https://stackoverflow.com/questions/5434419/how-to-test-my-servlet-using-junit +and https://stackoverflow.com/questions/50211433/servlets-unit-testing + */ + +public class AppServletTest extends Mockito{ + private String msgPartOne = "

This Server Doesn't Support"; + private String msgPartTwo = "Requests

\n" + + "

Use a GET request with boolean values for the following parameters

\n" + + "

'name'

\n

'bus'

\n

'sports'

\n

'sci'

\n

'world'

"; + private String destination = "newsDisplay.jsp"; + + @Test + public void testDoGet() throws Exception { + HttpServletRequest mockReq = Mockito.mock(HttpServletRequest.class); + HttpServletResponse mockResp = Mockito.mock(HttpServletResponse.class); + RequestDispatcher mockDispatcher = Mockito.mock(RequestDispatcher.class); + StringWriter stringWriter = new StringWriter(); + PrintWriter printWriter = new PrintWriter(stringWriter); + when(mockResp.getWriter()).thenReturn(printWriter); + when(mockReq.getRequestDispatcher(destination)).thenReturn(mockDispatcher); + AppServlet curServlet = new AppServlet(); + curServlet.doGet(mockReq, mockResp); + verify(mockReq, times(1)).getRequestDispatcher(destination); + verify(mockDispatcher).forward(mockReq, mockResp); + + + } + + @Test + public void testDoPost() throws Exception { + HttpServletRequest mockReq = Mockito.mock(HttpServletRequest.class); + HttpServletResponse mockResp = Mockito.mock(HttpServletResponse.class); + StringWriter stringWriter = new StringWriter(); + PrintWriter printWriter = new PrintWriter(stringWriter); + when(mockResp.getWriter()).thenReturn(printWriter); + + AppServlet curServlet = new AppServlet(); + curServlet.doPost(mockReq, mockResp); + printWriter.flush(); + assertTrue(stringWriter.toString().contains(msgPartOne + " Post " + msgPartTwo)); + } + + @Test + public void testDoPut() throws Exception { + HttpServletRequest mockReq = Mockito.mock(HttpServletRequest.class); + HttpServletResponse mockResp = Mockito.mock(HttpServletResponse.class); + StringWriter stringWriter = new StringWriter(); + PrintWriter printWriter = new PrintWriter(stringWriter); + when(mockResp.getWriter()).thenReturn(printWriter); + + AppServlet curServlet = new AppServlet(); + curServlet.doPut(mockReq, mockResp); + printWriter.flush(); + assertTrue(stringWriter.toString().contains(msgPartOne + " Put " + msgPartTwo)); + } + + @Test + public void testDoDelete() throws Exception { + HttpServletRequest mockReq = Mockito.mock(HttpServletRequest.class); + HttpServletResponse mockResp = Mockito.mock(HttpServletResponse.class); + StringWriter stringWriter = new StringWriter(); + PrintWriter printWriter = new PrintWriter(stringWriter); + when(mockResp.getWriter()).thenReturn(printWriter); + + AppServlet curServlet = new AppServlet(); + curServlet.doDelete(mockReq, mockResp); + printWriter.flush(); + assertTrue(stringWriter.toString().contains(msgPartOne + " Delete " + msgPartTwo)); + } +} diff --git a/composite-view/src/test/java/com/iluwatar/compositeview/JavaBeansTest.java b/composite-view/src/test/java/com/iluwatar/compositeview/JavaBeansTest.java new file mode 100644 index 000000000..6583ab45d --- /dev/null +++ b/composite-view/src/test/java/com/iluwatar/compositeview/JavaBeansTest.java @@ -0,0 +1,71 @@ +package com.iluwatar.compositeview; + +import jakarta.servlet.http.HttpServletRequest; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +import static org.junit.Assert.*; + +public class JavaBeansTest { + @Test + public void testDefaultConstructor() { + ClientPropertiesBean newBean = new ClientPropertiesBean(); + assertEquals("DEFAULT_NAME", newBean.getName()); + assertTrue(newBean.isBusinessInterest()); + assertTrue(newBean.isScienceNewsInterest()); + assertTrue(newBean.isSportsInterest()); + assertTrue(newBean.isWorldNewsInterest()); + + } + + @Test + public void testNameGetterSetter() { + ClientPropertiesBean newBean = new ClientPropertiesBean(); + assertEquals("DEFAULT_NAME", newBean.getName()); + newBean.setName("TEST_NAME_ONE"); + assertEquals("TEST_NAME_ONE", newBean.getName()); + } + + @Test + public void testBusinessSetterGetter() { + ClientPropertiesBean newBean = new ClientPropertiesBean(); + assertTrue(newBean.isBusinessInterest()); + newBean.setBusinessInterest(false); + assertFalse(newBean.isBusinessInterest()); + } + + @Test + public void testScienceSetterGetter() { + ClientPropertiesBean newBean = new ClientPropertiesBean(); + assertTrue(newBean.isScienceNewsInterest()); + newBean.setScienceNewsInterest(false); + assertFalse(newBean.isScienceNewsInterest()); + } + + @Test + public void testSportsSetterGetter() { + ClientPropertiesBean newBean = new ClientPropertiesBean(); + assertTrue(newBean.isSportsInterest()); + newBean.setSportsInterest(false); + assertFalse(newBean.isSportsInterest()); + } + + @Test + public void testWorldSetterGetter() { + ClientPropertiesBean newBean = new ClientPropertiesBean(); + assertTrue(newBean.isWorldNewsInterest()); + newBean.setWorldNewsInterest(false); + assertFalse(newBean.isWorldNewsInterest()); + } + + @Test + public void testRequestConstructor(){ + HttpServletRequest mockReq = Mockito.mock(HttpServletRequest.class); + ClientPropertiesBean newBean = new ClientPropertiesBean((mockReq)); + assertEquals("DEFAULT_NAME", newBean.getName()); + assertFalse(newBean.isWorldNewsInterest()); + assertFalse(newBean.isBusinessInterest()); + assertFalse(newBean.isScienceNewsInterest()); + assertFalse(newBean.isSportsInterest()); + } +} diff --git a/composite-view/web/WEB-INF/web.xml b/composite-view/web/WEB-INF/web.xml new file mode 100644 index 000000000..7cdd74c7b --- /dev/null +++ b/composite-view/web/WEB-INF/web.xml @@ -0,0 +1,14 @@ + + + + appServlet + com.iluwatar.compositeview.AppServlet + + + appServlet + /news + + \ No newline at end of file diff --git a/composite-view/web/businessNews.jsp b/composite-view/web/businessNews.jsp new file mode 100644 index 000000000..f9c67bc3c --- /dev/null +++ b/composite-view/web/businessNews.jsp @@ -0,0 +1,33 @@ +<%-- + Created by IntelliJ IDEA. + User: Kevin + Date: 11/29/2021 + Time: 2:51 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + + +

+ Generic Business News +

+ + + + + + + + + +
Stock prices up across the worldNew tech companies to invest in
Industry leaders unveil new projectPrice fluctuations and what they mean
+ + diff --git a/composite-view/web/header.jsp b/composite-view/web/header.jsp new file mode 100644 index 000000000..07b24f878 --- /dev/null +++ b/composite-view/web/header.jsp @@ -0,0 +1,23 @@ +<%-- + Created by IntelliJ IDEA. + User: Kevin + Date: 11/29/2021 + Time: 1:28 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ page import="java.util.Date"%> + + + + + + <% String todayDateStr = (new Date().toString()); %> +

Today's Personalized Frontpage

+

<%=todayDateStr%>

+ + diff --git a/composite-view/web/index.jsp b/composite-view/web/index.jsp new file mode 100644 index 000000000..527db3b33 --- /dev/null +++ b/composite-view/web/index.jsp @@ -0,0 +1,20 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + + +

Welcome To The Composite Patterns Mock News Site

+

Send a GET request to the "/news" path to see the composite view with mock news

+

Use the following parameters:

+

name: string name to be dynamically displayed

+

bus: boolean for whether you want to see the mock business news

+

world: boolean for whether you want to see the mock world news

+

sci: boolean for whether you want to see the mock world news

+

sport: boolean for whether you want to see the mock world news

+ + diff --git a/composite-view/web/localNews.jsp b/composite-view/web/localNews.jsp new file mode 100644 index 000000000..3ab3ea1e9 --- /dev/null +++ b/composite-view/web/localNews.jsp @@ -0,0 +1,25 @@ + +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + +
+

+ Generic Local News +

+
    +
  • + Mayoral elections coming up in 2 weeks +
  • +
  • + New parking meter rates downtown coming tomorrow +
  • +
  • + Park renovations to finish by the next year +
  • +
  • + Annual marathon sign ups available online +
  • +
+
+ + diff --git a/composite-view/web/newsDisplay.jsp b/composite-view/web/newsDisplay.jsp new file mode 100644 index 000000000..936a98e1d --- /dev/null +++ b/composite-view/web/newsDisplay.jsp @@ -0,0 +1,57 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ page import="com.iluwatar.compositeview.ClientPropertiesBean"%> + + + + + + <%ClientPropertiesBean propertiesBean = (ClientPropertiesBean) request.getAttribute("properties");%> +

Welcome <%= propertiesBean.getName()%>

+ + + + + + <% if(propertiesBean.isWorldNewsInterest()) { %> + + <% } else { %> + + <% } %> + + + + <% if(propertiesBean.isBusinessInterest()) { %> + + <% } else { %> + + <% } %> + + <% if(propertiesBean.isSportsInterest()) { %> + + <% } else { %> + + <% } %> + + + + <% if(propertiesBean.isScienceNewsInterest()) { %> + + <% } else { %> + + <% } %> + + +
<%@include file="worldNews.jsp"%><%@include file="localNews.jsp"%>
<%@include file="businessNews.jsp"%><%@include file="localNews.jsp"%><%@include file="sportsNews.jsp"%><%@include file="localNews.jsp"%>
<%@include file="scienceNews.jsp"%><%@include file="localNews.jsp"%>
+ + diff --git a/composite-view/web/scienceNews.jsp b/composite-view/web/scienceNews.jsp new file mode 100644 index 000000000..2c81d8ff5 --- /dev/null +++ b/composite-view/web/scienceNews.jsp @@ -0,0 +1,34 @@ +<%-- + Created by IntelliJ IDEA. + User: Kevin + Date: 11/29/2021 + Time: 4:18 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + +
+

+ Generic Science News +

+
    +
  • + New model of gravity proposed for dark matter +
  • +
  • + Genetic modifying technique proved on bacteria +
  • +
  • + Neurology study maps brain with new precision +
  • +
  • + Survey of rainforest discovers 15 new species +
  • +
  • + New signalling pathway for immune system discovered +
  • +
+
+ + diff --git a/composite-view/web/sportsNews.jsp b/composite-view/web/sportsNews.jsp new file mode 100644 index 000000000..3d3aa12e8 --- /dev/null +++ b/composite-view/web/sportsNews.jsp @@ -0,0 +1,32 @@ +<%-- + Created by IntelliJ IDEA. + User: Kevin + Date: 11/29/2021 + Time: 3:53 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + + +

+ Generic Sports News +

+
+ International football match delayed due to weather, will be held next week +
+
+ New rising stars in winter sports, ten new athletes that will shake up the scene +
+
+ Biggest upset in basketball history, upstart team sweeps competition +
+ + diff --git a/composite-view/web/worldNews.jsp b/composite-view/web/worldNews.jsp new file mode 100644 index 000000000..a75060d76 --- /dev/null +++ b/composite-view/web/worldNews.jsp @@ -0,0 +1,34 @@ +<%-- + Created by IntelliJ IDEA. + User: Kevin + Date: 11/29/2021 + Time: 2:51 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + + +

+ Generic World News +

+ + + + + + + + + + +
New trade talks happening at UN on Thursday
European Union to announce new resolution next week
UN delivers report on world economic status
+ + diff --git a/pom.xml b/pom.xml index e1573a737..e58146c72 100644 --- a/pom.xml +++ b/pom.xml @@ -228,6 +228,7 @@ lockable-object fanout-fanin domain-model + composite-view metadata-mapping