[jboss-cvs] jboss-seam/src/main/org/jboss/seam/servlet ...
Shane Bryzak
Shane_Bryzak at symantec.com
Thu Feb 8 18:43:22 EST 2007
User: sbryzak2
Date: 07/02/08 18:43:22
Modified: src/main/org/jboss/seam/servlet MultipartFilter.java
SeamExceptionFilter.java SeamFilter.java
SeamRedirectFilter.java SeamServletFilter.java
package-info.java
Log:
JBSEAM-790
Revision Changes Path
1.2 +1 -1 jboss-seam/src/main/org/jboss/seam/servlet/MultipartFilter.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: MultipartFilter.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/servlet/MultipartFilter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- MultipartFilter.java 8 Feb 2007 16:13:50 -0000 1.1
+++ MultipartFilter.java 8 Feb 2007 23:43:22 -0000 1.2
@@ -21,7 +21,7 @@
@Startup
@Scope(APPLICATION)
- at Name("org.jboss.seam.filter.multipartFilter")
+ at Name("org.jboss.seam.servlet.multipartFilter")
@Install(precedence = BUILT_IN)
@Intercept(NEVER)
public class MultipartFilter extends SeamFilter
1.26 +131 -126 jboss-seam/src/main/org/jboss/seam/servlet/SeamExceptionFilter.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SeamExceptionFilter.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/servlet/SeamExceptionFilter.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- SeamExceptionFilter.java 7 Feb 2007 21:17:24 -0000 1.25
+++ SeamExceptionFilter.java 8 Feb 2007 23:43:22 -0000 1.26
@@ -5,16 +5,21 @@
* See terms of license at gnu.org.
*/
package org.jboss.seam.servlet;
-
+import static org.jboss.seam.InterceptionType.NEVER;
+import static org.jboss.seam.ScopeType.APPLICATION;
+import static org.jboss.seam.annotations.Install.BUILT_IN;
import java.io.IOException;
-
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-
+import org.jboss.seam.annotations.Install;
+import org.jboss.seam.annotations.Intercept;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.Startup;
import org.jboss.seam.contexts.Lifecycle;
import org.jboss.seam.core.Exceptions;
import org.jboss.seam.log.LogProvider;
@@ -23,18 +28,22 @@
import org.jboss.seam.mock.MockExternalContext;
import org.jboss.seam.mock.MockFacesContext;
import org.jboss.seam.util.Transactions;
-
/**
* As a last line of defence, rollback uncommitted transactions
* at the very end of the request.
*
* @author Gavin King
*/
+ at Startup
+ at Scope(APPLICATION)
+ at Name("org.jboss.seam.servlet.exceptionFilter")
+ at Install(precedence = BUILT_IN)
+ at Intercept(NEVER)
public class SeamExceptionFilter extends SeamFilter
{
private static final LogProvider log = Logging.getLogProvider(SeamExceptionFilter.class);
-
+ @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
@@ -63,7 +72,6 @@
Lifecycle.setPhaseId(null);
}
}
-
private void endWebRequestAfterException(HttpServletRequest request, HttpServletResponse response, Exception e)
throws ServletException, IOException
{
@@ -102,12 +110,10 @@
}
}
}
-
private MockFacesContext createFacesContext(HttpServletRequest request, HttpServletResponse response)
{
return new MockFacesContext( new MockExternalContext(getServletContext(), request, response), new MockApplication() );
}
-
private void rollbackTransactionIfNecessary()
{
try {
@@ -122,5 +128,4 @@
log.error("could not roll back transaction", te);
}
}
-
}
1.3 +31 -30 jboss-seam/src/main/org/jboss/seam/servlet/SeamFilter.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SeamFilter.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/servlet/SeamFilter.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- SeamFilter.java 8 Feb 2007 16:13:50 -0000 1.2
+++ SeamFilter.java 8 Feb 2007 23:43:22 -0000 1.3
@@ -23,37 +23,30 @@
private Set<Filter> filters = new HashSet<Filter>();
+ /**
+ * By default the filter is enabled
+ */
private boolean disabled = false;
- private String urlPattern = null;
+
+ /**
+ * By default match all requests
+ */
+ private String urlPattern = "/*";
private class FilterChainImpl implements FilterChain
{
+ private FilterChain chain;
private Iterator<Filter> iter;
- private ServletRequest request;
- private ServletResponse response;
-
- public FilterChainImpl(Iterator<Filter> iter)
+ public FilterChainImpl(FilterChain chain, Iterator<Filter> iter)
{
+ this.chain = chain;
this.iter = iter;
}
- public ServletRequest getRequest()
- {
- return request;
- }
-
- public ServletResponse getResponse()
- {
- return response;
- }
-
public void doFilter(ServletRequest request, ServletResponse response)
throws IOException, ServletException
{
- this.request = request;
- this.response = response;
-
if (iter.hasNext())
{
Filter filter = iter.next();
@@ -75,6 +68,10 @@
filter.doFilter(request, response, this);
}
}
+ else
+ {
+ chain.doFilter(request, response);
+ }
}
}
@@ -87,16 +84,20 @@
throws ServletException
{
servletContext = filterConfig.getServletContext();
- initFilters();
+ initFilters(filterConfig);
}
- protected void initFilters()
+ protected void initFilters(FilterConfig filterConfig)
+ throws ServletException
{
if (getClass().equals(SeamFilter.class))
{
Context ctx = new WebApplicationContext(servletContext);
- addFilter((Filter) ctx.get(MultipartFilter.class));
+ addFilter((Filter) ctx.get(MultipartFilter.class), filterConfig);
+ addFilter((Filter) ctx.get(SeamRedirectFilter.class), filterConfig);
+ addFilter((Filter) ctx.get(SeamExceptionFilter.class), filterConfig);
+ addFilter((Filter) ctx.get(SeamServletFilter.class), filterConfig);
}
}
@@ -104,16 +105,16 @@
FilterChain chain)
throws IOException, ServletException
{
- FilterChainImpl fc = new FilterChainImpl(filters.iterator());
- fc.doFilter(request, response);
- chain.doFilter(fc.getRequest(), fc.getResponse());
+ new FilterChainImpl(chain, filters.iterator()).doFilter(request, response);
}
- protected boolean addFilter(Filter filter)
+ protected boolean addFilter(Filter filter, FilterConfig filterConfig)
+ throws ServletException
{
if (filter instanceof SeamFilter && ((SeamFilter) filter).isDisabled())
return false;
+ filter.init(filterConfig);
return filters.add(filter);
}
1.16 +101 -97 jboss-seam/src/main/org/jboss/seam/servlet/SeamRedirectFilter.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SeamRedirectFilter.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/servlet/SeamRedirectFilter.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- SeamRedirectFilter.java 4 Feb 2007 09:41:21 -0000 1.15
+++ SeamRedirectFilter.java 8 Feb 2007 23:43:22 -0000 1.16
@@ -1,7 +1,8 @@
package org.jboss.seam.servlet;
-
+import static org.jboss.seam.InterceptionType.NEVER;
+import static org.jboss.seam.ScopeType.APPLICATION;
+import static org.jboss.seam.annotations.Install.BUILT_IN;
import java.io.IOException;
-
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.FilterChain;
@@ -10,19 +11,27 @@
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
-
+import org.jboss.seam.annotations.Install;
+import org.jboss.seam.annotations.Intercept;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.Startup;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.core.Manager;
import org.jboss.seam.core.Pages;
-
/**
* Propagates the conversation context across a browser redirect
*
* @author Gavin King
*/
+ at Startup
+ at Scope(APPLICATION)
+ at Name("org.jboss.seam.servlet.redirectFilter")
+ at Install(precedence = BUILT_IN)
+ at Intercept(NEVER)
public class SeamRedirectFilter extends SeamFilter
{
-
+ @Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException
{
@@ -47,10 +56,8 @@
}
super.sendRedirect(url);
}
-
};
}
-
public static String getViewId(String url)
{
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
@@ -59,7 +66,6 @@
String contextPath = externalContext.getRequestContextPath();
return getViewId(url, pathInfo, servletPath, contextPath);
}
-
protected static String getViewId(String url, String pathInfo, String servletPath, String contextPath)
{
if (pathInfo!=null)
@@ -86,12 +92,10 @@
return null;
}
}
-
private static int getParamLoc(String url)
{
int loc = url.indexOf('?');
if (loc<0) loc = url.length();
return loc;
}
-
}
1.13 +93 -61 jboss-seam/src/main/org/jboss/seam/servlet/SeamServletFilter.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SeamServletFilter.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/servlet/SeamServletFilter.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- SeamServletFilter.java 4 Feb 2007 02:30:49 -0000 1.12
+++ SeamServletFilter.java 8 Feb 2007 23:43:22 -0000 1.13
@@ -1,7 +1,8 @@
package org.jboss.seam.servlet;
-
+import static org.jboss.seam.InterceptionType.NEVER;
+import static org.jboss.seam.ScopeType.APPLICATION;
+import static org.jboss.seam.annotations.Install.BUILT_IN;
import java.io.IOException;
-
import javax.faces.event.PhaseId;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
@@ -9,25 +10,57 @@
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
-
+import org.jboss.seam.annotations.Install;
+import org.jboss.seam.annotations.Intercept;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.Startup;
import org.jboss.seam.contexts.ContextAdaptor;
import org.jboss.seam.contexts.Lifecycle;
import org.jboss.seam.core.Manager;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
-
/**
- * Manages the Seam contexts associated with a request
- * to any servlet.
+ * Manages the Seam contexts associated with a request to any servlet.
*
* @author Gavin King
*/
+ at Startup
+ at Scope(APPLICATION)
+ at Name("org.jboss.seam.servlet.servletFilter")
+ at Install(precedence = BUILT_IN)
+ at Intercept(NEVER)
public class SeamServletFilter extends SeamFilter
{
-
private static final LogProvider log = Logging.getLogProvider(SeamServletFilter.class);
+ private boolean explicitDisabled = false;
+
+ /**
+ * This filter is disabled by default, unless a urlPattern is set
+ */
+ public SeamServletFilter()
+ {
+ super.setDisabled(true);
+ }
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+ @Override
+ public void setUrlPattern(String urlPattern)
+ {
+ super.setUrlPattern(urlPattern);
+ if (!explicitDisabled) setDisabled(false);
+ }
+
+ @Override
+ public void setDisabled(boolean disabled)
+ {
+ super.setDisabled(disabled);
+ if (disabled) explicitDisabled = true;
+ }
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
+ throws IOException, ServletException
+ {
log.debug("beginning request");
HttpSession session = ( (HttpServletRequest) request ).getSession(true);
@@ -57,5 +90,4 @@
log.debug("ended request");
}
}
-
}
1.2 +1 -1 jboss-seam/src/main/org/jboss/seam/servlet/package-info.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: package-info.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/servlet/package-info.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- package-info.java 8 Feb 2007 16:13:50 -0000 1.1
+++ package-info.java 8 Feb 2007 23:43:22 -0000 1.2
@@ -1,4 +1,4 @@
- at Namespace(value="http://jboss.com/products/seam/filter", prefix="org.jboss.seam.filter")
+ at Namespace(value="http://jboss.com/products/seam/servlet", prefix="org.jboss.seam.servlet")
package org.jboss.seam.servlet;
import org.jboss.seam.annotations.*;
More information about the jboss-cvs-commits
mailing list