haul 02/04/23 02:52:59
Modified: src/java/org/apache/cocoon/components/language/markup/xsp/java
sendmail.xsl
Log:
Patches from J�rgen Ehms (modified) for problems with valueOf(),
additional tags.
Revision Changes Path
1.6 +101 -35
xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/xsp/java/sendmail.xsl
Index: sendmail.xsl
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/xsp/java/sendmail.xsl,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- sendmail.xsl 23 Apr 2002 09:49:58 -0000 1.5
+++ sendmail.xsl 23 Apr 2002 09:52:59 -0000 1.6
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<!-- $Id: sendmail.xsl,v 1.5 2002/04/23 09:49:58 haul Exp $-->
+<!-- $Id: sendmail.xsl,v 1.6 2002/04/23 09:52:59 haul Exp $-->
<!--
============================================================================
@@ -56,52 +56,52 @@
* This is a stylesheet to send mail via the java mail API.
*
* @author Donald A. Ball Jr.
- * @version CVS $Revision: 1.5 $ $Date: 2002/04/23 09:49:58 $
+ * @version CVS $Revision: 1.6 $ $Date: 2002/04/23 09:52:59 $
-->
-
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsp="http://apache.org/xsp"
xmlns:sendmail="http://apache.org/cocoon/sendmail/1.0"
version="1.0"
>
-
+
<xsl:param name="XSP-ENVIRONMENT"/>
<xsl:param name="XSP-VERSION"/>
<xsl:param name="filename"/>
<xsl:param name="language"/>
-
+
<xsl:variable name="cocoon1-environment">Cocoon 1</xsl:variable>
<xsl:variable name="cocoon2-environment">Cocoon 2</xsl:variable>
<xsl:variable
name="cocoon1-xsp-namespace-uri">http://www.apache.org/1999/XSP/Core</xsl:variable>
<xsl:variable
name="cocoon2-xsp-namespace-uri">http://apache.org/xsp</xsl:variable>
+ <xsl:variable name="prefix">sendmail</xsl:variable>
<xsl:variable name="environment">
<xsl:choose>
<xsl:when test="starts-with($XSP-ENVIRONMENT,$cocoon1-environment)">
- <xsl:text>cocoon1</xsl:text>
+ <xsl:text>Cocoon1</xsl:text>
</xsl:when>
<xsl:when test="starts-with($XSP-ENVIRONMENT,$cocoon2-environment)">
- <xsl:text>cocoon2</xsl:text>
+ <xsl:text>Cocoon2</xsl:text>
</xsl:when>
<xsl:otherwise>
- <xsl:text>cocoon2</xsl:text>
+ <xsl:text>Cocoon2</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
-
+
<xsl:variable name="xsp-namespace-uri">
<xsl:choose>
- <xsl:when test="$environment = 'cocoon1'">
+ <xsl:when test="$environment = 'Cocoon1'">
<xsl:value-of select="$cocoon1-xsp-namespace-uri"/>
</xsl:when>
- <xsl:when test="$environment = 'cocoon2'">
+ <xsl:otherwise>
<xsl:value-of select="$cocoon2-xsp-namespace-uri"/>
- </xsl:when>
+ </xsl:otherwise>
</xsl:choose>
</xsl:variable>
-
+
<xsl:template name="get-nested-content">
<xsl:param name="content"/>
<xsl:choose>
@@ -118,14 +118,14 @@
<xsl:template name="get-nested-string">
<xsl:param name="content"/>
<xsl:choose>
- <xsl:when test="$environment = 'cocoon1'">
+ <xsl:when test="$environment = 'Cocoon1'">
<xsl:choose>
<xsl:when test="$content/*">
- ""
+ ""
<xsl:for-each select="$content/node()">
<xsl:choose>
<xsl:when test="name(.)">
- + <xsl:apply-templates select="."/>
+ + <xsl:apply-templates select="."/>
</xsl:when>
<xsl:otherwise>
+ "<xsl:value-of select="translate(.,'	 ',' ')"/>"
@@ -138,33 +138,41 @@
</xsl:otherwise>
</xsl:choose>
</xsl:when>
- <xsl:when test="$environment = 'cocoon2'">
+ <xsl:otherwise>
<xsl:choose>
- <xsl:when test="$content/*">
- ""
+ <!-- if $content has sub-elements, concatenate them -->
+ <xsl:when test="$content/*">
+ ""
<xsl:for-each select="$content/node()">
<xsl:choose>
<xsl:when test="name(.)">
+ <!-- element -->
<xsl:choose>
- <xsl:when test="namespace-uri(.)='http://apache.org/xsp' and
local-name(.)='text'">
- + "<xsl:value-of select="."/>"
- </xsl:when>
+ <!-- xsp:text element -->
+ <xsl:when test="namespace-uri(.)='http://apache.org/xsp' and
local-name(.)='text'">
+ + "<xsl:value-of select="translate(.,'	 ','
')"/>"
+ </xsl:when>
+ <!-- other elements -->
<xsl:otherwise>
+ <xsl:apply-templates select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
- <xsl:otherwise>
+ <!-- text node -->
+ <xsl:otherwise>
+ "<xsl:value-of select="translate(.,'	 ',' ')"/>"
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:when>
+ <!-- else return the text value of $content -->
<xsl:otherwise>"<xsl:value-of
select="normalize-space($content)"/>"</xsl:otherwise>
</xsl:choose>
- </xsl:when>
+ </xsl:otherwise>
</xsl:choose>
</xsl:template>
+
+
<xsl:template match="xsp:page">
<xsl:copy>
@@ -172,7 +180,7 @@
<xsp:structure>
<xsp:include>javax.mail.Message</xsp:include>
<xsp:include>javax.mail.Transport</xsp:include>
- <xsp:include>javax.mail.Session</xsp:include>
+ <!-- xsp:include>javax.mail.Session</xsp:include -->
<xsp:include>javax.mail.MessagingException</xsp:include>
<xsp:include>javax.mail.internet.InternetAddress</xsp:include>
<xsp:include>javax.mail.internet.MimeMessage</xsp:include>
@@ -191,40 +199,98 @@
</xsl:copy>
</xsl:template>
+
<xsl:template match="sendmail:send-mail">
- <xsl:variable name="from"><xsl:call-template
name="get-nested-string"><xsl:with-param name="content"
select="sendmail:from"/></xsl:call-template></xsl:variable>
- <xsl:variable name="to"><xsl:call-template
name="get-nested-string"><xsl:with-param name="content"
select="sendmail:to"/></xsl:call-template></xsl:variable>
- <xsl:variable name="subject"><xsl:call-template
name="get-nested-string"><xsl:with-param name="content"
select="sendmail:subject"/></xsl:call-template></xsl:variable>
- <xsl:variable name="body"><xsl:call-template
name="get-nested-string"><xsl:with-param name="content"
select="sendmail:body"/></xsl:call-template></xsl:variable>
- <xsl:variable name="smtphost"><xsl:call-template
name="get-nested-string"><xsl:with-param name="content"
select="sendmail:smtphost"/></xsl:call-template></xsl:variable>
+ <xsl:variable name="from">
+ <xsl:call-template name="get-nested-string">
+ <xsl:with-param name="content" select="sendmail:from"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="to">
+ <xsl:call-template name="get-nested-string">
+ <xsl:with-param name="content" select="sendmail:to"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subject">
+ <xsl:call-template name="get-nested-string">
+ <xsl:with-param name="content" select="sendmail:subject"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="body">
+ <xsl:call-template name="get-nested-string">
+ <xsl:with-param name="content" select="sendmail:body"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="smtphost">
+ <xsl:call-template name="get-nested-string">
+ <xsl:with-param name="content" select="sendmail:smtphost"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="cc">
+ <xsl:call-template name="get-nested-string">
+ <xsl:with-param name="content" select="sendmail:cc"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="bcc">
+ <xsl:call-template name="get-nested-string">
+ <xsl:with-param name="content" select="sendmail:bcc"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="charset">
+ <xsl:call-template name="get-nested-string">
+ <xsl:with-param name="content" select="sendmail:charset"/>
+ </xsl:call-template>
+ </xsl:variable>
<xsp:logic>
- try {
+ try {
Properties _sendmail_properties = new
Properties(this._sendmail_properties);
+ <xsl:if test="sendmail:smtphost">
if (!"null".equals(String.valueOf(<xsl:copy-of select="$smtphost"/>))) {
_sendmail_properties.put("mail.smtp.host",String.valueOf(<xsl:copy-of
select="$smtphost"/>));
}
- Session _sendmail_session =
Session.getDefaultInstance(_sendmail_properties,null);
- Message _sendmail_message = new MimeMessage(_sendmail_session);
+ </xsl:if>
+ javax.mail.Session _sendmail_session =
javax.mail.Session.getDefaultInstance(_sendmail_properties,null);
+ MimeMessage _sendmail_message = new MimeMessage(_sendmail_session);
+
InternetAddress _sendmail_from = new
InternetAddress(String.valueOf(<xsl:copy-of select="$from"/>));
_sendmail_message.setFrom(_sendmail_from);
+
+ <xsl:if test="sendmail:cc">
+ if (!"null".equals(String.valueOf(<xsl:copy-of select="$cc"/>))){
+ InternetAddress _sendmail_cc = new
InternetAddress(String.valueOf(<xsl:copy-of select="$cc"/>));
+ _sendmail_message.setRecipient(Message.RecipientType.CC,_sendmail_cc);
+ }
+ </xsl:if>
+ <xsl:if test="sendmail:bcc">
+ if (!"null".equals(String.valueOf(<xsl:copy-of select="$bcc"/>))){
+ InternetAddress _sendmail_bcc = new
InternetAddress(String.valueOf(<xsl:copy-of select="$bcc"/>));
+ _sendmail_message.setRecipient(Message.RecipientType.BCC,_sendmail_bcc);
+ }
+ </xsl:if>
InternetAddress _sendmail_to = new
InternetAddress(String.valueOf(<xsl:copy-of select="$to"/>));
_sendmail_message.setRecipient(Message.RecipientType.TO,_sendmail_to);
_sendmail_message.setSentDate(new Date());
_sendmail_message.setSubject(String.valueOf(<xsl:copy-of
select="$subject"/>));
- _sendmail_message.setText(String.valueOf(<xsl:copy-of select="$body"/>));
+ if (!"null".equals(String.valueOf(<xsl:copy-of select="$charset"/>))) {
+ _sendmail_message.setText(String.valueOf(<xsl:copy-of
select="$body"/>),String.valueOf(<xsl:copy-of select="$charset"/>));
+ } else {
+ _sendmail_message.setText(String.valueOf(<xsl:copy-of
select="$body"/>));
+ }
Transport.send(_sendmail_message);
} catch (AddressException _sendmail_exception) {
- <error type="user">Your email address is invalid.</error>
+ <error type="user">Your email address is invalid.</error>
} catch (MessagingException _sendmail_exception) {
- <error type="server">An error occured while sending email.</error>
+ <error type="server">An error occured while sending email.</error>
}
</xsp:logic>
</xsl:template>
+
+
<xsl:template match="@*|node()" priority="-1">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
-
+
</xsl:stylesheet>
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]