Author: jgallimore
Date: Mon Apr 18 16:17:57 2011
New Revision: 1094639
URL: http://svn.apache.org/viewvc?rev=1094639&view=rev
Log:
Refactor the moviefun application so the JSP view is a little more MVC
Added:
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/moviefun.jsp
Removed:
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/moviefun.jsp
Modified:
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/context.xml
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/ActionServlet.java
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/MoviesImpl.java
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/web.xml
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/index.jsp
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/setup.jsp
Modified:
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/context.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/context.xml?rev=1094639&r1=1094638&r2=1094639&view=diff
==============================================================================
---
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/context.xml
(original)
+++
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/context.xml
Mon Apr 18 16:17:57 2011
@@ -17,5 +17,5 @@
limitations under the License.
-->
<Context>
- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1|0:0:0:0:0:0:0:1(%.*)?" deny=""/>
-</Context>
\ No newline at end of file
+ <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1|0:0:0:0:0:0:0:1(%.*)?|^::1$" deny=""/>
+</Context>
Modified:
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/ActionServlet.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/ActionServlet.java?rev=1094639&r1=1094638&r2=1094639&view=diff
==============================================================================
---
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/ActionServlet.java
(original)
+++
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/ActionServlet.java
Mon Apr 18 16:17:57 2011
@@ -16,8 +16,17 @@
*/
package org.superbiz.moviefun;
-import javax.ejb.EJB;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ListIterator;
+
+import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import javax.ejb.EJB;
/**
* @version $Revision$ $Date$
@@ -25,7 +34,113 @@ import javax.servlet.http.HttpServlet;
public class ActionServlet extends HttpServlet {
@EJB(name = "movies")
- private Movies movies;
+ private Movies moviesBean;
+
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
+ process(request, response);
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
+ process(request, response);
+ }
+
+ private void process(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
+ HttpSession session = request.getSession();
+
+ List<Movie> movies = null;
+ ListIterator<Movie> listIterator = null;
+ int display = 5;
+
+ String action = request.getParameter("action");
+
+
+ if ("Add".equals(action)) {
+
+ String title = request.getParameter("title");
+ String director = request.getParameter("director");
+ String genre = request.getParameter("genre");
+ int rating = Integer.parseInt(request.getParameter("rating"));
+ int year = Integer.parseInt(request.getParameter("year"));
+
+ Movie movie = new Movie(title, director, genre, rating, year);
+
+ moviesBean.addMovie(movie);
+
+ } else if ("Remove".equals(action)) {
+
+ String[] ids = request.getParameterValues("id");
+ for (String id : ids) {
+ moviesBean.deleteMovieId(new Long(id));
+ }
+
+ } else if (">>".equals(action)) {
+
+ movies = (List) session.getAttribute("movies.collection");
+ listIterator = (ListIterator)
session.getAttribute("movies.iterator");
+
+ } else if ("<<".equals(action)) {
+
+ movies = (List) session.getAttribute("movies.collection");
+ listIterator = (ListIterator)
session.getAttribute("movies.iterator");
+ for (int i = display * 2; i > 0 && listIterator.hasPrevious();
i--) {
+ listIterator.previous(); // backup
+ }
+
+ } else if ("findByTitle".equals(action)) {
+
+ movies = moviesBean.findByTitle(request.getParameter("key"));
+
+ } else if ("findByDirector".equals(action)) {
+
+ movies = moviesBean.findByDirector(request.getParameter("key"));
+
+ } else if ("findByGenre".equals(action)) {
+
+ movies = moviesBean.findByGenre(request.getParameter("key"));
+ }
+
+ if (movies == null) {
+ try {
+ movies = moviesBean.getMovies();
+ } catch (Throwable e) {
+ // We must not have run setup yet
+ response.sendRedirect("setup.jsp");
+ return;
+ }
+ }
+
+ if (listIterator == null) {
+ listIterator = movies.listIterator();
+ }
+ session.setAttribute("movies.collection", movies);
+ session.setAttribute("movies.iterator", listIterator);
+
+ List<Movie> moviesToShow = new ArrayList<Movie>();
+
+ boolean hasPrevious = listIterator.hasPrevious();
+
+ int start = listIterator.nextIndex();
+
+ for (int i=display; i > 0 && listIterator.hasNext(); i-- ) {
+ Movie movie = (Movie) listIterator.next();
+ moviesToShow.add(movie);
+ }
+
+ boolean hasNext = listIterator.hasNext();
+
+ int end = listIterator.nextIndex();
+ request.setAttribute("movies", moviesToShow);
+ request.setAttribute("start", start);
+ request.setAttribute("end", end);
+ request.setAttribute("total", movies.size());
+ request.setAttribute("display", display);
+ request.setAttribute("hasNext", hasNext);
+ request.setAttribute("hasPrev", hasPrevious);
+
+
request.getRequestDispatcher("WEB-INF/moviefun.jsp").forward(request, response);
+ }
}
Modified:
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/MoviesImpl.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/MoviesImpl.java?rev=1094639&r1=1094638&r2=1094639&view=diff
==============================================================================
---
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/MoviesImpl.java
(original)
+++
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/MoviesImpl.java
Mon Apr 18 16:17:57 2011
@@ -68,7 +68,7 @@ public class MoviesImpl implements Movie
@Override
public void deleteMovieId(long id) {
Movie movie = entityManager.find(Movie.class, id);
- entityManager.remove(movie);
+ deleteMovie(movie);
}
@Override
Added:
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/moviefun.jsp
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/moviefun.jsp?rev=1094639&view=auto
==============================================================================
---
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/moviefun.jsp
(added)
+++
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/moviefun.jsp
Mon Apr 18 16:17:57 2011
@@ -0,0 +1,134 @@
+<%--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c' %>
+
+<html>
+<head><title>Moviefun :: Index</title>
+ <link rel="stylesheet" href="default.css" type="text/css"/>
+
+</head>
+<body>
+<p/>
+<div id="Content">
+<table>
+<tr>
+<td>
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr class="topBar">
+ <td align="left" width="85%">
+ <span class="topBarDiv">Mini-Movie Application</span>
+ </td>
+ <td align="right" valign="middle" width="1%" nowrap>
+ <form method="POST" action="moviefun" name="findMovie"
style="padding: 1px; margin: 1px">
+ <select name="action">
+ <option value="findByTitle">Title</option>
+ <option value="findByDirector">Director</option>
+ <option value="findByGenre">Genre</option>
+ </select>
+ <input type="text" name="key" size="20"/>
+ <input type="submit" value="Search"/>
+ </form>
+ </td>
+ </tr>
+ </table>
+
+</td>
+</tr>
+<tr>
+<td>
+ <div class="basicPanelContainer" style="width: 100%">
+
+ <div class="basicPanelTitle">Movies</div>
+
+ <div class="basicPanelBody">
+ <form method="POST" action="moviefun" name="listMovies"
style="padding: 1px; margin: 1px">
+ <table class="tableview" width="100%" cellspacing="0"
cellpadding="0" style="padding: 5px">
+ <tr>
+ <th>Title</th>
+ <th>Director</th>
+ <th>Genre</th>
+ <th>Rating</th>
+ <th>Year</th>
+ <th> </th>
+ </tr>
+ <c:forEach var="movie" items="${movies}">
+ <tr>
+ <td width="200"><c:out value="${movie.title}" /></td>
+ <td width="120"><c:out value="${movie.director}" /></td>
+ <td width="90"><c:out value="${movie.genre}" /></td>
+ <td width="50"><c:out value="${movie.rating}" /></td>
+ <td width="50"><c:out value="${movie.year}" /></td>
+ <td><input type="checkbox" name="id" value="<c:out
value="${movie.id}" />"></td>
+ </tr>
+
+ </c:forEach>
+ </table>
+ <table width="100%" cellspacing="0" cellpadding="0"
style="padding: 5px">
+ <tr>
+ <td>
+ <c:if test="${hasPrev}"><input type="submit" name="action"
value="<<"/></c:if>
+
+ <c:out value="${start+1}" /> - <c:out value="${end}" /> of
<c:out value="${total}" />
+
+ <c:if test="${hasNext}"><input type="submit" name="action"
value=">>"/></c:if>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ </div>
+</td>
+</tr>
+<tr>
+<td>
+ <div class="basicPanelContainer" style="width: 100%">
+ <div class="basicPanelTitle">Add</div>
+ <div class="basicPanelBody">
+ <form method="POST" action="moviefun" name="addMovie"
style="padding: 1px; margin: 1px">
+ <table width="100%" cellspacing="0" cellpadding="0"
style="padding: 0px">
+ <tr>
+ <td width="200"><input type="text" name="title" size="29"/></td>
+ <td width="120"><input type="text" name="director" size="17"/></td>
+ <td width="90"><input type="text" name="genre" size="14"/></td>
+ <td width="50"><input type="text" name="rating" size="7"/></td>
+ <td width="50"><input type="text" name="year" size="4"/></td>
+ <td><input type="submit" name="action" value="Add"/></td>
+ </tr>
+ </table>
+ </form>
+
+ </div>
+ </div>
+</td>
+</tr>
+</table>
+
+ <div class="bottomshadow"></div>
+
+ <div id="poweredby" class="smalltext">
+ Powered by
+ <a href="http://tomcat.apache.org" class="smalltext">Apache Tomcat</a>
and
+ <a href="http://openejb.apache.org" class="smalltext">Apache
OpenEJB</a>.
+ <br/>
+ </div>
+
+
+</div>
+</body>
+</html>
\ No newline at end of file
Modified:
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/web.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/web.xml?rev=1094639&r1=1094638&r2=1094639&view=diff
==============================================================================
---
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/web.xml
(original)
+++
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/web.xml
Mon Apr 18 16:17:57 2011
@@ -16,26 +16,29 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
- <context-param>
- <param-name>javax.faces.PROJECT_STAGE</param-name>
- <param-value>Development</param-value>
- </context-param>
- <servlet>
- <servlet-name>ActionServlet</servlet-name>
- <servlet-class>org.superbiz.moviefun.ActionServlet</servlet-class>
- </servlet>
- <servlet>
- <servlet-name>Faces Servlet</servlet-name>
- <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>Faces Servlet</servlet-name>
- <url-pattern>/faces/*</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+ <context-param>
+ <param-name>javax.faces.PROJECT_STAGE</param-name>
+ <param-value>Development</param-value>
+ </context-param>
+ <servlet>
+ <servlet-name>ActionServlet</servlet-name>
+ <servlet-class>org.superbiz.moviefun.ActionServlet</servlet-class>
+ </servlet>
+ <servlet>
+ <servlet-name>Faces Servlet</servlet-name>
+ <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>Faces Servlet</servlet-name>
+ <url-pattern>/faces/*</url-pattern>
+ </servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>ActionServlet</servlet-name>
+ <url-pattern>/moviefun/*</url-pattern>
+ </servlet-mapping>
+ <welcome-file-list>
+ <welcome-file>index.jsp</welcome-file>
+ </welcome-file-list>
</web-app>
Modified:
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/index.jsp
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/index.jsp?rev=1094639&r1=1094638&r2=1094639&view=diff
==============================================================================
---
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/index.jsp
(original)
+++
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/index.jsp
Mon Apr 18 16:17:57 2011
@@ -23,11 +23,10 @@
<p/>
<div id="Content">
- <p>Please select one of the following links:</p>
- <a href="setup.jsp">Setup</a> - Sets up the application with some sample
data<br/>
- <a href="moviefun.jsp">JSP</a> - Use the JSP version of the
application<br/>
- <a href="faces/index.xhtml">JSF</a> - Use the JSF 2 version of the
application<br/>
-
+ <p>Please select one of the following links:</p>
+ <a href="setup.jsp">Setup</a> - Sets up the application with some
sample data<br />
+ <a href="moviefun">JSP</a> - Use the JSP version of the application<br
/>
+ <a href="faces/index.xhtml">JSF</a> - Use the JSF 2 version of the
application<br />
<div class="bottomshadow"></div>
Modified:
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/setup.jsp
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/setup.jsp?rev=1094639&r1=1094638&r2=1094639&view=diff
==============================================================================
---
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/setup.jsp
(original)
+++
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/setup.jsp
Mon Apr 18 16:17:57 2011
@@ -62,4 +62,4 @@ Done!
</table>
<h2>Continue</h2>
-<a href="moviefun.jsp">Go to main app</a>
\ No newline at end of file
+<a href="moviefun">Go to main app</a>
\ No newline at end of file