Author: rotty3000 Date: Thu Sep 7 21:07:30 2017 New Revision: 1807650 URL: http://svn.apache.org/viewvc?rev=1807650&view=rev Log: [CDI] add http request scoped test with reference
Signed-off-by: Raymond Augé <[email protected]> Added: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BarServlet.java - copied, changed from r1807639, aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BeanServlet.java aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/FooServlet.java - copied, changed from r1807639, aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BeanServlet.java aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/RequestData.java aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/SessionData.java - copied, changed from r1807639, aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/SessionBean.java Removed: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BeanServlet.java aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/SessionBean.java Modified: aries/trunk/cdi/cdi-itests/bnd/tb6-beans.xml aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/HttpTestCase.java Modified: aries/trunk/cdi/cdi-itests/bnd/tb6-beans.xml URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb6-beans.xml?rev=1807650&r1=1807649&r2=1807650&view=diff ============================================================================== --- aries/trunk/cdi/cdi-itests/bnd/tb6-beans.xml (original) +++ aries/trunk/cdi/cdi-itests/bnd/tb6-beans.xml Thu Sep 7 21:07:30 2017 @@ -1,6 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:cdi="http://www.osgi.org/xmlns/cdi/v1.0.0"> - <cdi:component class="org.apache.aries.cdi.test.tb6.BeanServlet" /> - <cdi:component class="org.apache.aries.cdi.test.tb6.SessionBean" /> + <cdi:component class="org.apache.aries.cdi.test.tb6.BarServlet" /> + <cdi:component class="org.apache.aries.cdi.test.tb6.FooServlet" /> + <cdi:component class="org.apache.aries.cdi.test.tb6.RequestData" /> + <cdi:component class="org.apache.aries.cdi.test.tb6.SessionData" /> </beans> Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/HttpTestCase.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/HttpTestCase.java?rev=1807650&r1=1807649&r2=1807650&view=diff ============================================================================== --- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/HttpTestCase.java (original) +++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/HttpTestCase.java Thu Sep 7 21:07:30 2017 @@ -37,8 +37,9 @@ import org.osgi.util.tracker.ServiceTrac public class HttpTestCase extends AbstractTestCase { - public void testSessionBean() throws Exception { - Bundle tb5Bundle = installBundle("tb6.jar"); + public void testSessionScoped() throws Exception { + Bundle tb6Bundle = installBundle("tb6.jar"); + Bundle tb2Bundle = installBundle("tb2.jar"); try { String path = "/foo"; @@ -94,7 +95,71 @@ public class HttpTestCase extends Abstra } } finally { - tb5Bundle.uninstall(); + tb6Bundle.uninstall(); + tb2Bundle.uninstall(); + } + } + + public void testRequestScopedWithReference() throws Exception { + Bundle tb6Bundle = installBundle("tb6.jar"); + Bundle tb2Bundle = installBundle("tb2.jar"); + + try { + String path = "/bar"; + + RequestInfoDTO requestInfoDTO = waitFor(path); + + assertEquals("bar", requestInfoDTO.servletDTO.name); + + HttpClientBuilder clientBuilder = hcbf.newBuilder(); + CloseableHttpClient httpclient = clientBuilder.build(); + + CookieStore cookieStore = new BasicCookieStore(); + HttpContext httpContext = new BasicHttpContext(); + httpContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore); + + URI uri = new URIBuilder(getEndpoint()). + setPath(path). + setParameter("name", "test"). + build(); + + HttpGet httpget = new HttpGet(uri); + + try (CloseableHttpResponse response = httpclient.execute(httpget, httpContext)) { + HttpEntity entity = response.getEntity(); + + assertEquals("POJO-IMPLtest", read(entity)); + } + + for (int i = 0; i < 10; i++) { + uri = new URIBuilder(getEndpoint()). + setPath(path). + build(); + + httpget = new HttpGet(uri); + + try (CloseableHttpResponse response = httpclient.execute(httpget, httpContext)) { + HttpEntity entity = response.getEntity(); + + assertEquals("", read(entity)); + } + } + + uri = new URIBuilder(getEndpoint()). + setPath(path). + build(); + + httpget = new HttpGet(uri); + + try (CloseableHttpResponse response = httpclient.execute(httpget)) { + HttpEntity entity = response.getEntity(); + + assertEquals("", read(entity)); + } + } + finally { + tb6Bundle.uninstall(); + tb2Bundle.uninstall(); } } @@ -143,7 +208,7 @@ public class HttpTestCase extends Abstra } private RequestInfoDTO waitFor(String path) throws InterruptedException { - return waitFor(path, 10); + return waitFor(path, 20); } private RequestInfoDTO waitFor(String path, int intervals) throws InterruptedException { Copied: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BarServlet.java (from r1807639, aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BeanServlet.java) URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BarServlet.java?p2=aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BarServlet.java&p1=aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BeanServlet.java&r1=1807639&r2=1807650&rev=1807650&view=diff ============================================================================== --- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BeanServlet.java (original) +++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BarServlet.java Thu Sep 7 21:07:30 2017 @@ -30,13 +30,13 @@ import org.osgi.service.http.whiteboard. @Component( property = { - HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_NAME + "=foo", - HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN + "=/foo" + HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_NAME + "=bar", + HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN + "=/bar" }, service = Servlet.class, serviceScope = ServiceScope.SINGLETON ) -public class BeanServlet extends HttpServlet { +public class BarServlet extends HttpServlet { private static final long serialVersionUID = 1L; @@ -47,24 +47,20 @@ public class BeanServlet extends HttpSer String name = request.getParameter("name"); - response.setContentType("text/plain"); + if (name != null) { + requestData.setData(name); + } - PrintWriter writer = response.getWriter(); + response.setContentType("text/plain"); - if (!sessionBean.hasData() && (name == null)) { - } - else { - if (name != null) { - sessionBean.setData(name); + try (PrintWriter writer = response.getWriter()) { + if (requestData.hasData()) { + writer.print(requestData.getData()); } - - writer.print(sessionBean.getData()); } - - writer.close(); } @Inject - SessionBean sessionBean; + RequestData requestData; } Copied: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/FooServlet.java (from r1807639, aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BeanServlet.java) URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/FooServlet.java?p2=aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/FooServlet.java&p1=aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BeanServlet.java&r1=1807639&r2=1807650&rev=1807650&view=diff ============================================================================== --- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BeanServlet.java (original) +++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/FooServlet.java Thu Sep 7 21:07:30 2017 @@ -36,7 +36,7 @@ import org.osgi.service.http.whiteboard. service = Servlet.class, serviceScope = ServiceScope.SINGLETON ) -public class BeanServlet extends HttpServlet { +public class FooServlet extends HttpServlet { private static final long serialVersionUID = 1L; @@ -47,24 +47,20 @@ public class BeanServlet extends HttpSer String name = request.getParameter("name"); - response.setContentType("text/plain"); + if (name != null) { + sessionData.setData(name); + } - PrintWriter writer = response.getWriter(); + response.setContentType("text/plain"); - if (!sessionBean.hasData() && (name == null)) { - } - else { - if (name != null) { - sessionBean.setData(name); + try (PrintWriter writer = response.getWriter()) { + if (sessionData.hasData()) { + writer.print(sessionData.getData()); } - - writer.print(sessionBean.getData()); } - - writer.close(); } @Inject - SessionBean sessionBean; + SessionData sessionData; } Added: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/RequestData.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/RequestData.java?rev=1807650&view=auto ============================================================================== --- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/RequestData.java (added) +++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/RequestData.java Thu Sep 7 21:07:30 2017 @@ -0,0 +1,33 @@ +package org.apache.aries.cdi.test.tb6; + +import java.io.Serializable; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; + +import org.apache.aries.cdi.test.interfaces.Pojo; +import org.osgi.service.cdi.annotations.Reference; + +@RequestScoped +public class RequestData implements Serializable { + + public boolean hasData() { + return data != null; + } + + public String getData() { + return data; + } + + public void setData(String data) { + this.data = pojo.foo(data); + } + + private static final long serialVersionUID = 1L; + private String data; + + @Inject + @Reference + Pojo pojo; + +} Copied: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/SessionData.java (from r1807639, aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/SessionBean.java) URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/SessionData.java?p2=aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/SessionData.java&p1=aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/SessionBean.java&r1=1807639&r2=1807650&rev=1807650&view=diff ============================================================================== --- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/SessionBean.java (original) +++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/SessionData.java Thu Sep 7 21:07:30 2017 @@ -21,7 +21,7 @@ import javax.inject.Named; @Named @SessionScoped -public class SessionBean implements Serializable { +public class SessionData implements Serializable { public boolean hasData() { return data != null;
