[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...
Gavin King
gavin.king at jboss.com
Tue Feb 13 01:50:44 EST 2007
User: gavin
Date: 07/02/13 01:50:44
Modified: src/main/org/jboss/seam/core Manager.java Pages.java
Log:
JBSEAM-837 login-required, login-view-id
Revision Changes Path
1.144 +1 -43 jboss-seam/src/main/org/jboss/seam/core/Manager.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Manager.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Manager.java,v
retrieving revision 1.143
retrieving revision 1.144
diff -u -b -r1.143 -r1.144
--- Manager.java 13 Feb 2007 06:09:08 -0000 1.143
+++ Manager.java 13 Feb 2007 06:50:44 -0000 1.144
@@ -19,7 +19,6 @@
import java.util.Map;
import java.util.StringTokenizer;
-import javax.faces.application.FacesMessage;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseId;
@@ -43,7 +42,7 @@
*
* @author Gavin King
* @author <a href="mailto:theute at jboss.org">Thomas Heute</a>
- * @version $Revision: 1.143 $
+ * @version $Revision: 1.144 $
*/
@Scope(ScopeType.EVENT)
@Name("org.jboss.seam.core.manager")
@@ -1086,47 +1085,6 @@
this.conversationIsLongRunningParameter = conversationIdLongRunning;
}
- public void redirectToNoConversationView()
- {
- noConversation();
-
- //stuff from jPDL takes precedence
- org.jboss.seam.core.FacesPage facesPage = org.jboss.seam.core.FacesPage.instance();
- String pageflowName = facesPage.getPageflowName();
- String pageflowNodeName = facesPage.getPageflowNodeName();
-
- String noConversationViewId = null;
- if (pageflowName==null || pageflowNodeName==null)
- {
- String viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
- Pages pages = Pages.instance();
- if (pages!=null) //for tests
- {
- noConversationViewId = pages.getNoConversationViewId(viewId);
- }
- }
- else
- {
- noConversationViewId = Pageflow.instance().getNoConversationViewId(pageflowName, pageflowNodeName);
- }
-
- if (noConversationViewId!=null)
- {
- redirect( noConversationViewId );
- }
- }
-
- protected void noConversation()
- {
- Events.instance().raiseEvent("org.jboss.seam.noConversation");
-
- FacesMessages.instance().addFromResourceBundleOrDefault(
- FacesMessage.SEVERITY_WARN,
- "org.jboss.seam.NoConversation",
- "The conversation ended, timed out or was processing another request"
- );
- }
-
public boolean isUpdateModelValuesCalled()
{
return updateModelValuesCalled;
1.84 +82 -1 jboss-seam/src/main/org/jboss/seam/core/Pages.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Pages.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Pages.java,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -b -r1.83 -r1.84
--- Pages.java 11 Feb 2007 00:42:13 -0000 1.83
+++ Pages.java 13 Feb 2007 06:50:44 -0000 1.84
@@ -42,6 +42,7 @@
import org.jboss.seam.pages.RedirectNavigationHandler;
import org.jboss.seam.pages.RenderNavigationHandler;
import org.jboss.seam.pages.Output;
+import org.jboss.seam.security.Identity;
import org.jboss.seam.util.Parameters;
import org.jboss.seam.util.Resources;
import org.jboss.seam.util.Strings;
@@ -63,6 +64,7 @@
private Map<String, Page> pagesByViewId = Collections.synchronizedMap( new HashMap<String, Page>() );
private Map<String, List<Page>> pageStacksByViewId = Collections.synchronizedMap( new HashMap<String, List<Page>>() );
private String noConversationViewId;
+ private String loginViewId;
private SortedSet<String> wildcardViewIds = new TreeSet<String>(
new Comparator<String>() {
@@ -234,7 +236,12 @@
{
if ( page.isConversationRequired() && !Manager.instance().isLongRunningConversation() )
{
- Manager.instance().redirectToNoConversationView();
+ redirectToNoConversationView();
+ return result;
+ }
+ else if ( page.isLoginRequired() && !Identity.instance().isLoggedIn() )
+ {
+ redirectToLoginView();
return result;
}
else
@@ -248,10 +255,71 @@
result = callAction(facesContext) || result;
return result;
}
+
+ public void redirectToLoginView()
+ {
+ notLoggedIn();
+
+ String noConversationViewId = getLoginViewId();
+ if (noConversationViewId!=null)
+ {
+ Manager.instance().redirect(noConversationViewId);
+ }
+ }
+
+ public void redirectToNoConversationView()
+ {
+ noConversation();
+
+ //stuff from jPDL takes precedence
+ org.jboss.seam.core.FacesPage facesPage = org.jboss.seam.core.FacesPage.instance();
+ String pageflowName = facesPage.getPageflowName();
+ String pageflowNodeName = facesPage.getPageflowNodeName();
+
+ String noConversationViewId = null;
+ if (pageflowName==null || pageflowNodeName==null)
+ {
+ String viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
+ noConversationViewId = getNoConversationViewId(viewId);
+ }
+ else
+ {
+ noConversationViewId = Pageflow.instance().getNoConversationViewId(pageflowName, pageflowNodeName);
+ }
+
+ if (noConversationViewId!=null)
+ {
+ Manager.instance().redirect(noConversationViewId);
+ }
+ }
+
+ protected void noConversation()
+ {
+ Events.instance().raiseEvent("org.jboss.seam.noConversation");
+
+ FacesMessages.instance().addFromResourceBundleOrDefault(
+ FacesMessage.SEVERITY_WARN,
+ "org.jboss.seam.NoConversation",
+ "The conversation ended, timed out or was processing another request"
+ );
+ }
+
+ protected void notLoggedIn()
+ {
+ Events.instance().raiseEvent("org.jboss.seam.notLoggedIn");
+
+ FacesMessages.instance().addFromResourceBundleOrDefault(
+ FacesMessage.SEVERITY_WARN,
+ "org.jboss.seam.NotLoggedIn",
+ "Please log in first"
+ );
+ }
+
public static String toString(Object returnValue)
{
return returnValue == null ? null : returnValue.toString();
}
+
/**
* Call the JSF navigation handler
*/
@@ -581,6 +649,10 @@
{
noConversationViewId = root.attributeValue("no-conversation-view-id");
}
+ if (loginViewId==null) //let the setting in components.xml override the pages.xml
+ {
+ loginViewId = root.attributeValue("login-view-id");
+ }
List<Element> elements = root.elements("page");
for (Element page: elements)
{
@@ -670,6 +742,7 @@
page.setNoConversationViewId( element.attributeValue("no-conversation-view-id") );
page.setConversationRequired( "true".equals( element.attributeValue("conversation-required") ) );
+ page.setLoginRequired( "true".equals( element.attributeValue("login-required") ) );
Action action = parseAction(element, "action");
if (action!=null) page.getActions().add(action);
@@ -893,4 +966,12 @@
}
}
+ public String getLoginViewId()
+ {
+ return loginViewId;
+ }
+ public void setLoginViewId(String loginViewId)
+ {
+ this.loginViewId = loginViewId;
+ }
}
More information about the jboss-cvs-commits
mailing list