Skip to content

Commit 2e98ec2

Browse files
author
Reza Rahman
committed
Servlet example working.
1 parent 538260c commit 2e98ec2

8 files changed

Lines changed: 146 additions & 82 deletions

File tree

actionbazaar/pom.xml

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@
2222
<scope>import</scope>
2323
<type>pom</type>
2424
</dependency>
25+
<dependency>
26+
<groupId>org.jboss.shrinkwrap.resolver</groupId>
27+
<artifactId>shrinkwrap-resolver-bom</artifactId>
28+
<version>2.1.1</version>
29+
<type>pom</type>
30+
<scope>import</scope>
31+
</dependency>
2532
</dependencies>
2633
</dependencyManagement>
2734
<dependencies>
@@ -31,6 +38,12 @@
3138
<version>7.0</version>
3239
<scope>provided</scope>
3340
</dependency>
41+
<dependency>
42+
<groupId>org.glassfish.jersey.media</groupId>
43+
<artifactId>jersey-media-json-processing</artifactId>
44+
<version>2.5.1</version>
45+
<scope>compile</scope>
46+
</dependency>
3447
<dependency>
3548
<groupId>junit</groupId>
3649
<artifactId>junit</artifactId>
@@ -42,6 +55,12 @@
4255
<artifactId>arquillian-junit-container</artifactId>
4356
<scope>test</scope>
4457
</dependency>
58+
<dependency>
59+
<groupId>org.jboss.shrinkwrap.resolver</groupId>
60+
<artifactId>shrinkwrap-resolver-depchain</artifactId>
61+
<type>pom</type>
62+
<scope>test</scope>
63+
</dependency>
4564
<dependency>
4665
<groupId>org.jboss.arquillian.container</groupId>
4766
<artifactId>arquillian-wls-remote-12.1</artifactId>
@@ -96,7 +115,7 @@
96115
</dependency>
97116
</dependencies>
98117
<build>
99-
<finalName>acme-bank</finalName>
118+
<finalName>actionbazaar</finalName>
100119
<testResources>
101120
<testResource>
102121
<directory>src/test/resources</directory>
@@ -114,23 +133,23 @@
114133
<target>1.7</target>
115134
</configuration>
116135
</plugin>
117-
<plugin>
118-
<groupId>org.apache.maven.plugins</groupId>
119-
<artifactId>maven-war-plugin</artifactId>
120-
<version>2.1.1</version>
121-
<configuration>
122-
<failOnMissingWebXml>false</failOnMissingWebXml>
123-
<!-- <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors> -->
124-
<!-- <warName>acme-bank</warName> -->
125-
</configuration>
126-
</plugin>
127-
<plugin>
128-
<artifactId>maven-surefire-plugin</artifactId>
129-
<version>2.15</version>
130-
<configuration>
131-
<skipTests>true</skipTests>
132-
</configuration>
133-
</plugin>
136+
<plugin>
137+
<groupId>org.apache.maven.plugins</groupId>
138+
<artifactId>maven-war-plugin</artifactId>
139+
<version>2.1.1</version>
140+
<configuration>
141+
<failOnMissingWebXml>false</failOnMissingWebXml>
142+
<!-- <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors> -->
143+
<!-- <warName>actionbazaar</warName> -->
144+
</configuration>
145+
</plugin>
146+
<plugin>
147+
<artifactId>maven-surefire-plugin</artifactId>
148+
<version>2.15</version>
149+
<configuration>
150+
<skipTests>true</skipTests>
151+
</configuration>
152+
</plugin>
134153
</plugins>
135154
</build>
136155
</project>

actionbazaar/src/main/java/com/actionbazaar/interfaces/web/AlertServlet.java

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import java.io.IOException;
44
import java.io.PrintWriter;
55

6+
import javax.json.Json;
7+
import javax.json.stream.JsonGenerator;
68
import javax.servlet.ServletException;
79
import javax.servlet.ServletRequest;
810
import javax.servlet.ServletResponse;
@@ -16,26 +18,33 @@ public class AlertServlet extends HttpServlet {
1618
@Override
1719
public void service(ServletRequest request, ServletResponse response)
1820
throws IOException, ServletException {
19-
response.setContentType("text/xml");
21+
22+
response.setContentType("application/json");
2023

2124
PrintWriter out = response.getWriter();
2225

23-
out.println("<alerts>");
24-
out.println("<greeting>" + "Welcome, will sending available alerts"
25-
+ "</greeting>");
26-
2726
long userId = Long.parseLong(request.getParameter("user_id"));
2827

29-
String[] alerts = { "Fraud alert!", "Outbid alert!",
30-
"Item available alert!", "Fees due alert!",
31-
"Payment failure alert!" };
32-
for (int i = 0; i < alerts.length; i++) {
33-
out.println("<alert><user>" + userId + "</user><text>" + alerts[i]
34-
+ "</text></alert>");
28+
try (JsonGenerator generator = Json.createGenerator(out)) {
29+
generator
30+
.writeStartObject()
31+
.write("greeting", "Welcome, will sending available alerts")
32+
.writeStartArray("alerts");
33+
34+
String[] alerts = { "Fraud alert!", "Outbid alert!",
35+
"Item available alert!", "Fees due alert!",
36+
"Payment failure alert!" };
37+
38+
for (int i = 0; i < alerts.length; i++) {
39+
generator.writeStartObject().write("user", userId)
40+
.write("text", alerts[i]).writeEnd();
41+
}
42+
43+
generator
44+
.writeEnd()
45+
.write("goodbye", "No more alerts for now, timing out")
46+
.writeEnd()
47+
.close();
3548
}
36-
37-
out.println("<goodbye>" + "No more alerts for now, timing out"
38-
+ "</goodbye>");
39-
out.println("</alerts>");
4049
}
4150
}
Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<persistence version="2.0"
3-
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4-
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
5-
<persistence-unit name="action-bazaar-db"
6-
transaction-type="JTA">
2+
<persistence version="2.1"
3+
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
5+
<persistence-unit name="action-bazaar-unit">
76
<jta-data-source>jdbc/ActionBazaarDB</jta-data-source>
8-
<validation-mode>AUTO</validation-mode>
97
<properties>
10-
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
11-
<property name="eclipselink.logging.level" value="INFO" />
8+
<property name="javax.persistence.schema-generation.database.action"
9+
value="drop-and-create" />
10+
<property name="eclipselink.logging.level" value="FINEST" />
1211
</properties>
1312
</persistence-unit>
1413
</persistence>

actionbazaar/src/main/webapp/WEB-INF/web.xml

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
3-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4-
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
2+
<web-app>
53
<context-param>
64
<param-name>javax.faces.PROJECT_STAGE</param-name>
75
<param-value>Development</param-value>
@@ -15,19 +13,6 @@
1513
<servlet-name>Faces Servlet</servlet-name>
1614
<url-pattern>*.jsf</url-pattern>
1715
</servlet-mapping>
18-
<servlet>
19-
<servlet-name>Jersey Web Application</servlet-name>
20-
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
21-
<init-param>
22-
<param-name>com.sun.jersey.config.property.packages</param-name>
23-
<param-value>com.actionbazaar.service</param-value>
24-
</init-param>
25-
<load-on-startup>1</load-on-startup>
26-
</servlet>
27-
<servlet-mapping>
28-
<servlet-name>Jersey Web Application</servlet-name>
29-
<url-pattern>/rest/*</url-pattern>
30-
</servlet-mapping>
3116
<session-config>
3217
<session-timeout>30</session-timeout>
3318
</session-config>
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.actionbazaar.interfaces.web;
2+
3+
import static org.junit.Assert.assertEquals;
4+
5+
import java.io.File;
6+
7+
import javax.json.JsonObject;
8+
import javax.ws.rs.client.Client;
9+
import javax.ws.rs.client.ClientBuilder;
10+
11+
import org.jboss.arquillian.container.test.api.Deployment;
12+
import org.jboss.arquillian.junit.Arquillian;
13+
import org.jboss.shrinkwrap.api.ShrinkWrap;
14+
import org.jboss.shrinkwrap.api.spec.WebArchive;
15+
import org.jboss.shrinkwrap.resolver.api.maven.Maven;
16+
import org.junit.Test;
17+
import org.junit.runner.RunWith;
18+
19+
@RunWith(Arquillian.class)
20+
public class AlertServletTest {
21+
22+
@Deployment
23+
public static WebArchive createDeployment() {
24+
WebArchive archive = ShrinkWrap
25+
.create(WebArchive.class, "actionbazaar-test.war")
26+
.addClass(AlertServlet.class)
27+
.addAsWebInfResource("test-weblogic.xml", "weblogic.xml");
28+
File[] files = Maven
29+
.resolver()
30+
.resolve(
31+
"org.glassfish.jersey.media:jersey-media-json-processing:2.5.1")
32+
.withTransitivity().asFile();
33+
archive.addAsLibraries(files);
34+
35+
return archive;
36+
}
37+
38+
@Test
39+
public void testGetAlerts() {
40+
Client client = ClientBuilder.newClient();
41+
42+
// Get account balance
43+
JsonObject response = client
44+
.target("http://localhost:7001/actionbazaar-test/alerts")
45+
.queryParam("user_id", "1111").request("application/json")
46+
.get(JsonObject.class);
47+
assertEquals(5, response.getJsonArray("alerts").size());
48+
}
49+
}
Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1-
<?xml version="1.0" encoding="UTF-8"?>
2-
<arquillian xmlns="http://jboss.org/schema/arquillian"
3-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4-
xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
5-
<container qualifier="glassfish" default="true">
6-
<configuration>
7-
<property name="resourcesXml">
8-
src/test/resources/sun-resources.xml
9-
</property>
10-
<property name="bindHttpPort">7070</property>
11-
</configuration>
12-
</container>
13-
</arquillian>
1+
<?xml version="1.0"?>
2+
<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xmlns="http://jboss.org/schema/arquillian"
4+
xsi:schemaLocation="http://jboss.org/schema/arquillian
5+
http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
6+
<engine>
7+
<property name="deploymentExportPath">target/</property>
8+
</engine>
9+
<container qualifier="weblogic" default="true">
10+
<configuration>
11+
<property name="adminUrl">t3://localhost:7001</property>
12+
<property name="adminUserName">weblogic</property>
13+
<property name="adminPassword">welcome123</property>
14+
<property name="wlsHome">C:\Oracle\Middleware\Oracle_Home\wlserver</property>
15+
<property name="target">AdminServer</property>
16+
</configuration>
17+
</container>
18+
</arquillian>

actionbazaar/src/test/resources/sun-resources.xml

Lines changed: 0 additions & 12 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
2+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app
4+
http://xmlns.oracle.com/weblogic/weblogic-web-app/1.7/weblogic-web-app.xsd">
5+
<wls:library-ref>
6+
<wls:library-name>jax-rs</wls:library-name>
7+
<wls:specification-version>2.0</wls:specification-version>
8+
<wls:exact-match>false</wls:exact-match>
9+
</wls:library-ref>
10+
</wls:weblogic-web-app>

0 commit comments

Comments
 (0)