[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