[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...

Gavin King gavin.king at jboss.com
Thu Mar 8 21:14:15 EST 2007


  User: gavin   
  Date: 07/03/08 21:14:15

  Modified:    src/main/org/jboss/seam/core      Manager.java
                        Navigator.java Pages.java Redirect.java
                        ResourceBundle.java
  Log:
  fix another bug in natural conversation ids
  
  Revision  Changes    Path
  1.159     +19 -16    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.158
  retrieving revision 1.159
  diff -u -b -r1.158 -r1.159
  --- Manager.java	9 Mar 2007 00:17:51 -0000	1.158
  +++ Manager.java	9 Mar 2007 02:14:15 -0000	1.159
  @@ -45,7 +45,7 @@
    *
    * @author Gavin King
    * @author <a href="mailto:theute at jboss.org">Thomas Heute</a>
  - * @version $Revision: 1.158 $
  + * @version $Revision: 1.159 $
    */
   @Scope(ScopeType.EVENT)
   @Name("org.jboss.seam.core.manager")
  @@ -433,10 +433,10 @@
         Boolean isLongRunningConversation = null;
         
         //First, try to get the conversation id from the request parameter defined for the page
  -      FacesContext facesContext = FacesContext.getCurrentInstance();
  -      if ( facesContext!=null && facesContext.getViewRoot()!=null )
  +      String viewId = Pages.getCurrentViewId();
  +      if ( viewId!=null )
         {
  -         Page page = Pages.instance().getPage( facesContext.getViewRoot().getViewId() );
  +         Page page = Pages.instance().getPage(viewId);
            storedConversationId = page.getConversationIdParameter().getRequestConversationId(parameters);
            //isLongRunningConversation = false; //TODO: think about this further...
            isLongRunningConversation = "true".equals( getRequestParameterValue(parameters, conversationIsLongRunningParameter) );
  @@ -593,7 +593,7 @@
            boolean removeAfterRedirect = ce.isRemoveAfterRedirect() && !(
                  Init.instance().isDebug() &&
                  (FacesContext.getCurrentInstance() != null) &&
  -               "/debug.xhtml".equals( FacesContext.getCurrentInstance().getViewRoot().getViewId() )
  +               "/debug.xhtml".equals( Pages.getCurrentViewId() )
               );
            
            if (removeAfterRedirect)
  @@ -667,10 +667,12 @@
      private String generateInitialConversationId()
      {
         FacesContext facesContext = FacesContext.getCurrentInstance();
  -      if ( facesContext!=null && facesContext.getViewRoot()!=null )
  +      String viewId = Pages.getViewId(facesContext);
  +      if ( viewId!=null )
         {
  -         Page page = Pages.instance().getPage( facesContext.getViewRoot().getViewId() );      
  -         return page.getConversationIdParameter().getInitialConversationId( facesContext.getExternalContext().getRequestParameterMap() );
  +         return Pages.instance().getPage(viewId)
  +                     .getConversationIdParameter()
  +                     .getInitialConversationId( facesContext.getExternalContext().getRequestParameterMap() );
         }
         else
         {
  @@ -850,20 +852,21 @@
         beforeRedirect();
         
         FacesContext facesContext = FacesContext.getCurrentInstance();
  -      if ( viewId!=null && facesContext!=null && facesContext.getViewRoot()!=null )
  +      String currentViewId = Pages.getViewId(facesContext);
  +      if ( viewId!=null && currentViewId!=null )
         {
  -         Page currentPage = Pages.instance().getPage( facesContext.getViewRoot().getViewId() );
  -         Page targetPage = Pages.instance().getPage(viewId);         
  -         if ( isDifferentConversationId( currentPage.getConversationIdParameter(), targetPage.getConversationIdParameter() ) )
  +         ConversationIdParameter currentPage = Pages.instance().getPage(currentViewId).getConversationIdParameter();
  +         ConversationIdParameter targetPage = Pages.instance().getPage(viewId).getConversationIdParameter();
  +         if ( isDifferentConversationId(currentPage, targetPage) )
            {
  -            updateCurrentConversationId( targetPage.getConversationIdParameter().getInitialConversationId( facesContext.getExternalContext().getRequestParameterMap() ) );
  +            updateCurrentConversationId( targetPage.getConversationId() );
            }      
         }
      }
   
      private boolean isDifferentConversationId(ConversationIdParameter sp, ConversationIdParameter tp)
      {
  -      return sp.getName()!=tp.getName() && ( sp==null || !sp.getName().equals( tp.getName() ) );
  +      return sp.getName()!=tp.getName() && ( sp.getName()==null || !sp.getName().equals( tp.getName() ) );
      }
   
      /**
  @@ -1109,10 +1112,10 @@
         if (pageflowPage==null)
         {
            //handle stuff defined in pages.xml
  -         String viewId = facesContext.getViewRoot().getViewId();
            Pages pages = Pages.instance();
            if (pages!=null) //for tests
            {
  +            String viewId = Pages.getViewId(facesContext);
               org.jboss.seam.pages.Page pageEntry = pages.getPage(viewId);
               if ( pageEntry.isSwitchEnabled() )
               {
  
  
  
  1.6       +2 -2      jboss-seam/src/main/org/jboss/seam/core/Navigator.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Navigator.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Navigator.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -b -r1.5 -r1.6
  --- Navigator.java	11 Feb 2007 00:42:13 -0000	1.5
  +++ Navigator.java	9 Mar 2007 02:14:15 -0000	1.6
  @@ -39,7 +39,7 @@
      {
         if ( Strings.isEmpty(viewId) )
         {
  -         viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
  +         viewId = Pages.getCurrentViewId();
         }
         if ( log.isDebugEnabled() ) log.debug("redirecting to: " + viewId);
         Manager.instance().redirect(viewId, parameters, true);
  @@ -59,7 +59,7 @@
         }
         else
         {
  -         viewId = facesContext.getViewRoot().getViewId(); //just for the log message
  +         viewId = Pages.getViewId(facesContext); //just for the log message
         }
         if ( log.isDebugEnabled() ) log.debug("rendering: " + viewId);
         facesContext.renderResponse();
  
  
  
  1.106     +24 -7     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.105
  retrieving revision 1.106
  diff -u -b -r1.105 -r1.106
  --- Pages.java	9 Mar 2007 00:17:51 -0000	1.105
  +++ Pages.java	9 Mar 2007 02:14:15 -0000	1.106
  @@ -19,6 +19,7 @@
   import javax.faces.application.FacesMessage;
   import javax.faces.application.ViewHandler;
   import javax.faces.application.FacesMessage.Severity;
  +import javax.faces.component.UIViewRoot;
   import javax.faces.context.FacesContext;
   import javax.servlet.http.HttpServletRequest;
   
  @@ -111,7 +112,7 @@
       */
      public boolean navigate(FacesContext context, String actionExpression, String actionOutcomeValue)
      {
  -      String viewId = context.getViewRoot().getViewId();
  +      String viewId = getViewId(context);
         if (viewId!=null)
         {
            List<Page> stack = getPageStack(viewId);
  @@ -242,7 +243,7 @@
      public boolean enterPage(FacesContext facesContext)
      {
         boolean result = false;
  -      String viewId = facesContext.getViewRoot().getViewId();
  +      String viewId = getViewId(facesContext);
         
         String requestScheme = getRequestScheme(facesContext);
         if ( requestScheme!=null )
  @@ -383,7 +384,7 @@
         String noConversationViewId = null;
         if (pageflowName==null || pageflowNodeName==null)
         {
  -         String viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
  +         String viewId = Pages.getCurrentViewId();
            noConversationViewId = getNoConversationViewId(viewId);
         }
         else
  @@ -606,7 +607,7 @@
       */
      public void applyRequestParameterValues(FacesContext facesContext)
      {
  -      String viewId = facesContext.getViewRoot().getViewId();
  +      String viewId = getViewId(facesContext);
         Map<String, String[]> requestParameters = Parameters.getRequestParameters();
         for ( Page page: getPageStack(viewId) )
         {
  @@ -635,7 +636,7 @@
       */
      public void applyViewRootValues(FacesContext facesContext)
      {
  -      String viewId = facesContext.getViewRoot().getViewId();
  +      String viewId = getViewId(facesContext);
         for ( Page page: getPageStack(viewId) )
         {
            for ( Param pageParameter: page.getParameters() )
  @@ -656,7 +657,7 @@
      public Map<String, Object> getViewRootValues(FacesContext facesContext)
      {
         Map<String, Object> parameters = new HashMap<String, Object>();
  -      String viewId = facesContext.getViewRoot().getViewId();
  +      String viewId = getViewId(facesContext);
         for ( Page page: getPageStack(viewId) )
         {
            for ( Param pageParameter: page.getParameters() )
  @@ -716,7 +717,7 @@
       */
      public void storePageParameters(FacesContext facesContext)
      {
  -      String viewId = facesContext.getViewRoot().getViewId();
  +      String viewId = getViewId(facesContext);
         for ( Map.Entry<String, Object> param: getParameters(viewId).entrySet() )
         {
            Contexts.getPageContext().set( param.getKey(), param.getValue() );
  @@ -1256,9 +1257,25 @@
      {
         return loginViewId;
      }
  +   
      public void setLoginViewId(String loginViewId)
      {
         this.loginViewId = loginViewId;
      }
      
  +   public static String getCurrentViewId()
  +   {
  +      return getViewId( FacesContext.getCurrentInstance() );
  +   }
  +   
  +   public static String getViewId(FacesContext facesContext)
  +   {
  +      if (facesContext!=null)
  +      {
  +         UIViewRoot viewRoot = facesContext.getViewRoot();
  +         if (viewRoot!=null) return viewRoot.getViewId();
  +      }
  +      return null;
  +   }
  +   
   }
  
  
  
  1.14      +2 -2      jboss-seam/src/main/org/jboss/seam/core/Redirect.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Redirect.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Redirect.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -b -r1.13 -r1.14
  --- Redirect.java	25 Feb 2007 22:38:21 -0000	1.13
  +++ Redirect.java	9 Mar 2007 02:14:15 -0000	1.14
  @@ -87,7 +87,7 @@
         parameters.clear();
         FacesContext context = FacesContext.getCurrentInstance();
         parameters.putAll( context.getExternalContext().getRequestParameterMap() );
  -      viewId = context.getViewRoot().getViewId();
  +      viewId = Pages.getViewId(context);
         setDirty();
      }
      
  @@ -103,7 +103,7 @@
      {
         FacesContext context = FacesContext.getCurrentInstance();
         parameters = Pages.instance().getViewRootValues(context);
  -      viewId = context.getViewRoot().getViewId();
  +      viewId = Pages.getViewId(context);
         conversationBegun = Conversation.instance().begin(true, false);
         setDirty();
         //if the request ends with an exception,
  
  
  
  1.26      +7 -8      jboss-seam/src/main/org/jboss/seam/core/ResourceBundle.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ResourceBundle.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/ResourceBundle.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -b -r1.25 -r1.26
  --- ResourceBundle.java	21 Dec 2006 02:38:26 -0000	1.25
  +++ ResourceBundle.java	9 Mar 2007 02:14:15 -0000	1.26
  @@ -162,17 +162,16 @@
   
            private List<java.util.ResourceBundle> getPageResourceBundles()
            {
  -            FacesContext facesContext = FacesContext.getCurrentInstance();
  -            if (facesContext!=null)
  +            String viewId = Pages.getCurrentViewId();
  +            if (viewId!=null)
               {
  -               UIViewRoot viewRoot = facesContext.getViewRoot();
  -               if (viewRoot!=null)
  -               {
  -                  return Pages.instance().getResourceBundles( viewRoot.getViewId() );
  -               }
  +               return Pages.instance().getResourceBundles(viewId);
               }
  +            else
  +            {
               return Collections.EMPTY_LIST;
            }
  +         }
            
         };
     
  
  
  



More information about the jboss-cvs-commits mailing list