[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