[jboss-cvs] jboss-seam/src/mail/org/jboss/seam/mail/ui ...

Peter Muir peter at bleepbleep.org.uk
Fri Jan 26 06:42:20 EST 2007


  User: pmuir   
  Date: 07/01/26 06:42:20

  Modified:    src/mail/org/jboss/seam/mail/ui    UIMessage.java
                        MailComponent.java
  Added:       src/mail/org/jboss/seam/mail/ui    UIHeader.java
  Log:
  Support for headers
  
  Revision  Changes    Path
  1.4       +99 -2     jboss-seam/src/mail/org/jboss/seam/mail/ui/UIMessage.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: UIMessage.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/mail/org/jboss/seam/mail/ui/UIMessage.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- UIMessage.java	24 Jan 2007 22:21:51 -0000	1.3
  +++ UIMessage.java	26 Jan 2007 11:42:20 -0000	1.4
  @@ -11,16 +11,30 @@
   
   import org.jboss.seam.mail.MailSession;
   
  +import sun.security.action.GetBooleanAction;
  +
   /**
    * JSF component which delimites the start and end of the mail message.  
    */
  -// TODO Support Priority,read receipt, encoding, precedence
  -// TODO Support getting session from JNDI
  +// TODO Support read receipt, encoding
   public class UIMessage extends MailComponent
   {
  +   
  +   public static class Importance {
  +      
  +      public static final String LOW = "low";
  +      public static final String NORMAL = "normal";
  +      public static final String HIGH = "high";
  +      
  +   }
  +   
      private MimeMessage mimeMessage;
      private Session session;
   
  +   private String importance;
  +   private String precedence;
  +   private Boolean requestReadReceipt;
  +
      /**
       * Get the JavaMail Session to use.
       * If not set the default session is used
  @@ -50,11 +64,43 @@
      }
      
      @Override
  +   public void encodeBegin(FacesContext context) throws IOException
  +   {
  +      try {
  +         if (Importance.HIGH.equalsIgnoreCase(getImportance())) 
  +         {
  +        	 // Various mail client's use different headers for indicating importance
  +        	 // This is a common set, more may need to be added.
  +            getMimeMessage().addHeader("X-Prioity", "1");
  +            getMimeMessage().addHeader("Priority", "Urgent");
  +            getMimeMessage().addHeader("Importance", "high");
  +         }
  +         else if (Importance.LOW.equalsIgnoreCase(getImportance())) 
  +         {
  +        	getMimeMessage().addHeader("X-Priority", "5");
  +            getMimeMessage().addHeader("Priority", "Non-urgent");
  +            getMimeMessage().addHeader("Importance", "low");
  +         }
  +         if (getPrecedence() != null) {
  +            getMimeMessage().addHeader("Precedence", getPrecedence());
  +         }
  +      }
  +      catch (MessagingException e) 
  +      {
  +         throw new FacesException(e.getMessage(), e);
  +      }
  +   }
  +   
  +   @Override
      public void encodeEnd(FacesContext arg0) throws IOException
      {
         super.encodeEnd(arg0);
         try
         {
  +         if (isRequestReadReceipt() && getMimeMessage().getFrom() != null && getMimeMessage().getFrom().length == 1)
  +         {
  +            getMimeMessage().addHeader("Disposition-Notification-To", getMimeMessage().getFrom()[0].toString());   
  +         }
            Transport.send(getMimeMessage());
         }
         catch (MessagingException e)
  @@ -69,4 +115,55 @@
       return false;
      }
   
  +   public String getImportance()
  +   {
  +      if (importance == null) 
  +      {
  +         return getString("importance");
  +      }
  +      else 
  +      {
  +         return importance;
  +      }
  +   }
  +
  +   public void setImportance(String importance)
  +   {
  +      this.importance = importance;
  +   }
  +   
  +   public String getPrecedence()
  +   {
  +      if (precedence == null)
  +      {
  +         return getString("precedence");
  +      }
  +      else 
  +      {
  +         return precedence;
  +      }
  +   }
  +   
  +   public void setPrecedence(String precedence)
  +   {
  +      this.precedence = precedence;
  +   }
  +   
  +   public boolean isRequestReadReceipt()
  +   {
  +	   if (requestReadReceipt == null) 
  +	   {
  +		   return getBoolean("requestReadReceipt") == null ? false : getBoolean("requestReadReceipt");
  +	   }
  +	   else
  +	   {
  +	      return requestReadReceipt;
  +	   }
  +   }
  +   
  +   public void setRequestReadReceipt(boolean requestReadReceipt)
  +   {
  +      this.requestReadReceipt = requestReadReceipt;
  +   }
  +
   }
  
  
  
  1.4       +16 -0     jboss-seam/src/mail/org/jboss/seam/mail/ui/MailComponent.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: MailComponent.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/mail/org/jboss/seam/mail/ui/MailComponent.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- MailComponent.java	24 Jan 2007 22:21:51 -0000	1.3
  +++ MailComponent.java	26 Jan 2007 11:42:20 -0000	1.4
  @@ -117,4 +117,20 @@
            return getValueBinding(localName).getValue(getFacesContext());
         }
      }
  +   
  +   /**
  +    * Get a valuebinding as a Boolean 
  +    */
  +   protected Boolean getBoolean(String localName) {
  +      Object o = getValue(localName);
  +      if (o != null) {
  +         if (o instanceof Boolean) {
  +            return (Boolean) o;
  +         } else {
  +            return Boolean.valueOf(o.toString());
  +         }
  +      } else {
  +         return null;
  +      }
  +   }
   }
  
  
  
  1.1      date: 2007/01/26 11:42:20;  author: pmuir;  state: Exp;jboss-seam/src/mail/org/jboss/seam/mail/ui/UIHeader.java
  
  Index: UIHeader.java
  ===================================================================
  package org.jboss.seam.mail.ui;
  
  import java.io.IOException;
  
  import javax.faces.FacesException;
  import javax.faces.context.FacesContext;
  import javax.mail.MessagingException;
  
  public class UIHeader extends MailComponent
  {
     
     private String name;
     private String value;
     
     @Override
     public void encodeBegin(FacesContext facesContext) throws IOException
     {
        try
        {
           if (getValue() != null) {
              findMimeMessage().addHeader(getName(), getValue());
           } else {
              findMimeMessage().addHeader(getName(), encode(facesContext));
           }
        }
        catch (MessagingException e)
        {
           throw new FacesException(e.getMessage(), e);
        }
     }
     
     
     public String getName()
     {
        if (name == null)
        {
           return getString("header");
        }
        else 
        {
           return name;
        }
     }
     
     public void setName(String header)
     {
        this.name = header;
     }
     
     public String getValue()
     {
        if (value == null)
        {
           return getString("value");
        }
        else 
        {
           return value;
        }
     }
     
     public void setValue(String value)
     {
        this.value = value;
     }
  }
  
  
  



More information about the jboss-cvs-commits mailing list