You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2008/11/27 17:04:36 UTC

svn commit: r721215 - in /labs/magma/trunk/website-email: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/magma/ src/main/java/org/apache/magma/email/ src/main/resources/ src/test/ src/test/java/ s...

Author: simoneg
Date: Thu Nov 27 08:04:35 2008
New Revision: 721215

URL: http://svn.apache.org/viewvc?rev=721215&view=rev
Log:
LABS-247 : Addon to email to use HtmlProducer's

Added:
    labs/magma/trunk/website-email/pom.xml
    labs/magma/trunk/website-email/src/
    labs/magma/trunk/website-email/src/main/
    labs/magma/trunk/website-email/src/main/java/
    labs/magma/trunk/website-email/src/main/java/org/
    labs/magma/trunk/website-email/src/main/java/org/apache/
    labs/magma/trunk/website-email/src/main/java/org/apache/magma/
    labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/
    labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/AddWebBasedEmailMethods.aj
    labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/EmailI18n.aj
    labs/magma/trunk/website-email/src/main/resources/
    labs/magma/trunk/website-email/src/test/
    labs/magma/trunk/website-email/src/test/java/
    labs/magma/trunk/website-email/src/test/resources/

Added: labs/magma/trunk/website-email/pom.xml
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-email/pom.xml?rev=721215&view=auto
==============================================================================
--- labs/magma/trunk/website-email/pom.xml (added)
+++ labs/magma/trunk/website-email/pom.xml Thu Nov 27 08:04:35 2008
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <parent>
+    <artifactId>magma-parent</artifactId>
+    <groupId>org.apache.magma</groupId>
+    <version>1</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.magma</groupId>
+  <artifactId>website-email</artifactId>
+  <name>Magma Website based Email</name>
+  <version>0.0.1-SNAPSHOT</version>
+  <description/>
+  <packaging>magma</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.magma</groupId>
+      <artifactId>foundation-email</artifactId>
+      <version>0.0.1-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.magma</groupId>
+      <artifactId>foundation-website</artifactId>
+      <version>0.0.1-SNAPSHOT</version>
+    </dependency>
+  </dependencies>
+</project>

Added: labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/AddWebBasedEmailMethods.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/AddWebBasedEmailMethods.aj?rev=721215&view=auto
==============================================================================
--- labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/AddWebBasedEmailMethods.aj (added)
+++ labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/AddWebBasedEmailMethods.aj Thu Nov 27 08:04:35 2008
@@ -0,0 +1,63 @@
+package org.apache.magma.email;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.magma.basics.MagmaException;
+import org.apache.magma.website.Head;
+import org.apache.magma.website.HtmlProducer;
+import org.apache.magma.website.utils.URLRewritingStream;
+import org.apache.magma.website.HandlerSetup;
+
+public aspect AddWebBasedEmailMethods {
+
+	private static ThreadLocal<String> absoluteBaseUrl = new ThreadLocal<String>();
+	
+	before(HttpServletRequest req) : 
+		HandlerSetup.inRequest() &&
+		args(req,..) {
+		StringBuffer buff = req.getRequestURL();
+		try {
+			URL url = new URL(buff.toString());
+			url = new URL(url.getProtocol(), url.getHost(), url.getPort(), req.getContextPath());
+			absoluteBaseUrl.set(url.toExternalForm());
+		} catch (MalformedURLException e) {
+		}
+	}
+	
+	
+	public Email Email.html(HtmlProducer producer) {
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		String abs = absoluteBaseUrl.get();
+		if (abs == null) abs = "";
+		URLRewritingStream str = new URLRewritingStream(baos, abs);
+		str.setBaseUrl(producer.getBasePath());
+		OutputStreamWriter osw = new OutputStreamWriter(str);
+		try {
+			osw.append("<html><head>");
+			osw.flush();
+			Head h = new Head(str);
+			producer.head(h);
+			osw.append("</head><body>");
+			osw.flush();
+			producer.produce(str);
+			osw.append("</body></html>");
+			osw.flush();
+		} catch (IOException e1) {
+			throw new MagmaException(e1, "Error producing email HTML");
+		}
+		try {
+			this.html(new String(baos.toByteArray(), "UTF-8"));
+		} catch (UnsupportedEncodingException e) {
+			// should never happen
+		}
+		return this;
+	}
+	
+}

Added: labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/EmailI18n.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/EmailI18n.aj?rev=721215&view=auto
==============================================================================
--- labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/EmailI18n.aj (added)
+++ labs/magma/trunk/website-email/src/main/java/org/apache/magma/email/EmailI18n.aj Thu Nov 27 08:04:35 2008
@@ -0,0 +1,14 @@
+package org.apache.magma.email;
+
+import org.apache.magma.basics.LocalizableString;
+import org.apache.magma.email.Email;
+
+public aspect EmailI18n {
+
+	Email around(Email mail, String subject) : 
+		execution(* Email+.subject(String)) && 
+		args(subject) && this(mail) {
+		return proceed(mail, new LocalizableString(subject).toString());
+	}
+	
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org