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

Shane Bryzak sbryzak at redhat.com
Mon Mar 5 06:25:13 EST 2007


  User: sbryzak2
  Date: 07/03/05 06:25:12

  Added:       src/main/org/jboss/seam/pages   
                        ConversationIdParameter.java
                        ELConversationIdParameter.java
                        SyntheticConversationIdParameter.java
  Log:
  
  
  Revision  Changes    Path
  1.1      date: 2007/03/05 11:25:12;  author: sbryzak2;  state: Exp;jboss-seam/src/main/org/jboss/seam/pages/ConversationIdParameter.java
  
  Index: ConversationIdParameter.java
  ===================================================================
  package org.jboss.seam.pages;
  
  public interface ConversationIdParameter
  {
    String getParameterName();
    String getParameterValue();
    
    String getInitialConversationId();
  }
  
  
  
  1.1      date: 2007/03/05 11:25:12;  author: sbryzak2;  state: Exp;jboss-seam/src/main/org/jboss/seam/pages/ELConversationIdParameter.java
  
  Index: ELConversationIdParameter.java
  ===================================================================
  package org.jboss.seam.pages;
  
  import javax.faces.context.FacesContext;
  
  import org.jboss.seam.core.Expressions;
  import org.jboss.seam.core.Manager;
  import org.jboss.seam.core.Expressions.ValueBinding;
  import org.jboss.seam.util.Id;
  
  /**
   * Represents a conversation parameter that can be used to create a "natural"
   * conversation ID, by defining a <conversation/> entry in pages.xml. 
   *  
   * @author Shane Bryzak
   */
  public class ELConversationIdParameter implements ConversationIdParameter
  {
     private String name;
     private String paramName;
     private ValueBinding vb;
     
     public ELConversationIdParameter(String name, String paramName, String expression)
     {
        this.name = name;
        this.paramName = paramName;
        
        this.vb = expression != null ? Expressions.instance().createValueBinding(expression) : null;
     }
     
     public String getName()
     {
        return name;
     }
     
     public String getParameterName()
     {
        String conversationId = Manager.instance().getCurrentConversationId();
        int idx = conversationId.indexOf(':');
        if (idx != -1)
        {
           return paramName;
        }
        else
        {
           return Manager.instance().getConversationIdParameter();
        }            
     }
     
     public String getInitialConversationId()
     {
        FacesContext ctx = FacesContext.getCurrentInstance();
        
        String value = (String) ctx.getExternalContext().getRequestParameterMap().get(paramName);
        
        if (value == null)
        {
           // TODO - redirect to no-conversation-view-id ?
           return Id.nextId();
        }
        else
        {
           return String.format("%s:%s", name, value);
        }
     }
  
     public String getParameterValue()
     {
        Object value = vb.getValue();
        if (value != null)
        {
           return vb.getValue().toString();               
        }
        else
        {      
           String conversationId = Manager.instance().getCurrentConversationId();
           int idx = conversationId.indexOf(':');
           if (idx != -1)
           {
              return conversationId.substring(idx + 1);
           }
           else
           {
              return conversationId;
           }      
        }
  
     }
  }
  
  
  
  1.1      date: 2007/03/05 11:25:12;  author: sbryzak2;  state: Exp;jboss-seam/src/main/org/jboss/seam/pages/SyntheticConversationIdParameter.java
  
  Index: SyntheticConversationIdParameter.java
  ===================================================================
  package org.jboss.seam.pages;
  
  import org.jboss.seam.core.Manager;
  import org.jboss.seam.util.Id;
  
  public class SyntheticConversationIdParameter implements ConversationIdParameter
  {
     public String getParameterName()
     {
        return Manager.instance().getConversationIdParameter();
     }
     
     public String getParameterValue()
     {
        return Manager.instance().getCurrentConversationId();
     }
     
     public String getInitialConversationId()
     {
        return Id.nextId();  
     }
  }
  
  
  



More information about the jboss-cvs-commits mailing list