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

Gavin King gavin.king at jboss.com
Fri Nov 10 21:42:11 EST 2006


  User: gavin   
  Date: 06/11/10 21:42:11

  Modified:    src/main/org/jboss/seam/core   Page.java Pages.java
  Log:
  more elegant way to begin,end conversations from pages.xml
  
  Revision  Changes    Path
  1.2       +68 -4     jboss-seam/src/main/org/jboss/seam/core/Page.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Page.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Page.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- Page.java	31 Oct 2006 20:09:57 -0000	1.1
  +++ Page.java	11 Nov 2006 02:42:11 -0000	1.2
  @@ -23,10 +23,10 @@
            this.name = name;
         }
         
  -      final String name;
  -      ValueBinding valueBinding;
  -      ValueBinding converterValueBinding;
  -      String converterId;
  +      private final String name;
  +      private ValueBinding valueBinding;
  +      private ValueBinding converterValueBinding;
  +      private String converterId;
         
         Converter getConverter()
         {
  @@ -45,11 +45,47 @@
            }
         }
      
  +      public String getName()
  +      {
  +         return name;
  +      }
  +
  +      public void setValueBinding(ValueBinding valueBinding)
  +      {
  +         this.valueBinding = valueBinding;
  +      }
  +
  +      public ValueBinding getValueBinding()
  +      {
  +         return valueBinding;
  +      }
  +
  +      public void setConverterValueBinding(ValueBinding converterValueBinding)
  +      {
  +         this.converterValueBinding = converterValueBinding;
  +      }
  +
  +      public ValueBinding getConverterValueBinding()
  +      {
  +         return converterValueBinding;
  +      }
  +
  +      public void setConverterId(String converterId)
  +      {
  +         this.converterId = converterId;
  +      }
  +
  +      public String getConverterId()
  +      {
  +         return converterId;
  +      }
  +
         @Override
         public String toString()
         {
            return "PageParameter(" + name + ")";
         }
  +
      }
   
      private final String viewId;
  @@ -61,6 +97,8 @@
      private String resourceBundleName;
      private boolean switchEnabled = true;
      private List<Page.PageParameter> pageParameters = new ArrayList<Page.PageParameter>();
  +   private boolean isBeginConversation;
  +   private boolean isEndConversation;
      
      Page(String viewId)
      {
  @@ -188,4 +226,30 @@
      {
         return description!=null;
      }
  +
  +   public boolean isBeginConversation()
  +   {
  +      return isBeginConversation;
  +   }
  +
  +   public void setBeginConversation(boolean isBeginConversation)
  +   {
  +      this.isBeginConversation = isBeginConversation;
  +   }
  +
  +   public boolean isEndConversation()
  +   {
  +      return isEndConversation;
  +   }
  +
  +   public void setEndConversation(boolean isEndConversation)
  +   {
  +      this.isEndConversation = isEndConversation;
  +   }
  +   
  +   public void beginOrEndConversation()
  +   {
  +      if ( isEndConversation ) Conversation.instance().end();
  +      if ( isBeginConversation ) Conversation.instance().begin();
  +   }
   }
  \ No newline at end of file
  
  
  
  1.46      +33 -15    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.45
  retrieving revision 1.46
  diff -u -b -r1.45 -r1.46
  --- Pages.java	10 Nov 2006 19:07:00 -0000	1.45
  +++ Pages.java	11 Nov 2006 02:42:11 -0000	1.46
  @@ -155,6 +155,21 @@
            }
         }
         
  +      if ( page.elementIterator("end-conversation").hasNext() )
  +      {
  +         entry.setEndConversation(true);
  +      }
  +      
  +      if ( page.elementIterator("begin-conversation").hasNext() )
  +      {
  +         entry.setBeginConversation(true);
  +      }
  +      
  +      if ( entry.isBeginConversation() && entry.isEndConversation() )
  +      {
  +         throw new IllegalStateException("cannot use both <begin-conversation/> and <end-conversation/>");
  +      }
  +      
         String bundle = page.attributeValue("bundle");
         if (bundle!=null)
         {
  @@ -175,12 +190,12 @@
               name = valueExpression.substring(2, valueExpression.length()-1);
            }
            Page.PageParameter pageParameter = new Page.PageParameter(name);
  -         pageParameter.valueBinding = Expressions.instance().createValueBinding(valueExpression);
  -         pageParameter.converterId = param.attributeValue("converterId");
  +         pageParameter.setValueBinding(Expressions.instance().createValueBinding(valueExpression));
  +         pageParameter.setConverterId(param.attributeValue("converterId"));
            String converterExpression = param.attributeValue("converter");
            if (converterExpression!=null)
            {
  -            pageParameter.converterValueBinding = Expressions.instance().createValueBinding(converterExpression);
  +            pageParameter.setConverterValueBinding(Expressions.instance().createValueBinding(converterExpression));
            }
            entry.getPageParameters().add(pageParameter);
         }
  @@ -263,12 +278,15 @@
      {
         boolean result = false;
         
  -      String outcome = getPage(viewId).getOutcome();
  +      Page page = getPage(viewId);
  +      page.beginOrEndConversation();
  +
  +      String outcome = page.getOutcome();
         String fromAction = outcome;
         
         if (outcome==null)
         {
  -         MethodBinding methodBinding = getPage(viewId).getAction();
  +         MethodBinding methodBinding = page.getAction();
            if (methodBinding!=null) 
            {
               fromAction = methodBinding.getExpressionString();
  @@ -348,10 +366,10 @@
         Map<String, Object> parameters = new HashMap<String, Object>();
         for ( Page.PageParameter pageParameter: getPage(viewId).getPageParameters() )
         {
  -         Object value = pageParameter.valueBinding.getValue();
  +         Object value = pageParameter.getValueBinding().getValue();
            if (value!=null)
            {
  -            parameters.put(pageParameter.name, value);
  +            parameters.put(pageParameter.getName(), value);
            }
         }
         return parameters;
  @@ -362,9 +380,9 @@
         Map<String, Object> parameters = new HashMap<String, Object>();
         for ( Page.PageParameter pageParameter: getPage(viewId).getPageParameters() )
         {
  -         if ( !overridden.contains(pageParameter.name) )
  +         if ( !overridden.contains(pageParameter.getName()) )
            {
  -            Object value = pageParameter.valueBinding.getValue();
  +            Object value = pageParameter.getValueBinding().getValue();
               if (value!=null)
               {
                  Converter converter;
  @@ -379,7 +397,7 @@
                  }
                  Object convertedValue = converter==null ? 
                        value : converter.getAsString( facesContext, facesContext.getViewRoot(), value );
  -               parameters.put(pageParameter.name, convertedValue);
  +               parameters.put(pageParameter.getName(), convertedValue);
               }
            }
         }
  @@ -392,14 +410,14 @@
         Map<String, String[]> requestParameters = Parameters.getRequestParameters();
         for ( Page.PageParameter pageParameter: getPage(viewId).getPageParameters() )
         {         
  -         String[] parameterValues = requestParameters.get(pageParameter.name);
  +         String[] parameterValues = requestParameters.get(pageParameter.getName());
            if (parameterValues==null || parameterValues.length==0)
            {
               continue;
            }
            if (parameterValues.length>1)
            {
  -            throw new IllegalArgumentException("page parameter may not be multi-valued: " + pageParameter.name);
  +            throw new IllegalArgumentException("page parameter may not be multi-valued: " + pageParameter.getName());
            }         
            String stringValue = parameterValues[0];
   
  @@ -417,7 +435,7 @@
            Object value = converter==null ? 
                  stringValue :
                  converter.getAsObject( facesContext, facesContext.getViewRoot(), stringValue );
  -         pageParameter.valueBinding.setValue(value);
  +         pageParameter.getValueBinding().setValue(value);
         }
      }
   
  @@ -427,10 +445,10 @@
         
         for (Page.PageParameter pageParameter: getPage(viewId).getPageParameters())
         {         
  -         Object object = Contexts.getPageContext().get(pageParameter.name);
  +         Object object = Contexts.getPageContext().get(pageParameter.getName());
            if (object!=null)
            {
  -            pageParameter.valueBinding.setValue(object);
  +            pageParameter.getValueBinding().setValue(object);
            }
         }
      }
  
  
  



More information about the jboss-cvs-commits mailing list