[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...
Gavin King
gavin.king at jboss.com
Wed Jun 13 17:07:33 EDT 2007
User: gavin
Date: 07/06/13 17:07:33
Modified: src/main/org/jboss/seam/core IsUserInRole.java
LocaleSelector.java UserPrincipal.java
Added: src/main/org/jboss/seam/core
ConversationPropagation.java ServletContexts.java
Log:
refactor
Revision Changes Path
1.7 +1 -2 jboss-seam/src/main/org/jboss/seam/core/IsUserInRole.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: IsUserInRole.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/IsUserInRole.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- IsUserInRole.java 24 Nov 2006 23:15:17 -0000 1.6
+++ IsUserInRole.java 13 Jun 2007 21:07:33 -0000 1.7
@@ -17,7 +17,6 @@
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Unwrap;
-import org.jboss.seam.contexts.Lifecycle;
/**
* Manager component for a map of roles assigned
@@ -55,7 +54,7 @@
return facesContext.getExternalContext().isUserInRole(role);
}
- ServletRequest servletRequest = Lifecycle.getServletRequest();
+ ServletRequest servletRequest = ServletContexts.instance().getRequest();
if ( servletRequest != null )
{
return ( (HttpServletRequest) servletRequest ).isUserInRole(role);
1.22 +1 -1 jboss-seam/src/main/org/jboss/seam/core/LocaleSelector.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: LocaleSelector.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/LocaleSelector.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- LocaleSelector.java 29 Mar 2007 16:26:46 -0000 1.21
+++ LocaleSelector.java 13 Jun 2007 21:07:33 -0000 1.22
@@ -156,7 +156,7 @@
return facesContext.getApplication().getViewHandler().calculateLocale(facesContext);
}
- ServletRequest request = Lifecycle.getServletRequest();
+ ServletRequest request = ServletContexts.instance().getRequest();
if (request!=null)
{
Locale requestLocale = ( (HttpServletRequest) request ).getLocale();
1.10 +1 -2 jboss-seam/src/main/org/jboss/seam/core/UserPrincipal.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: UserPrincipal.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/UserPrincipal.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- UserPrincipal.java 24 Nov 2006 23:15:17 -0000 1.9
+++ UserPrincipal.java 13 Jun 2007 21:07:33 -0000 1.10
@@ -17,7 +17,6 @@
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Unwrap;
import org.jboss.seam.contexts.Contexts;
-import org.jboss.seam.contexts.Lifecycle;
/**
* Manager component for the current user Principal
@@ -40,7 +39,7 @@
return facesContext.getExternalContext().getUserPrincipal();
}
- ServletRequest servletRequest = Lifecycle.getServletRequest();
+ ServletRequest servletRequest = ServletContexts.instance().getRequest();
if ( servletRequest != null )
{
return ( (HttpServletRequest) servletRequest ).getUserPrincipal();
1.1 date: 2007/06/13 21:07:33; author: gavin; state: Exp;jboss-seam/src/main/org/jboss/seam/core/ConversationPropagation.java
Index: ConversationPropagation.java
===================================================================
package org.jboss.seam.core;
import java.util.Map;
import org.jboss.seam.Component;
import org.jboss.seam.InterceptionType;
import org.jboss.seam.ScopeType;
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.contexts.Contexts;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
import org.jboss.seam.pages.Page;
@Name("conversationPropagation")
@Scope(ScopeType.EVENT)
@Intercept(InterceptionType.NEVER)
@Install(precedence=Install.BUILT_IN)
public class ConversationPropagation
{
private static final LogProvider log = Logging.getLogProvider(ConversationPropagation.class);
private String conversationId;
private String parentConversationId;
private boolean validateLongRunningConversation;
private String propagationType; //TODO: make it an enum!
/**
* Initialize the request conversation id, taking
* into account conversation propagation style, and
* any conversation id passed as a request parameter
* or in the PAGE context.
*
* @param parameters the request parameters
*/
public void restoreConversationId(Map parameters)
{
restoreNaturalConversationId(parameters);
restoreSyntheticConversationId(parameters);
restorePageContextConversationId();
propagationType = getPropagationFromRequestParameter(parameters);
handlePropagationType(parameters);
}
private void handlePropagationType(Map parameters)
{
if ( "none".equals(propagationType) )
{
conversationId = null;
parentConversationId = null;
validateLongRunningConversation = false;
}
else if ( "end".equals(propagationType) )
{
validateLongRunningConversation = false;
}
}
private void restorePageContextConversationId()
{
if ( Contexts.isPageContextActive() && isMissing(conversationId) )
{
//checkPageContext is a workaround for a bug in MySQL server-side state saving
//if it is not passed as a request parameter,
//try to get it from the page context
org.jboss.seam.core.FacesPage page = org.jboss.seam.core.FacesPage.instance();
conversationId = page.getConversationId();
parentConversationId = null;
validateLongRunningConversation = page.isConversationLongRunning();
}
else
{
log.debug("Found conversation id in request parameter: " + conversationId);
}
}
private void restoreNaturalConversationId(Map parameters)
{
//First, try to get the conversation id from the request parameter defined for the page
String viewId = Pages.getCurrentViewId();
if ( viewId!=null )
{
Page page = Pages.instance().getPage(viewId);
conversationId = page.getConversationIdParameter().getRequestConversationId(parameters);
//TODO: how about the parent conversation id?
}
}
private void restoreSyntheticConversationId(Map parameters)
{
//Next, try to get the conversation id from the globally defined request parameters
Manager manager = Manager.instance(); //TODO: move the conversationIdParameter to this class!
if ( isMissing(conversationId) )
{
conversationId = getRequestParameterValue( parameters, manager.getConversationIdParameter() );
}
if ( isMissing(parentConversationId) )
{
parentConversationId = getRequestParameterValue( parameters, manager.getParentConversationIdParameter() );
}
}
private String getPropagationFromRequestParameter(Map parameters)
{
Object type = parameters.get("conversationPropagation");
if (type==null)
{
return null;
}
else if (type instanceof String)
{
return (String) type;
}
else
{
return ( (String[]) type )[0];
}
}
private static boolean isMissing(String storedConversationId)
{
return storedConversationId==null || "".equals(storedConversationId);
}
/**
* Retrieve the conversation id from the request parameters.
*
* @param parameters the request parameters
* @return the conversation id
*/
public static String getRequestParameterValue(Map parameters, String parameterName)
{
Object object = parameters.get(parameterName);
if (object==null)
{
return null;
}
else
{
if ( object instanceof String )
{
//when it comes from JSF it is (usually?) a plain string
return (String) object;
}
else
{
//in a servlet it is a string array
String[] values = (String[]) object;
if (values.length!=1)
{
throw new IllegalArgumentException("expected exactly one value for conversationId request parameter");
}
return values[0];
}
}
}
public String getConversationId()
{
return conversationId;
}
public void setConversationId(String conversationId)
{
this.conversationId = conversationId;
}
public String getParentConversationId()
{
return parentConversationId;
}
public void setParentConversationId(String parentConversationId)
{
this.parentConversationId = parentConversationId;
}
public boolean isValidateLongRunningConversation()
{
return validateLongRunningConversation;
}
public void setValidateLongRunningConversation(boolean validateLongRunningConversation)
{
this.validateLongRunningConversation = validateLongRunningConversation;
}
public static ConversationPropagation instance()
{
if ( !Contexts.isEventContextActive() )
{
throw new IllegalStateException("No active event context");
}
return (ConversationPropagation) Component.getInstance(ConversationPropagation.class, ScopeType.EVENT);
}
public String getPropagationType()
{
return propagationType;
}
public void setPropagationType(String propagationType)
{
this.propagationType = propagationType;
}
}
1.1 date: 2007/06/13 21:07:33; author: gavin; state: Exp;jboss-seam/src/main/org/jboss/seam/core/ServletContexts.java
Index: ServletContexts.java
===================================================================
/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.seam.core;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import javax.servlet.http.HttpServletRequest;
import org.jboss.seam.Component;
import org.jboss.seam.InterceptionType;
import org.jboss.seam.ScopeType;
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.contexts.Contexts;
/**
* A Seam component that binds the HttpServletRequest object
* to the current thread.
*
* @author Gavin King
*/
@Scope(ScopeType.EVENT)
@Name("org.jboss.seam.core.httpServletRequest")
@Intercept(InterceptionType.NEVER)
@Install(precedence=BUILT_IN)
public class ServletContexts
{
private HttpServletRequest request;
public static ServletContexts instance()
{
if ( !Contexts.isEventContextActive() )
{
throw new IllegalStateException("no event context active");
}
return (ServletContexts) Component.getInstance(ServletContexts.class, ScopeType.EVENT);
}
public HttpServletRequest getRequest()
{
return request;
}
public void setRequest(HttpServletRequest request)
{
this.request = request;
}
}
More information about the jboss-cvs-commits
mailing list