[seam-commits] Seam SVN: r14286 - in branches/community/Seam_2_3/examples-ee6: mail and 43 other directories.
seam-commits at lists.jboss.org
seam-commits at lists.jboss.org
Thu Feb 2 09:52:53 EST 2012
Author: manaRH
Date: 2012-02-02 09:52:51 -0500 (Thu, 02 Feb 2012)
New Revision: 14286
Added:
branches/community/Seam_2_3/examples-ee6/mail/
branches/community/Seam_2_3/examples-ee6/mail/build.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/pom.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/application.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/jboss-deployment-structure.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/pom.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/AsynchronousMailProcessor.java
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Lists.java
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailExample.java
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailSenderServlet.java
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Person.java
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/META-INF/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/META-INF/MANIFEST.MF
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/seam.properties
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/pom.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/MailTest.java
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/selenium/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/selenium/SeleniumMailTest.java
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-ftest/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-ftest/testng.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-integration/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-integration/testng.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/WEB-INF/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/WEB-INF/components.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors1.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors2.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors3.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors4.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/sanitization.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/seam.properties
branches/community/Seam_2_3/examples-ee6/mail/mail-web/
branches/community/Seam_2_3/examples-ee6/mail/mail-web/pom.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/META-INF/
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/META-INF/MANIFEST.MF
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/components.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/faces-config.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/pages.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/web.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/attachment.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/excel.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/gavin.jpg
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/html.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.html
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/jboss.jpg
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/numbers.csv
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/plain.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/seamlogo.png
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/shane.jpg
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/simple.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/template.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/templating.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/whyseam.xhtml
branches/community/Seam_2_3/examples-ee6/mail/pom.xml
branches/community/Seam_2_3/examples-ee6/mail/readme.txt
Log:
added Mail example for JSF2
Added: branches/community/Seam_2_3/examples-ee6/mail/build.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/build.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/build.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+
+<project name="Seam Mail" default="deploy" basedir=".">
+ <!-- Example name -->
+ <property name="Name" value="Mail example" />
+ <property name="example.name" value="jboss-seam-email" />
+
+ <!-- Libraries -->
+ <property name="seam.ui.lib" value="yes" />
+ <property name="seam.mail.lib" value="yes" />
+ <property name="deploy.meldware.mail" value="yes" />
+ <property name="seam.pdf.lib" value="yes"/>
+ <property name="seam.excel.lib" value="yes"/>
+ <property name="seam.debug.lib" value="yes" />
+ <property name="facelets.lib" value="yes" />
+
+ <import file="../build.xml" />
+
+ <patternset id="test.view.files">
+ <include name="*.*" />
+ </patternset>
+
+ <patternset id="test.src.files">
+ <include name="**/*.xml" />
+ <include name="**/*.xhtml" />
+ </patternset>
+
+ <path id="test.classpath.extras">
+ <path location="${lib.dir}/jboss-seam-ui.jar" />
+ </path>
+
+ <path id="build.classpath.extras">
+ <path location="${lib.dir}/jboss-seam-mail.jar" />
+ <path location="${lib.dir}/jboss-seam-pdf.jar" />
+ <path location="${lib.dir}/jboss-seam-excel.jar" />
+ </path>
+
+</project>
+
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ear/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ear/pom.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ear/pom.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,186 @@
+<?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">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>mail</artifactId>
+ <groupId>org.jboss.seam.examples</groupId>
+ <version>2.3.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ear</artifactId>
+ <packaging>ear</packaging>
+ <name>Mail EAR Module</name>
+
+ <properties>
+ <jboss.home>${env.JBOSS_HOME}</jboss.home>
+ <jboss.domain>default</jboss.domain>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-web</artifactId>
+ <type>war</type>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <type>ejb</type>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-jsf2</artifactId>
+ <type>ejb</type>
+ <scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xpp3</groupId>
+ <artifactId>xpp3_min</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>jfree</groupId>
+ <artifactId>jfreechart</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>seam-mail</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-ear-plugin</artifactId>
+ <configuration>
+ <version>5</version>
+ <defaultLibBundleDir>lib</defaultLibBundleDir>
+ <!-- Exclude eclipse generated application.xml and manually modified jboss-app.xml during mvn build -->
+ <earSourceExcludes>**/application.xml, **/jboss-app.xml</earSourceExcludes>
+ <!-- use maven generated application.xml instead -->
+ <generateApplicationXml>true</generateApplicationXml>
+ <filtering>true</filtering>
+<!-- <jboss>
+ <version>4.2</version>
+ <loader-repository>seam.jboss.org:loader=seam-mail</loader-repository>
+ </jboss>-->
+ <modules>
+ <ejbModule>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-jsf2</artifactId>
+ <bundleFileName>jboss-seam.jar</bundleFileName>
+ </ejbModule>
+ <webModule>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-web</artifactId>
+ <contextRoot>/seam-mail</contextRoot>
+ <bundleFileName>mail-web.war</bundleFileName>
+ </webModule>
+ <ejbModule>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <bundleFileName>mail-ejb.jar</bundleFileName>
+ </ejbModule>
+ </modules>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-greenmail-service</id>
+ <phase>package</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>com.icegreen</groupId>
+ <artifactId>greenmail-jboss-service</artifactId>
+ <version>1.3.1b</version>
+ <type>sar</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>${project.build.directory}</outputDirectory>
+ <destFileName>greenmail-jboss-service.sar</destFileName>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>exploded</id>
+ <properties>
+ <example.name>mail</example.name>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>unpack</id>
+ <phase>package</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.jboss.seam.examples</groupId>
+ <artifactId>mail-ear</artifactId>
+ <type>ear</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${project.build.directory}/${project.build.finalName}-exploded/${project.build.finalName}.ear</outputDirectory>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.jboss.seam.examples</groupId>
+ <artifactId>mail-web</artifactId>
+ <type>war</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${project.build.directory}/${project.build.finalName}-exploded/${project.build.finalName}.ear/${example.name}-web.war</outputDirectory>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.jboss.seam.examples</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${project.build.directory}/${project.build.finalName}-exploded/${project.build.finalName}.ear/${example.name}-ejb.jar</outputDirectory>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ </profiles>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>3.1.0.GA</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+</project>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/application.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/application.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/application.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" version="5">
+ <description>Examples for Seam 2 Framework</description>
+ <display-name>mail-ear</display-name>
+ <module>
+ <web>
+ <web-uri>mail-web.war</web-uri>
+ <context-root>/seam-mail</context-root>
+ </web>
+ </module>
+ <module>
+ <ejb>mail-ejb.jar</ejb>
+ </module>
+ <module>
+ <ejb>jboss-seam.jar</ejb>
+ </module>
+ <library-directory>lib</library-directory>
+</application>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/jboss-deployment-structure.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/jboss-deployment-structure.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/jboss-deployment-structure.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,34 @@
+<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
+ <deployment>
+ <exclusions>
+ <module name="org.hibernate" slot="main" />
+ </exclusions>
+ <dependencies>
+ <module name="org.apache.log4j" export="true" />
+ <module name="org.dom4j" export="true" />
+ <module name="org.apache.commons.logging" export="true" />
+ <module name="org.apache.commons.collections" export="true" />
+ <module name="javax.faces.api" export="true" />
+ <module name="com.sun.jsf-impl" export="true" />
+ <module name="org.slf4j" export="true" />
+ <module name="org.javassist" export="true"/>
+ <module name="javax.mail.api" export="true"/>
+ </dependencies>
+ </deployment>
+ <sub-deployment name="mail-web.war">
+ <dependencies>
+ <module name="javax.faces.api" />
+ <module name="com.sun.jsf-impl" />
+ <module name="javax.mail.api"/>
+ </dependencies>
+ </sub-deployment>
+ <sub-deployment name="mail-ejb.jar">
+ <dependencies>
+ <module name="javax.mail.api"/>
+ </dependencies>
+ <exclusions>
+ <module name="org.hibernate" slot="main" />
+ </exclusions>
+ </sub-deployment>
+
+</jboss-deployment-structure>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/pom.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/pom.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,52 @@
+<?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">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>mail</artifactId>
+ <groupId>org.jboss.seam.examples</groupId>
+ <version>2.3.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <packaging>ejb</packaging>
+ <name>Mail EJB Module</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-jsf2</artifactId>
+ <type>ejb</type>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.ejb</groupId>
+ <artifactId>ejb-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>3.1.0.GA</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+</project>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/AsynchronousMailProcessor.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/AsynchronousMailProcessor.java (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/AsynchronousMailProcessor.java 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,26 @@
+package org.jboss.seam.example.mail;
+
+import org.jboss.seam.annotations.async.Asynchronous;
+import org.jboss.seam.annotations.AutoCreate;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.async.Duration;
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.faces.Renderer;
+import org.jboss.seam.log.*;
+
+ at Name("asynchronousMailProcessor")
+ at AutoCreate
+public class AsynchronousMailProcessor
+{
+ private static final LogProvider log = Logging.getLogProvider(AsynchronousMailProcessor.class);
+
+ @Asynchronous
+ public void scheduleSend(@Duration long delay, Person person) {
+ try {
+ Contexts.getEventContext().set("person", person);
+ Renderer.instance().render("/simple.xhtml");
+ } catch (Exception e) {
+ log.error("Error scheduling send #0",e);
+ }
+ }
+}
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Lists.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Lists.java (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Lists.java 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,19 @@
+package org.jboss.seam.example.mail;
+
+import org.jboss.seam.annotations.*;
+
+ at Name("lists")
+public class Lists{
+
+ String[] numbers = {"one", "two", "three", "four", "five"};
+ String[] daysOfWeek = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
+
+ public String[] getNumbers() {
+ return numbers;
+ }
+
+ public String[] getDaysOfWeek() {
+ return daysOfWeek;
+ }
+
+}
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailExample.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailExample.java (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailExample.java 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,98 @@
+package org.jboss.seam.example.mail;
+
+import java.net.URL;
+
+import javax.faces.application.FacesMessage;
+
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.Factory;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Logger;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.core.ResourceLoader;
+import org.jboss.seam.faces.FacesMessages;
+import org.jboss.seam.faces.Renderer;
+import org.jboss.seam.log.Log;
+
+ at Name("mailExample")
+ at Scope(ScopeType.CONVERSATION)
+public class MailExample
+{
+
+ @Logger
+ private Log log;
+
+ @In
+ private FacesMessages facesMessages;
+
+ @In
+ private Renderer renderer;
+
+ @In
+ private AsynchronousMailProcessor asynchronousMailProcessor;
+
+ @In(create=true)
+ private Person person;
+
+ public void send() {
+ try {
+ renderer.render("/simple.xhtml");
+ facesMessages.add("Email sent successfully");
+ } catch (Exception e) {
+ log.error("Error sending mail", e);
+ facesMessages.add(FacesMessage.SEVERITY_INFO, "Email sending failed: " + e.getMessage());
+ }
+ }
+
+ public void sendAttachment() {
+ try {
+ renderer.render("/attachment.xhtml");
+ facesMessages.add("Email sent successfully");
+ } catch (Exception e) {
+ log.error("Error sending mail", e);
+ facesMessages.add(FacesMessage.SEVERITY_INFO, "Email sending failed: " + e.getMessage());
+ }
+ }
+
+ public void sendHtml() {
+ try {
+ renderer.render("/html.xhtml");
+ facesMessages.add("Email sent successfully");
+ } catch (Exception e) {
+ log.error("Error sending mail", e);
+ facesMessages.add("Email sending failed:" + e.getMessage());
+ }
+ }
+
+ public void sendPlain() {
+ try {
+ renderer.render("/plain.xhtml");
+ facesMessages.add("Email sent successfully");
+ } catch (Exception e) {
+ log.error("Error sending mail", e);
+ facesMessages.add("Email sending failed: " + e.getMessage());
+ }
+ }
+
+ public void sendTemplate() {
+ try {
+ renderer.render("/templating.xhtml");
+ facesMessages.add("Email sent successfully");
+ } catch (Exception e) {
+ log.error("Error sending mail", e);
+ facesMessages.add("Email sending failed: " + e.getMessage());
+ }
+ }
+
+ public void sendAsynchronous() {
+ asynchronousMailProcessor.scheduleSend(3000, person);
+ }
+
+ @Factory("numbers")
+ public URL getFile()
+ {
+ return ResourceLoader.instance().getResource("/numbers.csv");
+ }
+
+}
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailSenderServlet.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailSenderServlet.java (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailSenderServlet.java 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,45 @@
+package org.jboss.seam.example.mail;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jboss.seam.Component;
+import org.jboss.seam.servlet.ContextualHttpServletRequest;
+
+public class MailSenderServlet extends HttpServlet
+{
+
+ @Override
+ protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException
+ {
+ new ContextualHttpServletRequest(req)
+ {
+
+ @Override
+ public void process() throws Exception
+ {
+ Person person = (Person) Component.getInstance(Person.class);
+ String firstname = req.getParameter("name");
+ String email = req.getParameter("email");
+ person.setAddress(email);
+ person.setFirstname(firstname);
+ MailExample mailExample = (MailExample) Component.getInstance(MailExample.class);
+ mailExample.sendPlain();
+ resp.getWriter().write("Email sent successfully");
+ resp.setStatus(200);
+ }
+
+ }.run();
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
+ {
+ doGet(req, resp);
+ }
+
+}
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Person.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Person.java (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Person.java 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,75 @@
+package org.jboss.seam.example.mail;
+
+import java.io.InputStream;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.seam.annotations.Factory;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.core.ResourceLoader;
+
+ at Name("person")
+public class Person implements Serializable
+{
+ private String firstname;
+ private String lastname;
+ private String address;
+ private transient InputStream photo = ResourceLoader.instance().getResourceAsStream("/seamlogo.png");
+
+ @Factory("people")
+ public List<Person> getPeople() {
+ List<Person> people = new ArrayList<Person>();
+ people.add(new Person("Gavin", "King", "gavin.king at jboss.com", "/gavin.jpg"));
+ people.add(new Person("Shane", "Bryzak", "shane.bryzak at jboss.com", "/shane.jpg"));
+ return people;
+ }
+
+ public Person()
+ {
+ }
+
+ public Person(String firstname, String lastname, String address, String photoPath)
+ {
+ this.firstname = firstname;
+ this.lastname = lastname;
+ this.address = address;
+ this.photo = ResourceLoader.instance().getResourceAsStream(photoPath);
+ }
+
+ public Person(String firstname, String lastname, String address)
+ {
+ this.firstname = firstname;
+ this.lastname = lastname;
+ this.address = address;
+ }
+
+ public String getAddress()
+ {
+ return address;
+ }
+ public void setAddress(String address)
+ {
+ this.address = address;
+ }
+ public String getFirstname()
+ {
+ return firstname;
+ }
+ public void setFirstname(String firstname)
+ {
+ this.firstname = firstname;
+ }
+ public String getLastname()
+ {
+ return lastname;
+ }
+ public void setLastname(String lastname)
+ {
+ this.lastname = lastname;
+ }
+
+ public InputStream getPhoto() {
+ return photo;
+ }
+}
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/META-INF/MANIFEST.MF
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/META-INF/MANIFEST.MF (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/META-INF/MANIFEST.MF 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/seam.properties
===================================================================
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/pom.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/pom.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,237 @@
+<?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">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>mail</artifactId>
+ <groupId>org.jboss.seam.examples</groupId>
+ <version>2.3.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-tests</artifactId>
+ <name>Mail Integration Tests Module</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.embedded</groupId>
+ <artifactId>jboss-embedded-all</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-deployers-client-spi</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-deployers-core-spi</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam.embedded</groupId>
+ <artifactId>thirdparty-all</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam.embedded</groupId>
+ <artifactId>hibernate-all</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.testng</groupId>
+ <artifactId>testng</artifactId>
+ <classifier>jdk15</classifier>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <type>ejb</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam</artifactId>
+ <type>ejb</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-mail</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-pdf</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-excel</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-ui</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.seleniumhq.selenium.server</groupId>
+ <artifactId>selenium-server</artifactId>
+ <classifier>standalone</classifier>
+ </dependency>
+ <dependency>
+ <groupId>org.seleniumhq.selenium.client-drivers</groupId>
+ <artifactId>selenium-java-client-driver</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>functional-tests</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.subethamail</groupId>
+ <artifactId>subethasmtp-wiser</artifactId>
+ <version>1.2</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <testResources>
+ <testResource>
+ <directory>src/test/resources</directory>
+ <filtering>true</filtering>
+ </testResource>
+ <testResource>
+ <directory>src/test/bootstrap</directory>
+ <filtering>false</filtering>
+ </testResource>
+ <testResource> <!-- this takes datasource mail-ds.xml -->
+ <directory>${basedir}/../mail-ear/src/main/resources</directory>
+ <filtering>true</filtering>
+ </testResource>
+ <testResource> <!-- this takes themes aka *.properties -->
+ <directory>${basedir}/../mail-web/src/main/resources</directory>
+ <filtering>true</filtering>
+ </testResource>
+ </testResources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skipTests>false</skipTests>
+ <argLine>-Dsun.lang.ClassLoader.allowArraySyntax=true -Xms512m -Xmx512m</argLine>
+ <additionalClasspathElements>
+ <additionalClasspathElement>${basedir}/../mail-web/src/main/webapp</additionalClasspathElement>
+ </additionalClasspathElements>
+ <suiteXmlFiles>
+ <suiteXmlFile>src/test/resources-integration/testng.xml</suiteXmlFile>
+ </suiteXmlFiles>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-seam-bootstrap</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-embedded-bootstrap</artifactId>
+ <version>${project.version}</version>
+ <type>jar</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>${basedir}/src/test</outputDirectory>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-clean-plugin</artifactId>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>${basedir}/src/test/META-INF/</directory>
+ </fileset>
+ <fileset>
+ <directory>${basedir}/src/test/bootstrap</directory>
+ </fileset>
+ </filesets>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>ftest-jbossas</id>
+ <properties>
+ <example.context.path>seam-mail</example.context.path>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jboss-maven-plugin</artifactId>
+ <configuration>
+ <jbossHome>${jboss.home}</jbossHome>
+ <serverName>${jboss.domain}</serverName>
+ <fileNames>
+ <param>${basedir}/../mail-ear/target/seam-mail.ear</param>
+ </fileNames>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>selenium-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>failsafe-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>ftest-tomcat</id>
+ <properties>
+ <example.context.path>jboss-seam-mail</example.context.path>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>selenium-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>failsafe-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+</project>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/MailTest.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/MailTest.java (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/MailTest.java 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,631 @@
+package org.jboss.seam.example.mail.test;
+
+import static javax.mail.Message.RecipientType.BCC;
+import static javax.mail.Message.RecipientType.CC;
+
+import java.io.InputStream;
+
+import javax.faces.FacesException;
+import javax.faces.context.FacesContext;
+import javax.mail.internet.AddressException;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.document.ByteArrayDocumentData;
+import org.jboss.seam.document.DocumentData;
+import org.jboss.seam.example.mail.Person;
+import org.jboss.seam.mail.MailSession;
+import org.jboss.seam.mail.ui.UIAttachment;
+import org.jboss.seam.mail.ui.UIMessage;
+import org.jboss.seam.mock.MockTransport;
+import org.jboss.seam.mock.SeamTest;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+/**
+ * @author Pete Muir
+ *
+ */
+public class MailTest extends SeamTest
+{
+
+ @Test
+ public void testSimple() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+ setValue("#{person.firstname}", "Pete");
+ setValue("#{person.lastname}", "Muir");
+ setValue("#{person.address}", "test at example.com");
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ MimeMessage renderedMessage = getRenderedMailMessage("/simple.xhtml");
+
+ Assert.assertTrue(MailSession.instance().getTransport() instanceof MockTransport);
+
+ // Test the headers
+
+ Assert.assertNotNull(renderedMessage);
+ Assert.assertEquals(renderedMessage.getAllRecipients().length, 1);
+ Assert.assertTrue(renderedMessage.getAllRecipients()[0] instanceof InternetAddress);
+ InternetAddress to = (InternetAddress) renderedMessage.getAllRecipients()[0];
+ Assert.assertEquals(to.getAddress(), "test at example.com");
+ Assert.assertEquals(to.getPersonal(), "Pete Muir");
+ Assert.assertEquals(renderedMessage.getFrom().length, 1);
+ Assert.assertTrue(renderedMessage.getFrom()[0] instanceof InternetAddress);
+ InternetAddress from = (InternetAddress) renderedMessage.getFrom()[0];
+ Assert.assertEquals(from.getAddress(), "peter at example.com");
+ Assert.assertEquals(from.getPersonal(), "Peter");
+ Assert.assertEquals(renderedMessage.getSubject(), "Try out Seam!");
+ Assert.assertNull(renderedMessage.getHeader("Precedence"));
+ Assert.assertNull(renderedMessage.getHeader("X-Priority"));
+ Assert.assertNull(renderedMessage.getHeader("Priority"));
+ Assert.assertNull(renderedMessage.getHeader("Importance"));
+ Assert.assertNull(renderedMessage.getHeader("Disposition-Notification-To"));
+
+ // Check the body
+
+ Assert.assertNotNull(renderedMessage.getContent());
+ Assert.assertTrue(renderedMessage.getContent() instanceof MimeMultipart);
+ MimeMultipart body = (MimeMultipart) renderedMessage.getContent();
+ Assert.assertEquals(body.getCount(), 1);
+ Assert.assertNotNull(body.getBodyPart(0));
+ Assert.assertTrue(body.getBodyPart(0) instanceof MimeBodyPart);
+ MimeBodyPart bodyPart = (MimeBodyPart) body.getBodyPart(0);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertEquals(bodyPart.getDisposition(), "inline");
+ Assert.assertTrue(bodyPart.isMimeType("text/html"));
+ }
+ }.run();
+
+ }
+
+ @Test
+ public void testAttachment() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+ setValue("#{person.firstname}", "Gavin");
+ setValue("#{person.lastname}", "King");
+ setValue("#{person.address}", "gavin at king.com");
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ MimeMessage renderedMessage = getRenderedMailMessage("/attachment.xhtml");
+
+ // Test the headers
+
+ InternetAddress to = (InternetAddress) renderedMessage.getAllRecipients()[0];
+ Assert.assertEquals(to.getAddress(), "gavin at king.com");
+ Assert.assertEquals(to.getPersonal(), "Gavin King");
+ InternetAddress from = (InternetAddress) renderedMessage.getFrom()[0];
+ Assert.assertEquals(from.getAddress(), "do-not-reply at jboss.com");
+ Assert.assertEquals(from.getPersonal(), "Seam");
+ Assert.assertEquals(renderedMessage.getSubject(), "Try out Seam!");
+ MimeMultipart body = (MimeMultipart) renderedMessage.getContent();
+
+ Assert.assertEquals(body.getCount(), 4); //3 Attachments and 1 MimeMultipart
+
+ // The root multipart/related
+ Assert.assertNotNull(body.getBodyPart(0));
+ Assert.assertTrue(body.getBodyPart(0) instanceof MimeBodyPart);
+ MimeBodyPart bodyPart = (MimeBodyPart) body.getBodyPart(0);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertTrue(bodyPart.getContent() instanceof MimeMultipart);
+ Assert.assertTrue(bodyPart.isMimeType("multipart/related"));
+
+ MimeMultipart attachments = (MimeMultipart) bodyPart.getContent();
+
+ Assert.assertEquals(attachments.getCount(), 3); //2 Attachments and 1 MimeMultipart
+
+ // Attachment 0 (the actual message)
+ Assert.assertNotNull(attachments.getBodyPart(0));
+ Assert.assertTrue(attachments.getBodyPart(0) instanceof MimeBodyPart);
+ bodyPart = (MimeBodyPart) attachments.getBodyPart(0);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertTrue(bodyPart.isMimeType("text/html"));
+ Assert.assertEquals(bodyPart.getDisposition(), "inline");
+
+ // Inline Attachment 1 // Attachment Jboss Logo
+ Assert.assertNotNull(attachments.getBodyPart(1));
+ Assert.assertTrue(attachments.getBodyPart(1) instanceof MimeBodyPart);
+ bodyPart = (MimeBodyPart) attachments.getBodyPart(1);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertTrue(bodyPart.getContent() instanceof InputStream);
+ Assert.assertEquals(bodyPart.getFileName(), "jboss.jpg");
+ Assert.assertTrue(bodyPart.isMimeType("image/jpeg"));
+ Assert.assertEquals(bodyPart.getDisposition(), "inline");
+ Assert.assertNotNull(bodyPart.getContentID());
+
+ // Inline Attachment 1 // Attachment Gavin Pic
+ Assert.assertNotNull(attachments.getBodyPart(2));
+ Assert.assertTrue(attachments.getBodyPart(2) instanceof MimeBodyPart);
+ bodyPart = (MimeBodyPart) attachments.getBodyPart(2);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertTrue(bodyPart.getContent() instanceof InputStream);
+ Assert.assertEquals(bodyPart.getFileName(), "Gavin_King.jpg");
+ Assert.assertTrue(bodyPart.isMimeType("image/png"));
+ Assert.assertEquals(bodyPart.getDisposition(), "inline");
+ Assert.assertNotNull(bodyPart.getContentID());
+
+ // Root Attachment 0
+ Assert.assertNotNull(body.getBodyPart(1));
+ Assert.assertTrue(body.getBodyPart(1) instanceof MimeBodyPart);
+ bodyPart = (MimeBodyPart) body.getBodyPart(1);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertTrue( bodyPart.getContent() instanceof InputStream);
+ Assert.assertEquals(bodyPart.getFileName(), "numbers.csv");
+ Assert.assertTrue(bodyPart.isMimeType("content/unknown"));
+ Assert.assertEquals(bodyPart.getDisposition(), "attachment");
+ Assert.assertNull(bodyPart.getContentID());
+
+ // Root Attachment 1
+ Assert.assertNotNull(body.getBodyPart(2));
+ Assert.assertTrue(body.getBodyPart(2) instanceof MimeBodyPart);
+ bodyPart = (MimeBodyPart) body.getBodyPart(2);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertTrue(bodyPart.getContent() instanceof String);
+ Assert.assertEquals(bodyPart.getFileName(), "whyseam.pdf");
+ Assert.assertEquals(bodyPart.getDisposition(), "attachment");
+ Assert.assertNull(bodyPart.getContentID());
+
+ // Root Attachment 3
+ Assert.assertNotNull(body.getBodyPart(3));
+ Assert.assertTrue(body.getBodyPart(3) instanceof MimeBodyPart);
+ bodyPart = (MimeBodyPart) body.getBodyPart(3);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertEquals(bodyPart.getFileName(), "excel.xls");
+ Assert.assertTrue(bodyPart.isMimeType("application/vnd.ms-excel"));
+ Assert.assertEquals(bodyPart.getDisposition(), "attachment");
+ Assert.assertNull(bodyPart.getContentID());
+
+ }
+ }.run();
+
+ }
+
+ /**
+ * This test is needed since the PDF is not rendered in the attachment test.
+ * If PDF rendering is supported in a test environment, then this test can be
+ * removed.
+ */
+ @Test
+ public void testPdfAttachment() throws Exception
+ {
+ new FacesRequest()
+ {
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ UIAttachment attachment = new UIAttachment();
+ attachment.setFileName("filename.pdf");
+ UIMessage message = new UIMessage();
+ attachment.setParent(message);
+ message.setMailSession(MailSession.instance());
+ DocumentData doc = new ByteArrayDocumentData("filename", new DocumentData.DocumentType("pdf", "application/pdf"), new byte[] {});
+ attachment.setValue(doc);
+ attachment.encodeEnd(FacesContext.getCurrentInstance());
+
+ // verify we built the message
+ Assert.assertEquals(message.getAttachments().size(), 1);
+ MimeBodyPart bodyPart = message.getAttachments().get(0);
+ Assert.assertEquals(bodyPart.getFileName(), "filename.pdf");
+ Assert.assertEquals(bodyPart.getDisposition(),"attachment");
+ }
+ }.run();
+ }
+
+ @Test
+ public void testHtml() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+ setValue("#{person.firstname}", "Pete");
+ setValue("#{person.lastname}", "Muir");
+ setValue("#{person.address}", "test at example.com");
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ MimeMessage renderedMessage = getRenderedMailMessage("/html.xhtml");
+
+ // Test the standard headers
+
+ InternetAddress to = (InternetAddress) renderedMessage.getAllRecipients()[0];
+ Assert.assertEquals(to.getAddress(), "test at example.com");
+ Assert.assertEquals(to.getPersonal(), "Pete Muir");
+ InternetAddress from = (InternetAddress) renderedMessage.getFrom()[0];
+ Assert.assertEquals(from.getAddress(), "do-not-reply at jboss.com");
+ Assert.assertEquals(from.getPersonal(), "Seam");
+ Assert.assertEquals(renderedMessage.getSubject(), "Seam Mail");
+
+ // Test the extra headers
+
+ // Importance
+ Assert.assertNotNull(renderedMessage.getHeader("X-Priority"));
+ Assert.assertNotNull(renderedMessage.getHeader("Priority"));
+ Assert.assertNotNull(renderedMessage.getHeader("Importance"));
+ Assert.assertEquals(renderedMessage.getHeader("X-Priority").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("Priority").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("Importance").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("X-Priority")[0], "5");
+ Assert.assertEquals(renderedMessage.getHeader("Priority")[0], "Non-urgent");
+ Assert.assertEquals(renderedMessage.getHeader("Importance")[0], "low");
+
+ // read receipt
+ Assert.assertNotNull(renderedMessage.getHeader("Disposition-Notification-To"));
+ Assert.assertEquals(renderedMessage.getHeader("Disposition-Notification-To").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("Disposition-Notification-To")[0], "Seam <do-not-reply at jboss.com>");
+
+ // m:header
+ Assert.assertNotNull(renderedMessage.getHeader("X-Sent-From"));
+ Assert.assertEquals(renderedMessage.getHeader("X-Sent-From").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("X-Sent-From")[0], "Seam");
+
+ MimeMultipart body = (MimeMultipart) renderedMessage.getContent();
+
+ // Check the alternative facet
+ Assert.assertTrue(renderedMessage.getContentType().startsWith("multipart/mixed"));
+ Assert.assertEquals(body.getCount(), 1);
+ MimeBodyPart bodyPart = (MimeBodyPart) body.getBodyPart(0);
+ Assert.assertTrue(bodyPart.getContentType().startsWith("multipart/alternative"));
+ Assert.assertTrue(bodyPart.getContent() instanceof MimeMultipart);
+ MimeMultipart bodyParts = (MimeMultipart) bodyPart.getContent();
+ Assert.assertEquals(bodyParts.getCount(), 2);
+ Assert.assertTrue(bodyParts.getBodyPart(0) instanceof MimeBodyPart);
+ Assert.assertTrue(bodyParts.getBodyPart(1) instanceof MimeBodyPart);
+ MimeBodyPart alternative = (MimeBodyPart) bodyParts.getBodyPart(0);
+ MimeBodyPart html = (MimeBodyPart) bodyParts.getBodyPart(1);
+ Assert.assertTrue(alternative.isMimeType("text/plain"));
+ Assert.assertEquals(alternative.getDisposition(), "inline");
+ Assert.assertTrue(html.isMimeType("text/html"));
+ Assert.assertEquals(html.getDisposition(), "inline");
+
+ }
+ }.run();
+
+ }
+
+
+ @Test
+ public void testPlain() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+ setValue("#{person.firstname}", "Pete");
+ setValue("#{person.lastname}", "Muir");
+ setValue("#{person.address}", "test at example.com");
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ MimeMessage renderedMessage = getRenderedMailMessage("/plain.xhtml");
+
+ // Test the standard headers
+
+ InternetAddress to = (InternetAddress) renderedMessage.getAllRecipients()[0];
+ Assert.assertEquals(to.getAddress(), "test at example.com");
+ Assert.assertEquals(to.getPersonal(), "Pete Muir");
+ InternetAddress from = (InternetAddress) renderedMessage.getFrom()[0];
+ Assert.assertEquals(from.getAddress(), "do-not-reply at jboss.com");
+ Assert.assertEquals(from.getPersonal(), "Seam");
+ Assert.assertEquals(renderedMessage.getReplyTo().length, 1);
+ Assert.assertTrue(renderedMessage.getReplyTo()[0] instanceof InternetAddress);
+ InternetAddress replyTo = (InternetAddress) renderedMessage.getReplyTo()[0];
+ Assert.assertEquals(replyTo.getAddress(), "another.address at jboss.org");
+ Assert.assertEquals(replyTo.getPersonal(), "JBoss");
+ Assert.assertEquals(renderedMessage.getRecipients(CC).length, 1);
+ Assert.assertTrue(renderedMessage.getRecipients(CC)[0] instanceof InternetAddress);
+ InternetAddress cc = (InternetAddress) renderedMessage.getRecipients(CC)[0];
+ Assert.assertEquals(cc.getAddress(), "test at example.com");
+ Assert.assertEquals(cc.getPersonal(), "Pete Muir");
+ Assert.assertEquals(renderedMessage.getRecipients(BCC).length, 1);
+ Assert.assertTrue(renderedMessage.getRecipients(BCC)[0] instanceof InternetAddress);
+ InternetAddress bcc = (InternetAddress) renderedMessage.getRecipients(CC)[0];
+ Assert.assertEquals(bcc.getAddress(), "test at example.com");
+ Assert.assertEquals(bcc.getPersonal(), "Pete Muir");
+ Assert.assertEquals(renderedMessage.getHeader("Precedence")[0], "bulk");
+ // Importance
+ Assert.assertNotNull(renderedMessage.getHeader("X-Priority"));
+ Assert.assertNotNull(renderedMessage.getHeader("Priority"));
+ Assert.assertNotNull(renderedMessage.getHeader("Importance"));
+ Assert.assertEquals(renderedMessage.getHeader("X-Priority").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("Priority").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("Importance").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("X-Priority")[0], "1");
+ Assert.assertEquals(renderedMessage.getHeader("Priority")[0], "Urgent");
+ Assert.assertEquals(renderedMessage.getHeader("Importance")[0], "high");
+ Assert.assertEquals(renderedMessage.getSubject(), "Plain text email sent by Seam");
+
+ // Check the body
+
+ Assert.assertNotNull(renderedMessage.getContent());
+ MimeMultipart body = (MimeMultipart) renderedMessage.getContent();
+ Assert.assertEquals(body.getCount(), 1);
+ MimeBodyPart bodyPart = (MimeBodyPart) body.getBodyPart(0);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertEquals(bodyPart.getDisposition(), "inline");
+ Assert.assertTrue(bodyPart.isMimeType("text/plain"));
+ }
+ }.run();
+ }
+
+ @Test
+ public void testAttachmentErrors() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ Person person = (Person) getValue("#{person}");
+
+ person.setFirstname("Pete");
+ person.setLastname("Muir");
+ person.setAddress("test at example.com");
+
+ // Test for an unavailable attachment
+
+ Contexts.getEventContext().set("attachment", "/foo.pdf");
+
+ }
+ }.run();
+ }
+
+ @Test
+ public void testAddressValidation() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ Person person = (Person) getValue("#{person}");
+
+ person.setFirstname("Pete");
+ person.setLastname("Muir");
+ boolean exceptionThrown = false;
+
+ person.setAddress("testexample.com");
+
+ try
+ {
+ getRenderedMailMessage("/org/jboss/seam/example/mail/test/errors2.xhtml");
+ }
+ catch (FacesException e)
+ {
+ Assert.assertTrue(e.getCause() instanceof AddressException);
+ AddressException ae = (AddressException) e.getCause();
+ Assert.assertTrue(ae.getMessage().startsWith("Missing final '@domain'"));
+ exceptionThrown = true;
+ }
+ Assert.assertTrue(exceptionThrown);
+
+ }
+ }.run();
+ }
+
+ //JBSEAM-2109
+ //@Test
+ public void testReplyToErrors() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ Person person = (Person) getValue("#{person}");
+
+ person.setFirstname("Pete");
+ person.setLastname("Muir");
+ person.setAddress("test at example.com");
+
+ boolean exceptionThrown = false;
+
+
+
+ try
+ {
+ getRenderedMailMessage("/org/jboss/seam/example/mail/test/errors3.xhtml");
+ }
+ catch (Exception e)
+ {
+ Assert.assertTrue(e.getCause() instanceof AddressException);
+ AddressException ae = (AddressException) e.getCause();
+ System.out.println(ae.getMessage());
+ Assert.assertTrue(ae.getMessage().startsWith("Email cannot have more than one Reply-to address"));
+ exceptionThrown = true;
+ }
+ Assert.assertTrue(exceptionThrown);
+
+ }
+ }.run();
+ }
+
+ @Test
+ public void testFromErrors() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ Person person = (Person) getValue("#{person}");
+
+ person.setFirstname("Pete");
+ person.setLastname("Muir");
+ person.setAddress("test at example.com");
+
+ boolean exceptionThrown = false;
+
+ try
+ {
+ getRenderedMailMessage("/org/jboss/seam/example/mail/test/errors4.xhtml");
+ }
+ catch (FacesException e)
+ {
+ Assert.assertTrue(e.getCause() instanceof AddressException);
+ AddressException ae = (AddressException) e.getCause();
+ Assert.assertTrue(ae.getMessage().startsWith("Email cannot have more than one from address"));
+ exceptionThrown = true;
+ }
+ Assert.assertTrue(exceptionThrown);
+
+ }
+ }.run();
+ }
+
+ @Test
+ public void testSanitization() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ Contexts.getEventContext().set("name", "Pete\nMuir");
+ MimeMessage renderedMessage = getRenderedMailMessage("/org/jboss/seam/example/mail/test/sanitization.xhtml");
+ Assert.assertEquals(renderedMessage.getSubject(), "Try out Seam!");
+ InternetAddress to = (InternetAddress) renderedMessage.getAllRecipients()[0];
+ Assert.assertEquals(to.getAddress(), "peter at email.tld");
+ Assert.assertEquals(to.getPersonal(), "Pete");
+ Assert.assertEquals(renderedMessage.getFrom().length, 1);
+ Assert.assertTrue(renderedMessage.getFrom()[0] instanceof InternetAddress);
+ InternetAddress from = (InternetAddress) renderedMessage.getFrom()[0];
+ Assert.assertEquals(from.getAddress(), "peter at example.com");
+ Assert.assertEquals(from.getPersonal(), "Pete");
+ Assert.assertNotNull(renderedMessage.getHeader("Pete"));
+ Assert.assertEquals(renderedMessage.getHeader("Pete").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("Pete")[0], "roll over");
+ }
+ }.run();
+ }
+
+ @Test
+ public void testTemplating() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+ setValue("#{person.firstname}", "Pete");
+ setValue("#{person.lastname}", "Muir");
+ setValue("#{person.address}", "test at example.com");
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ MimeMessage renderedMessage = getRenderedMailMessage("/templating.xhtml");
+
+ // Test the standard headers
+
+ InternetAddress to = (InternetAddress) renderedMessage.getAllRecipients()[0];
+ Assert.assertEquals(to.getAddress(), "test at example.com");
+ Assert.assertEquals(to.getPersonal(), "Pete Muir");
+ InternetAddress from = (InternetAddress) renderedMessage.getFrom()[0];
+ Assert.assertEquals(from.getAddress(), "do-not-reply at jboss.com");
+ Assert.assertEquals(from.getPersonal(), "Seam");
+ Assert.assertEquals(renderedMessage.getSubject(), "Templating with Seam Mail");
+ Assert.assertNull(renderedMessage.getHeader("X-Priority"));
+ Assert.assertNull(renderedMessage.getHeader("Priority"));
+ Assert.assertNull(renderedMessage.getHeader("Importance"));
+
+ // Check the body
+
+ MimeMultipart body = (MimeMultipart) renderedMessage.getContent();
+
+ // Check the alternative facet
+ Assert.assertTrue(renderedMessage.getContentType().startsWith("multipart/mixed"));
+ Assert.assertEquals(body.getCount(), 1);
+ MimeBodyPart bodyPart = (MimeBodyPart) body.getBodyPart(0);
+ Assert.assertTrue(bodyPart.getContentType().startsWith("multipart/alternative"));
+ Assert.assertTrue(bodyPart.getContent() instanceof MimeMultipart);
+ MimeMultipart bodyParts = (MimeMultipart) bodyPart.getContent();
+ Assert.assertEquals(bodyParts.getCount(), 2);
+ Assert.assertTrue(bodyParts.getBodyPart(0) instanceof MimeBodyPart);
+ Assert.assertTrue(bodyParts.getBodyPart(1) instanceof MimeBodyPart);
+ MimeBodyPart alternative = (MimeBodyPart) bodyParts.getBodyPart(0);
+ MimeBodyPart html = (MimeBodyPart) bodyParts.getBodyPart(1);
+ Assert.assertTrue(alternative.isMimeType("text/plain"));
+ Assert.assertEquals(alternative.getDisposition(), "inline");
+ Assert.assertTrue(html.isMimeType("text/html"));
+ Assert.assertEquals(html.getDisposition(), "inline");
+ }
+ }.run();
+ }
+}
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/selenium/SeleniumMailTest.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/selenium/SeleniumMailTest.java (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/selenium/SeleniumMailTest.java 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,148 @@
+package org.jboss.seam.example.mail.test.selenium;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.subethamail.wiser.Wiser;
+import org.subethamail.wiser.WiserMessage;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
+import static org.testng.AssertJUnit.assertFalse;
+
+public class SeleniumMailTest extends SeamSeleniumTest
+{
+ public static final String HOME_PAGE = "/index.seam";
+ public static final String HOME_PAGE_TITLE = "Seam Mail";
+ public static final String ENVELOPE_SENDER = "peter at example.com|do-not-reply at jboss.com";
+
+ public static final String FIRSTNAME_INPUT = "id=emailform:firstname";
+ public static final String FIRSTNAME = "John";
+ public static final String LASTNAME_INPUT = "id=emailform:lastname";
+ public static final String LASTNAME = "Smith";
+ public static final String ADDRESS_INPUT = "id=emailform:address";
+ public static final String ADDRESS = "john.smith at localhost";
+ public static final String SERVLET_NAME_INPUT = "id=name";
+ public static final String SERVLET_ADDRESS_INPUT = "id=email";
+
+ public static final String SEND_SIMPLE_BUTTON = "id=emailform:sendSimple";
+ public static final String SEND_PLAIN_BUTTON = "id=emailform:sendPlain";
+ public static final String SEND_HTML_BUTTON = "id=emailform:sendHtml";
+ public static final String SEND_ATTACHMENT_BUTTON = "id=emailform:sendAttachment";
+ public static final String SEND_ASYNCHRONOUS_BUTTON = "id=emailform:sendAsynchronous";
+ public static final String SEND_TEMPLATE_BUTTON = "id=emailform:sendTemplate";
+ public static final String SEND_SERVLET_BUTTON = "id=sendServlet";
+
+ protected Wiser wiser;
+
+ @BeforeMethod
+ @Override
+ public void setUp()
+ {
+ super.setUp();
+ browser.open(CONTEXT_PATH + HOME_PAGE);
+ }
+
+ /**
+ * We restart SMTP after each Method, because Wiser doesn't have mechanism to flush recieved emails.
+ */
+ @BeforeMethod
+ public void startSMTP()
+ {
+ wiser = new Wiser();
+ wiser.setPort(2525);
+ wiser.start();
+ }
+
+ @AfterMethod
+ public void stopSMTP()
+ {
+ wiser.stop();
+ }
+
+ /**
+ * Place holder - just verifies that example deploys
+ */
+ @Test
+ public void homePageLoadTest()
+ {
+ assertEquals("Unexpected page title.", HOME_PAGE_TITLE, browser.getTitle());
+ }
+
+ @DataProvider(name = "sendMethods")
+ public Object[][] mailTest() {
+ return new Object[][] {
+ {SEND_SIMPLE_BUTTON, new String[] {"Content-Type: text/html; charset=ISO-8859-1", "Content-Disposition: inline", "<p>Dear " + FIRSTNAME + ",</p>"}},
+ {SEND_PLAIN_BUTTON, new String[] {"This is a plain text, email."}},
+ {SEND_HTML_BUTTON, new String[] {"Subject: Seam Mail", "Content-Type: multipart/mixed;", "Content-Type: multipart/alternative;", "Content-Type: text/plain; charset=ISO-8859-1", "This is the alternative text body for mail readers that don't support html", "Content-Type: text/html; charset=ISO-8859-1", "<p>This is an example <i>HTML</i> email sent by Seam.</p>"}},
+ {SEND_ATTACHMENT_BUTTON, new String[] {"Content-Type: multipart/mixed;","Content-Type: application/octet-stream; name=jboss.jpg", "/9j/4AAQSkZJRgABA"/*jpeg start*/, "Content-Type: application/octet-stream; name=numbers.csv", "3,Three,treis,trois", "Content-Type: image/png; name=" + FIRSTNAME + "_" + LASTNAME + ".jpg", "iVBORw0KGgo" /*png start*/ }},
+ {SEND_ASYNCHRONOUS_BUTTON, new String[] {"Content-Type: multipart/mixed;", "Content-Type: text/html; charset=ISO-8859-1", "Content-Disposition: inline", "<p>Dear " + FIRSTNAME + ",</p>"}},
+ {SEND_TEMPLATE_BUTTON, new String[] {"Subject: Templating with Seam Mail", "Content-Type: multipart/mixed;", "Content-Type: multipart/alternative;", "Content-Type: text/plain; charset=ISO-8859-1", "Sorry, your mail reader doesn't support html.", "Content-Type: text/html; charset=ISO-8859-1", "<p>Here's a dataTable</p><table>", "<td>Saturday</td>"}},
+ {SEND_SERVLET_BUTTON, new String[] {"Content-Type: multipart/mixed;", "Content-Disposition: inline", "Dear John Smith,", "This is a plain text, email."}}
+ };
+ }
+
+ /**
+ * Sends a mail and verifies it was delivered
+ */
+ @Test(dataProvider = "sendMethods")
+ public void mailTest(String buttonToClick, String[] expectedMessageContents) {
+ fillInInputs();
+ sendEmail(buttonToClick);
+ checkDelivered(expectedMessageContents);
+ }
+
+ /**
+ * Fills in html text inputs.
+ */
+ private void fillInInputs()
+ {
+ browser.type(FIRSTNAME_INPUT, FIRSTNAME);
+ browser.type(LASTNAME_INPUT, LASTNAME);
+ browser.type(ADDRESS_INPUT, ADDRESS);
+ browser.type(SERVLET_NAME_INPUT, FIRSTNAME + " " + LASTNAME);
+ browser.type(SERVLET_ADDRESS_INPUT, ADDRESS);
+ }
+
+ /**
+ * Sends an email by clicking on specified button. If the send method is asynchronous,
+ * waits for the associated action to take place. It assures that the email was sent
+ * by verifying appropriate message.
+ * @param buttonToClick
+ */
+ private void sendEmail(String buttonToClick)
+ {
+ browser.clickAndWait(buttonToClick);
+ if (buttonToClick.equals(SEND_ASYNCHRONOUS_BUTTON)) {
+ assertTrue(browser.isTextPresent("Seam Email")); // asynchronous email send produces no message, so we just check that we didn't end up on a debug page
+ try
+ {
+ Thread.sleep(4000);
+ }
+ catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+ } else {
+ assertTrue("Expected message about successfuly sent mail. See also JBSEAM-3769.", browser.isTextPresent("Email sent successfully"));
+ }
+ }
+
+ /**
+ * Checks that the expected email was delivered.
+ * @param expectedMessageContents
+ */
+ private void checkDelivered(String[] expectedMessageContents)
+ {
+ assertFalse("Expected a message", wiser.getMessages().isEmpty());
+ WiserMessage message = wiser.getMessages().get(0); // although "send plain text" example sends 3 mails (To:, CC:, Bcc:) Wiser cannot distinquish between them so we just check the first mail.
+ assertEquals(ADDRESS, message.getEnvelopeReceiver());
+ assertTrue("Envelope sender (" + message.getEnvelopeSender() + ") doesn't match expected one (" + ENVELOPE_SENDER + ")", message.getEnvelopeSender().matches(ENVELOPE_SENDER));
+
+ for (String expectedMessageContent: expectedMessageContents) {
+ assertTrue("Didn't find expected text (" + expectedMessageContent + ") in the received email.", new String(message.getData()).contains(expectedMessageContent));
+ }
+ }
+
+}
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/WEB-INF/components.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/WEB-INF/components.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/WEB-INF/components.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,21 @@
+<components xmlns="http://jboss.com/products/seam/components"
+ xmlns:core="http://jboss.com/products/seam/core"
+ xmlns:async="http://jboss.com/products/seam/async"
+ xmlns:mail="http://jboss.com/products/seam/mail"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation=
+ "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.3.xsd
+ http://jboss.com/products/seam/async http://jboss.com/products/seam/async-2.3.xsd
+ http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.3.xsd
+ http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.3.xsd">
+
+
+ <core:init debug="true" jndi-pattern="#{ejbName}/local" />
+
+ <!-- If you need to alter the SMTP gateway, comment out this mail-session, -->
+ <!--<mail:mail-session host="localhost" port="2525" /> -->
+
+ <!-- uncomment this one and set the host attribute to the name or IP address of your SMTP gateway-->
+ <mail:mail-session host="localhost" tls="false" port="2525" ssl="false" />
+
+</components>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors1.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors1.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors1.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,10 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+ <m:from name="Peter">peter at example.com</m:from>
+ <m:to name="Peter">peter at email.tld</m:to>
+ <m:subject>Try out Seam!</m:subject>
+ <m:attachment value="#{attachment}" />
+ <m:body>A mail message to test exception handling</m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors2.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors2.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors2.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,9 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+ <m:from name="Peter" address="peter at example.com" />
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>Try out Seam!</m:subject>
+ <m:body>A mail message to test exception handling</m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors3.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors3.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors3.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,11 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+ <m:replyTo address="foo at bar.com" />
+ <m:replyTo address="bar at bar.com" />
+ <m:from name="Peter" address="peter at example.com" />
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>Try out Seam!</m:subject>
+ <m:body>A mail message to test exception handling</m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors4.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors4.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors4.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,10 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+ <m:from address="bar at bar.com" />
+ <m:from name="Peter" address="peter at example.com" />
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>Try out Seam!</m:subject>
+ <m:body>A mail message to test exception handling</m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/sanitization.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/sanitization.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/sanitization.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,14 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+ <m:from name="#{name}">peter at example.com
+foo</m:from>
+ <m:to name="#{name}">peter at email.tld
+bar</m:to>
+ <m:subject>Try out
+ Seam!</m:subject>
+ <m:header name="#{name}">roll
+ over</m:header>
+ <m:body>A mail message to test sanitization</m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/seam.properties
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/seam.properties (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/seam.properties 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,3 @@
+#debug is explicitly disabled in test to avoid JBIDE-3623
+#Thu Dec 31 16:24:37 CET 2009
+org.jboss.seam.core.init.debug=false
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-ftest/testng.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-ftest/testng.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-ftest/testng.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,26 @@
+
+ <!--
+ JBoss, Home of Professional Open Source Copyright 2008, Red Hat
+ Middleware LLC, and individual contributors by the @authors tag. See
+ the copyright.txt in the distribution for a full listing of individual
+ contributors. This is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version. This software is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ License for more details. You should have received a copy of the GNU
+ Lesser General Public License along with this software; if not, write
+ to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ -->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Mail example" verbose="2" parallel="false">
+ <test name="mail_jboss">
+ <parameter name="PROPERTY_FILE" value="" />
+ <classes>
+ <class name="org.jboss.seam.example.mail.test.selenium.SeleniumMailTest" />
+ </classes>
+ </test>
+</suite>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-integration/testng.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-integration/testng.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-integration/testng.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,12 @@
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+
+<suite name="Seam Mail Tests" verbose="2" parallel="false">
+
+ <test name="Seam Mail Tests">
+ <parameter name="PROPERTY_FILE" value="" />
+ <classes>
+ <class name="org.jboss.seam.example.mail.test.MailTest" />
+ </classes>
+ </test>
+
+</suite>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/pom.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/pom.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,196 @@
+<?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">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>mail</artifactId>
+ <groupId>org.jboss.seam.examples</groupId>
+ <version>2.3.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-web</artifactId>
+ <packaging>war</packaging>
+ <name>Mail Web Module</name>
+
+ <properties>
+ <!-- filtering property for components.xml -->
+ <jndiPattern>seam-mail/#{ejbName}/local</jndiPattern>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <type>ejb</type>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-jsf2</artifactId>
+ <type>ejb</type>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-mail</artifactId>
+ <exclusions>
+ <exclusion>
+ <artifactId>jboss-seam-ui</artifactId>
+ <groupId>org.jboss.seam</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jsf-facelets</artifactId>
+ <groupId>com.sun.facelets</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jboss-seam</artifactId>
+ <groupId>org.jboss.seam</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-ui-jsf2</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-jul</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-debug-jsf2</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-pdf</artifactId>
+ <exclusions>
+ <exclusion>
+ <artifactId>jboss-seam-ui</artifactId>
+ <groupId>org.jboss.seam</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jsf-facelets</artifactId>
+ <groupId>com.sun.facelets</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jboss-seam</artifactId>
+ <groupId>org.jboss.seam</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-excel</artifactId>
+ <exclusions>
+ <exclusion>
+ <artifactId>jboss-seam-ui</artifactId>
+ <groupId>org.jboss.seam</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jsf-facelets</artifactId>
+ <groupId>com.sun.facelets</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jboss-seam</artifactId>
+ <groupId>org.jboss.seam</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+<!-- <dependency> -->
+<!-- <groupId>com.sun.facelets</groupId> -->
+<!-- <artifactId>jsf-facelets</artifactId> -->
+<!-- </dependency> -->
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <configuration>
+ <webResources>
+ <resource>
+ <directory>src/main/webapp</directory>
+ <filtering>true</filtering>
+ </resource>
+ </webResources>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>tomcat</id>
+ <properties>
+ <!-- filtering property for components.xml -->
+ <jndiPattern>#{ejbName}/local</jndiPattern>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.seam.examples</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <type>ejb</type>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam</artifactId>
+ <type>ejb</type>
+ <scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xpp3</groupId>
+ <artifactId>xpp3_min</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-impl</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <finalName>jboss-seam-mail</finalName>
+ <plugins>
+ <plugin>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-resources</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${basedir}/target/classes</outputDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}/../mail-ear/src/main/resources</directory>
+ <includes>
+ <include>jboss-seam-mail-ds.xml</include>
+ </includes>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/META-INF/MANIFEST.MF
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/META-INF/MANIFEST.MF (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/META-INF/MANIFEST.MF 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/components.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/components.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/components.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,18 @@
+<components xmlns="http://jboss.com/products/seam/components"
+ xmlns:core="http://jboss.com/products/seam/core"
+ xmlns:async="http://jboss.com/products/seam/async"
+ xmlns:mail="http://jboss.com/products/seam/mail"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation=
+ "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.3.xsd
+ http://jboss.com/products/seam/async http://jboss.com/products/seam/async-2.3.xsd
+ http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.3.xsd
+ http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.3.xsd">
+
+
+ <core:init debug="true" jndi-pattern="@jndiPattern@" />
+
+ <!-- If you need to alter the SMTP gateway, comment out this mail-session, -->
+ <!--<mail:mail-session host="localhost" port="2525" /> -->
+
+</components>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/faces-config.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/faces-config.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faces-config version="2.1"
+ xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2:1.xsd">
+
+<!-- <application> -->
+<!-- <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> -->
+<!-- </application> -->
+
+</faces-config>
+
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/pages.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/pages.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/pages.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pages xmlns="http://jboss.com/products/seam/pages"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.3.xsd">
+
+ <page view-id="/index.xhtml">
+ <begin-conversation join="true" />
+ </page>
+
+</pages>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/web.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/web.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/web.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0"
+ xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+ <!-- Seam -->
+
+ <listener>
+ <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
+ </listener>
+
+ <filter>
+ <filter-name>Seam Filter</filter-name>
+ <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>Seam Filter</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+ <context-param>
+ <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+ <param-value>.xhtml</param-value>
+ </context-param>
+
+ <context-param>
+ <param-name>facelets.DEVELOPMENT</param-name>
+ <param-value>true</param-value>
+ </context-param>
+
+ <context-param>
+ <param-name>com.sun.faces.allowTextChildren</param-name>
+ <param-value>true</param-value>
+ </context-param>
+
+ <servlet>
+ <servlet-name>Faces Servlet</servlet-name>
+ <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Faces Servlet</servlet-name>
+ <url-pattern>*.seam</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>Mail Servlet</servlet-name>
+ <servlet-class>org.jboss.seam.example.mail.MailSenderServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Mail Servlet</servlet-name>
+ <url-pattern>/mail/sender</url-pattern>
+ </servlet-mapping>
+
+ <session-config>
+ <session-timeout>10</session-timeout>
+ </session-config>
+
+</web-app>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/attachment.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/attachment.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/attachment.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,28 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+ <m:from name="Seam" address="do-not-reply at jboss.com" />
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>Try out Seam!</m:subject>
+ <m:attachment value="/jboss.jpg" status="jbossLogo" disposition="inline" />
+ <m:attachment value="#{numbers}" />
+ <m:attachment value="#{person.photo}" contentType="image/png" fileName="#{person.firstname}_#{person.lastname}.jpg" disposition="inline" />
+ <m:attachment fileName="whyseam.pdf">
+ <ui:include src="/whyseam.xhtml" />
+ </m:attachment>
+ <m:attachment fileName="excel.xls">
+ <ui:include src="/excel.xhtml" />
+ </m:attachment>
+ <ui:repeat value="#{people}" var="p">
+ <m:attachment value="#{p.photo}" contentType="image/jpeg" fileName="#{p.firstname}_#{p.lastname}.jpg" />
+ </ui:repeat>
+ <m:body>
+ <p><h:outputText value="Dear #{person.firstname}" />,</p>
+ <p>This example email demonstrates how easy it is to add attachments to an email!</p>
+ <p>We can even display attached images inline:</p>
+ <img src="cid:#{jbossLogo.contentId}" />
+ <p>The attached pdf was generated by Seam's PDF library</p>
+ </m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/excel.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/excel.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/excel.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,6 @@
+<e:workbook xmlns:e="http://jboss.com/products/seam/excel" xmlns:f="http://java.sun.com/jsf/core">
+ <e:worksheet name="Developers">
+ <e:cell column="0" row="0" value="Daniel Roth" />
+ <e:cell column="0" row="1" value="Nicklas Karlsson" />
+ </e:worksheet>
+</e:workbook>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/gavin.jpg
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/gavin.jpg (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/gavin.jpg 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,63 @@
+ÿØÿáÅExif
+
+
+
+ÿÀ
+
+
+c¨Ö|:¼TÙÔ\)Ëmìþ×TN.Lu3´I%[ÿÐä3,#/#^.·ÿ
+¦íCqR5íÕ$=ÆRIOÿÓåº3¿hæç&ÿ
+ÛóǸ[
+Îý×z¾)~ÕÞ[åÿ
+
+
+
+%# , #&')*)-0-(0%()(ÿÛ
+
+
+
+(((((((((((((((((((((((((((((((((((((((((((((((((((ÿÀ
+
+
+É©áÜmRçhå¶2¦¹
+cÊÙñ§uEÈiÔ.*ö,´®µÓz²<k:mVhb"hB`a¤s¸ðô®.¬N9>TÌgØRpqtiêêzºªc¨¬µuúÔèÖëUÊÙ¨.¥xSës+/[?D ÖÎÞõ%mfà®|3üâOí
ö´vOÏZÌ¿Û4?µ«?LSEryÆýôG"ûe¨
GG¾Ø"ç`£¯óªäRûÃÖ®þÏ 2izФ
+<{LÝ0@òÇ}e}"Ù¶wfÒtÈã6Än>Wç×o5afãY«)`Z>L6ðïè*ÀY¶£Ë'2ã'`99½:üézÂBóÁöX;+;<âqÌ
+sYyg^c~-ÁÄoF Oã³oð¨ñ$õRЮgÖöBÂ8NÈ
+³îyOF>
+ßq{ÊÔMÀÛù¶Üð¹>4> ³ä >'8Þc¿4^IvG}>ìÁ Áö¯»B
+Y#5íLx]Ký³Cù¼êw¼:¶ÿ
+ÇØäÍ3çPîËråH¢¥ööê
+=)áÉâ)xÞ´é9ÌîÒX¯7Zhlz
+ÀõN;¶*TÈýÝɬöò=óo×üsZ,WAW;tÍsä]¬SY"¥þ&¶YOi(6\¥ºy_;áC5Mm`¶o{$xP«s«ZX\jÖ°,·r#sWµèÛ®ûEm.@纼ìÖb+¼·ßظ'¾®÷¾Ô¯âÓÞ»5í³ËÝYÄ:ÕƯ¯ý¾B±ÆB ðmZðÅÍ&¢ý²Ïq¦/fY µL×Yc,0jç©jJÃ$d·¬ãWº2Ìäú8S3æN1=ÀÏ}&¸M|ióÝßM·Zs4oDµ/ø+¶¿º³øäfúÔ xÿ
+¥ÆâÚà5µÀ;ô#£Z¥Æ,¬«gÉ/L(À âWÈ\:n
+ÏäÓq Ú[Óf_¹~gëS¯%
+¨w)Î{ë\qHKËMë]QãRÆ{
?¬}ÔcòlT®sVm#
µAÚFÁhñöm¬ö}OûhZ
+3Ó·<aÙßÜÅÍðHËô$WgãJyÆõñ®Ñëú 1©Gþf¡]k¬Êª$è<k at v.¾Öøò¶ÃêÙü÷nßBkGÒ¸®mKSk[vÏ)%¼õÄWz7Ø-e8/ÖiGº wæ¶ÑÎ
«¤sÉÚ\ÜÀóHÞðÂL¯Éu´}Æ*ßôA*Ï{Ü`~ P!´K«|6ÅwVTÑýb͵¼ÛÁ$
êøP;µ¿Óâv 9OxxñäGvt¸sN.%
+ÛTMÔ¾Í~¸ÎÉ's
+²ÉªéòBVEV
+ÃÀøàþÚmö¨ÅÄQäÏ+¨;ýÆ,ö½$>Ð-$|µ½Ú<8bHVÏwÏ¢ñÅg}¤ë_·±úñúÔjwrÛƱçÎô7Èÿ
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/html.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/html.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/html.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,22 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ importance="low" requestReadReceipt="true">
+ <m:header name="X-Sent-From" value="Seam" />
+ <m:from name="Seam" address="do-not-reply at jboss.com" />
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>Seam Mail</m:subject>
+ <m:body>
+ <html>
+ <body>
+ <p><b>#{person.firstname},</b></p>
+ <p>This is an example <i>HTML</i> email sent by Seam.</p>
+ <p>It has an alternative text body for mail readers that don't support html.</p>
+ </body>
+ </html>
+ <f:facet name="alternative">
+ <h:outputText>This is the alternative text body for mail readers that don't support html</h:outputText>
+ </f:facet>
+ </m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.html (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.html 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,5 @@
+<html>
+<head>
+ <meta http-equiv="Refresh" content="0; URL=index.seam" />
+</head>
+</html>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:s="http://jboss.com/products/seam/taglib"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <title>Seam Mail</title>
+ <ui:remove><link href="screen.css" rel="stylesheet" type="text/css" /></ui:remove>
+</head>
+<body>
+
+ <h1>Seam Email</h1>
+
+ <p>Welcome to the Seam Email example. This example demonstrates Seam's email templating.</p>
+ <p>You need to enter a name and email address to receive the example emails in the form below.</p>
+
+ <h:form id="emailform" >
+ <h:panelGrid columns="2">
+ <h:outputText value="Name" />
+ <h:panelGroup>
+ <h:inputText value="#{person.firstname}" required="true" id="firstname" />
+ <h:inputText value="#{person.lastname}" required="true" id="lastname" />
+ </h:panelGroup>
+ <h:outputText value="Email Address" />
+ <h:inputText value="#{person.address}" required="true" id="address" />
+ </h:panelGrid>
+ <h:panelGrid>
+ <h:commandButton action="#{mailExample.send}" id="sendSimple" value="Send a simple email" />
+ <h:commandButton action="#{mailExample.sendPlain}" id="sendPlain" value="Send Plain Text Email" />
+ <h:commandButton action="#{mailExample.sendHtml}" id="sendHtml" value="Send HTML Email" />
+ <h:commandButton action="#{mailExample.sendAttachment}" id="sendAttachment" value="Send a simple email with attachment" />
+ <h:commandButton action="#{mailExample.sendAsynchronous}" id="sendAsynchronous" value="Send a simple email asynchronously" />
+ <h:commandButton action="#{mailExample.sendTemplate}" id="sendTemplate" value="Send a templated email" />
+ </h:panelGrid>
+ <h:messages infoStyle="info" errorStyle="error" fatalStyle="fatal" warnStyle="warn" />
+ </h:form>
+
+ <p>You can also send from inside a servlet:</p>
+
+ <form action="#{facesContext.externalContext.requestContextPath}/mail/sender" method="get">
+ <table>
+ <tr>
+ <td>
+ Name
+ </td>
+ <td>
+ <input name="name" id="name" />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ Email Address
+ </td>
+ <td>
+ <input name="email" id="email" />
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>
+ <input type="submit" value="Send" id="sendServlet" />
+ </td>
+ </tr>
+ </table>
+ </form>
+
+ <h2>Help - it's not working!</h2>
+ <ul>
+ <li><b>Setting an SMTP relay</b> - If you have problems sending emails from this example you might have a firewall
+ blocking outgoing email. You'll need to edit <code><mail:mailSession></code>
+ in <code>resources/WEB-INF/components.xml</code> a <code><mail:mailSession></code>,
+ set a SMTP relay to relay via and then run the <code>ant deploy</code> again.</li>
+
+ <li><b>Servers other than JBoss AS</b> - This example deploys GreenMail JBoss Service (from <a href="http://www.icegreen.com/greenmail/">www.icegreen.com/greenmail/</a>
+ - <code>greenmail-jboss-service.sar</code>) to act as an SMTP server (it listens for authenticated
+ connections on <code>localhost:3025</code>). This means the mail example will
+ work out of the box on JBoss AS. If you using another server you may need
+ to set an SMTP relay as described above.</li>
+
+ <li>GreenMail will fail if you have another service using port 3025 (you'll get a errors
+ when the applicaiton is deployed). To get around this you can set a SMTP gateway as
+ described above.</li>
+ </ul>
+</body>
+</html>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/jboss.jpg
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/jboss.jpg (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/jboss.jpg 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,45 @@
+ÿØÿà
+
+
+
+
+ÿÛ
+ÿÄ
+%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ
+ÿÄ
+$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ
+«õ'^Î]ÒÌéûJWÓFçæ¼eÁþƬ?¹.hÊ.ñjíuI¦³M~dU]+[²×¼íîÖöãÌU5$Tóα4.Æ£,ÌpÔï>H}CIñV¯ÈÉ¡jV¬xApú
'| 8
++:ÇÅúN©|ÖÚf©§\Ü¡ÃEÊ;©÷Ps\ÇïÏÄ=/OÂwR[v$í.вÄÄ\
r 9Èé@EWÒmå´Òí¢¿Í($|½
+ÎwµÏ?àÚ¨|Uâ«HÚc¢Hæu.7áôbgÔ(ÏA_iW-ð«Bð
4&Ó~¦
+MºHì%I2Çø%1ËzWS]~d²>ân^gÍxë&íÙ^Þ·v[Íí4Z}á_ðr_üÿ
+sH
+¼Û:§Â×ÃÉrÍ4Þözôò?§|>ðÇùöWЫí°õ)ÎrJ*ÔÚøwæVi#äúûçÃðXOÚSÂtßøGáþi¦éz4:}ªÔ$(c
Q'ó¨l(O;qÅ|%®ø~÷Ã7©m¯ÛKk<ð]ªH0Z)¢I¢£G"8öa_ªÿ
+³QµÛIòÉIŵªRJÝ»ésÙáüÂW§¯Å_åtÕþGÉ5ËÏøçK¹ÐYÅȹD
+§ýhf
+ª9÷9öÅ|ïûfÿ
+[Ë3·æ
+xp;n±^¨_G¦XOsvÊ[ÆÒ»3
+ª2I' Àë^ð?öÓw~&Ö¶vú5è$µiMÕ¹2aBÍD±AVϽtáF<´âì´?7Æã±W_RU&÷~Ý ?àÿ
+½GNQ4dììÖªêé§Ý=µ>Ãø¿ce¥MN2,¢Ý®®[4×g×Có_þ ïû5xÇt__i÷v^ðôâõï&£K&8â'Îð Ç
+|jÑõí\«Á(,±H¤4r.ãR Aàáo°ü%ÔÊðÕ\ç9sJmZòÒÊÊöV[]½ÝÙö_jTâ¬6¡ûªiÃ.íFJI´Ý¯/zýJÚn3µû©ÿ
+ÙÜÃ2ÜÇ4M¼r$«²T0ÜØn£qõ©dø3àùl"µÂk[q8¦@cO8*ìÀó07ãï`g5ÒÑ@¼<k¦IekáÇe,&ÙíÓJDñóe`®ðoMÜõ§/Á.Öá?Wµ-ÒàòÚÜHeÙ,HKìé¸çæºj(Ä<=ã-JÎóÅúªÞiçu¬÷QO%±Îs:xÇ"£Õ>ø_[ðþxoA¼ÐõYkÝ:}>)-/;4°²ìv.À@=kzM&¬ÊåNJpvkTÖéÿ
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/numbers.csv
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/numbers.csv (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/numbers.csv 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,11 @@
+Number,English,Spanish French,
+1,One,uno,un
+2,Two,dos,deux
+3,Three,treis,trois
+4,Four,cuatro,quatre
+5,Five,cinco,cinq
+6,Six,seis,six
+7,Seven,seite,sept
+8,Eight,ocho,huit
+9,Nine,nueve,neuf
+10,Ten,deis,dix
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/plain.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/plain.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/plain.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,16 @@
+<m:message xmlns:m="http://jboss.com/products/seam/mail" importance="high" precedence="bulk">
+
+ <m:from name="Seam" address="do-not-reply at jboss.com" />
+ <m:replyTo name="JBoss" address="another.address at jboss.org" />
+ <m:cc name="#{person.firstname} #{person.lastname}">#{person.address}</m:cc>
+ <m:bcc name="#{person.firstname} #{person.lastname}">#{person.address}</m:bcc>
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>Plain text email sent by Seam</m:subject>
+ <m:body type="plain">Dear #{person.firstname},
+
+This is a plain text, email.
+
+Regards
+
+JBoss Seam Mail</m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/seamlogo.png
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/seamlogo.png (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/seamlogo.png 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,512 @@
+PNG
+
+
+MiCCPPhotoshop ICC profile
+VHUÄÕ
+Hâ (¸gAZU\8îܧµ}zïííû×û¼ççüÎyÏ&æ¢j
+
+Ðzùy8ü@¡PÈ<
+í%b¡½0ã>ÿ3áoà~öü@þÛzð
+¡ATÀ:ص° á´Á18
+çà\ëp`¼ AÈa!:bØ"Î"aH4¤ éQ"ÅÈr¤©Bj]H#ò-r9\@úÛÈ 2ü¼G1²QÔu@¹¨Æ sÑt4]¢kÑ´=¶¢§ÑKèut
+!%2IIkHÛH-¤S¤>ÒiL&ëmÉÞ䲬 ·OûÉÃä·:ÅâL ¢$R¤J5e?å¥2B ªQÍ©Ôª:ZIm vP/S©4u%ÍCˤ-£ÕÐigi÷h/étº ÝEÐÒkèéçéôw
+
+ÇHb(k{§·/L¦ÓÈT0×2goUX*ö*|Ê:V~çªTUsU?ÕyªT«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwRPÏQ_£¾_ýúc
+²
F H£Tc·Æ!Æ2eñXBÖrVë,kMb[²ùìLvûv/{LSCsªf¬ffæqÍƱàð9ÙJÎ!Î
+Î{--?-±Öjf~7ÚzÚ¾ÚbírííëÚïup@,õ:m:÷u º6ºQº
ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046l18cðÌcèki¸Ñðá¨ËhºÄh£ÑI£'¸&îgã5x>f¬ob¬4ÞeÜk<abi2ۤĤÅä¾)ÍkfºÑ´ÓtÌÌÈ,ܬجÉì9Õka¾Ù¼Ûü
¥EÅJ6ÇÚ|ËM÷¬V>VyVõV׬IÖ\ë,ëmÖWlPW:˶¨Ävmßâ)Ò)õSnÚ1ìüì
+ììí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KËvSm§§nzËåîºÒµÓõ£»ÜÙmÔÝÌ=Å}«ûM.É]Ã=ïAôð÷XâqÌ㧧Âóç/^v^Y^û½O³&Ö0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>z¾¦¾"ß=¾#~Ö~~üû;úËýø¿áyòñN`Áå½³k¥5»/>B
+YroÀòùc3Üg,ÑÊZú0Ì&LÖÏß~o¦ùLé̶àGl¸iù})*2ª.êQ´Stqt÷,Ö¬äYûg½ñ©¹;Ûj¶rvg¬jlRlc츸ª¸xøEñt$ íäÄØÄ=ãsçl3äTtc®åÜ¢¹æéÎËw<Y5Y|8
²?å BP/Oå§nMò
OE¾¢¢Q±·¸J<æVö8Ý;}CúhOFuÆ3 OR+y¹#óMVDÖÞ¬ÏÙqÙ-9£R
+i´+×0·(·Of++
+äyæmÊÊ÷ä#ùsóÛl
LÑ£´R®PL/¨+x[[x¸H½HZÔ3ßfþêù#|½°P¸°³Ø¸xYñà"¿E»#Sw.1]RºdxiðÒ}Ëh˲ýPâXRUòjyÜòRÒ¥¥C+W4©ÉËn®ôZ¹cadUïjÕ[V*_¬p¬¨®ø°F¸æâWN_Õ|õymÚÚÞJ·ÊíëHë¤ën¬÷Y¿¯J½jAÕÐð
+ñå_mJÞt¡zjõÍ´ÍÊÍ5a5í[̶¬Ûò¡6£öz]ËVý«·¾Ù&ÚÖ¿Ýw{ó;Þïì¼µ+xWk½E}õnÒîÝbº¿æ~ݸGwOÅ{¥{öEïëjtolܯ¿¿² mR6H:påoÚíwµpZ*ÂAåÁ'ߦ|{ãPè¡ÎÃÜÃÍß·õëHy+Ò:¿u¬-£m =¡½ïè£^G¾·ÿ~ï1ãcuÇ5W (=ñùäã§d§N?=ÔÜy÷Lük]Q]½gCÏ?tîL·_÷ÉóÞç]ð¼pô"÷bÛ%·K=®=G~pýáH¯[oëe÷ËíW<®tôMë;ÑïÓújÀÕs×ø×.]y½ïÆì·!
n&ݸ%ºõøvöíw
+îLÜ]zx¯ü¾Úýêúê´þ±eÀmàø`À`ÏÃYï þÿÓáÒGÌGÕ#F#
+½òdÎ᧲§ÏÊ~Vÿyës«çßýâûKÏXüØðùÏ¿®y©órï«©¯:Ç#ǼÎy=ñ¦üÎÛ}ï¸ïºßǽ(ü@þPóÑúcǧÐO÷>ç|þü/÷óû%Ò3
+QË>%¼#ÜKëZ?þ~HRøóÌ,Ư!Ú#ãpþHÖµ_Z/Ñ[} ã«®ÿò3kݱìMÕàϽZªB÷¸zM
0yª!&ï
+¦uÆ2Õv.%Ï*#)0Ö6;xø2¹ÚçVØ ¬XlEÖ+Ô!¥@º°É8N"#ÑY
te½¹ùÀ%êõW_3ç&¶%CXjU>J¶²¾vö XV^òaéÿÊÒþZT_´sóeO
+kÈ9pNL®Ö_,®}JËVÐäû
+B6ÙÙø²PÑ^¿QÈ:3ôkTJ=ùV ´×Ý=zÞW¯µXký©TøàpO1v«Çh×dönÜÿ𽩬ک ]Á5?¤¸,&ÖÝa¼ L [\ëPݲ
èXùd-rÙÛÄꨫÀeÙ½ðç ÿûâ¯{l÷0p«Kp÷*(÷3_±ªÐ_±¬ì<\Å"Äy-DÂòkgØ®ú7IETÈTDJç&GuüÂGY¶aJX'$N8´A?¦ª,Ð:@¦'ynV\<Õ.Ääo VþÏ*iÓb%NSgnå¾fÛ<gU¦h-:¾ãÂÿY]F-Ųg³©T´
+]4D]N
+lµ!´Á$×ʦªÍo
+Q
+Jµ/Yl¨UQú/J¢t´âM(]ëÃsUk°Ýá`êü[<¦êx°·ík"¶ÚDÄ2,P°"(¯ZðhU:í«Ù®dÄ*pMû¾®zpeXuå)&
+dØÚ¥DF º%7¦,Û`ùÆ1«RNsTX8Jc1Öo"Rq>¸VliÁáߧÃîRIèBJPºÁ¹«ê
+4Jt¡£V!,M.¥nE9î°B`KÔ
+EË{Ìh»ÇáÂ3*Úàs;SooÊ%UoUî0Ol)·q
)²[é¨!å[×jì
+
+ëPB¢¢øð`oÀ0puéSMU 'Vé[,ËW
Ü# ËÉèÎ
+R®Ê®6c&¡Ã4hV?eo
+ÇÑ>1 :7¢Õø¥jx·®ä¿X~fÎ>¯²%UÒàö=v9+²{GÉ¿¶3°¦ÉâVÞuõ²®µ'»æ8dÀg[I¡Äõ¥²zXý°ÖbFZúï¤BbÑÒ6i¬6D&)
D;ÿK¦RY]þ9 n¢R
+ó3Îa¥7Ýa<. (ÐXç¯Çp
ÝÏVE¸-}&ÓÕ¶²f
+®ôß«rêYgýÆ ¥Î¹<Ü-ªë-1ÎÉ°)8}»VaÖnªÈTx¨cÃaZED³ôÃÆáÏ«
àÝIV$sÎYUÞV£õxÐ$pBzLªµ¿a
oÊ:B¥ç2¹UÔ®ÝlrË0q¿V¥_²Zñµ 1uã²úÀZ-21ÙvØ>Jó:XS"öo캩<×ühy©©1b;Ѥeí&®\ÁV&\u¾ÊüoÊÅêÙª[µkö(ð[ÇôýryX¶ËLqA¸]®OÞX
TÂ[Én«ð¬2ðg#
+eª>P
+Â`|ÀUJ`ÃXV>«´$±òM ÐÙ*(á¥#¾×aE[çPJa
&¶s6éÆXÆYÑÜ å\i;=t6.ê%ØDa1Ã1ÎZ ¹ñ`u¤hðß&
+b=¹ÅúÚÃ24(}ßÑ`.Ø*Ø,R+ÿo¶ugå,t(¥uõ±TÝ@'<î-ÀU|5!B¶fn᯻³>,Ç}cÀ!'©å,2ÂcEYbÒ³©Ä8¬µ¦É)ha
+.\·¬ïæVi
¶
+Ð#Á&èë]í¢±¬_ùH¬±C¥¢1µX
+ϲ3¸Â4ô£:ÅrÏhÓëFÖ²n0ÙIj1壴s¾ÜRà_¤ÆF=¹¤Z+TæÃZUD(JgâØ/¹¹.¦ÙZª@úz*d¯æfºkB`Òq£ñDzY¢kIA¤{ÁÑ¢øldÕ3ãiAÚb
F]VÄrã0(!I°u°¨¨¹.tÝhÓ/PRR¥"qèXåVu
ùF+(p¾Q§¬Ai
uSDa¬ñ|;Î: J©k&Zé
+»£´²(Ñ
+d´Xá~µo¶ÕÈ(`961ñ¼¶J®Yÿíx+lã-ÚV}ÎRÔô:·3¯\Ó¬] ñMd¿m¸,=VÅ*§ÒæÖ;¿)e¡Ê:·j³P<JÙÎÔe«!'DôßÝá¨"ÇLÅù37òÚ
+±n«eÂòÍnFµjÈËèå Ò@YÛÁÕM;}Î((Ôª^Àºâ(Z8ªORJ o¬IéPlT-Ƥ(éK ÂZHiQCBÀ°èH¡1Ö¢¤ÄXËôTBIv?¼àjuÖÖÉ5¥J ±£QÎÜl©^2.p½ñp_"*ÍdÉÒ)2àDù¿çW»M+FÒãºó¼ÏPƪP2Zç±^%¥ó2²d
QÕ£X
Ó®FåpÂGu êmZzX£¢ BK0Ö׸{]úlÓä¸lµéqTm ø$ÐégÎZtø@Ö:çÒ)0%8I[Ls¡b"Q©2QëBlÓÒwZ]Þ:k碩Èêì<
+Äa©:5Ï-ÿ:7Ù´.àhRJ<«3<%<Fh\Ctò°àÅTX±4(
+Ù£Çi=f«ÎJ)%ÖZ¬uÖ "R"/J
+¤Öuc at I°HKâE;gqB(
V
+#:dt>ëì$EVr`~ÐdD+¤FR°°0bz*maÝÎõ³SÞG5¤`MKH(å¹Éz9@®±²H±¿ÛdRª.KJpfã,yáÈ«JðdûI~ìBºæá´ÀØÀ Ñé<áðFáOUaÍϱÎb¬VtwRÂþì1Y)ÐZtd¬1YÉp8ôBbâX7q¬:û²ÄJAärâ8 x«Xµ6T£µ)xáwÂñÊ ¨@¶*X[ÿÔVªK!
+
+¨s¼p&ÀM¢¡êÿ¾Ì·Ea©ðH7IØLþ|ÂG¦GýÝ '&.èd¦Ûpë¤[HºÝÆyî±*¡f!&DJ ¤°R!%H¥|Àx¢ ÃJåyYÎ1¶MÉÖéh$Æ8%e8H£t §!EË
+Ò ±Ö¡\m%ÌÍt_ãlÈÌB#É6Àò*ËKNÇgjq
+¡I7-!k¥XK´rÄ:Ý÷«<§®EÈn§\þ,·ª
+*Qü,÷?סyXZ(pØEPÙ±
+t/» mÆQ
+èÄzÁ?dV¤°tRíyÑÆr l³:N%A¨ß§Ó$ðÐ}pÍÆc²QuvbRÖÒÓÀÍ
+_ê)I$ÆÈxÎKÝ*"'gpÎxß°7}Ûz~dK¢Û#é·ªæYÔ¨zkÜ2h*'H<!å¦\Û6Ü<0dµë>;
+g¼`@
+ö+¥dRGÒã8
+É9O[©cV^4á,?Ú¾?HgE-³SXk¶lav:ÅQ¢¦=8lXì%,íÙKVxúTGW÷J±e¬^& ¸±lòjMê »¶f~EòÁURVì$vÖÓJxüÝ ÆƯ)C Z
+¾RÐÑ
+g},
+JêXºÁ(Y?bSÓh2eA1ÊüÆ é$syl_
AáÐIDFt´7ÄųuЩ²iax`Z+g6ÔfPBVϧV¢¾. ZD&©¸Çl«ç"^¶`5Z´Ìv8Sø*MIO%£Ø'B dõßP"[Dkmhö91àº[bÃEk0f(1h)ÆäP!«YÖÚæä\Ȥº
+ýÕîD³#=[É÷iþoBÁËà~Î2zµHÝ
+0È=¯Ï¾7´&:híµàñeD÷Óté
äôNp{«Y6¥kUú
+çB
+Ýn£=¥Îx¯
CpZ±¸paZIX¡¥FëìVJ²Ý|ûA R AÈ?¦@:H´÷\ÿëu#ÊÂøØDawRúã¢V&ÉYöìöSäE}.LxÕÂ'e¸×!av*¦#lx<w-TKJæ
+6eZ¦G¡ê²m%í#X2þç¡ìEµÂúcýÊ%P)±öA"²áómí£Ã¦át$Ve]Ù¬VÙV`m0ï ò×9u¤Ã(q¤!Aæª`è°EÉxik¬ã(¸» :i\Êóͺ("IüB,]¬îû#';Þ£}ó1:S³¨´7á3ÓÆ
Ûl6!8{¡zÍ+ÅÊreyT7°¬)jPT<÷ê²`ù¾n1eih°]K-úÌWæ8%°2&Ò}ê£ó%lVøHµ;sþQ,!+4|¢Óæª+Âýÿ¿êVa1Õ¯¢(íÅáÍn~ï°0Z&]¬d×PCL*f+¹ìßW7"éêßѲO4-:Jؼi#Ý^2Ï)affµÖaØ»}ï@)I)¦û³DQÌÒü>¨¯o£,r¤J0¶
±EGn$Ââe:Ö±b\úE2ıÂ%]íuyaòöes+,±Ø³o
AÓÙù
æ`*w5ÿHvÍT{,| ¦æfAB© ïçÉú5([PP¤°¨l¯go»IP¡yh¤j?AðâùÎr¤t$/,60/l^cåD¹®UÄÚgÓ>aA,)Â(Ûl¸aqDrÏ%H±ö<ÝÒzKÜüAR½"ϱeÉ¥q'¥¿f¬,±%Ä$
+×Ó%ÂäÄJ%´¢#
µiæqITSÒ(0éu#.Ça(>Dç¨SAÊaж¼Ä5)$B¶DÖ!X)Ygb?
+A¥xì¤CÚ[z#
+°Ù
+ñÙ#$æº>kG L ¦ éu|vXY0
+áiW¾¥»i#3óÁNQ¢µ¢,òÊX±
Øyx háÂZ
+2Ó°OjQÍ=¤,pbQs«¯¥/ÏÖòºVJ¢i´(\hÆ-ë;¤$ªªaA
+©Z×4Q ËKÊÁq´6oá«p½»S=ôV½®P²çS¨H§IóÍ]Èùn\÷(1ûÐÊn%^Î/áòC¸áAâÙÍMF* µj=?mZUCU!X
+)®hëYõÒµªRü:ôß#%زÀ[(U{ÆàÐ~â~L";H' QY";iMuÎûT¸zRâÊHFÇ~òüw[âÌ0è8ÂZ¼Rüf¯Âa±á9w5ãl¿új&ýùK×`Ó6XÚä¿kÖÔc´w^²ºa¥ìâ±eÂbùÃ|¿«²ÛAV´Y-zÙ¤W0E¢ÓÔ\ÑVÙ*¤
+-&N\#wãÅY\6À
+éiÑpäzÙVI",SliI»ZI¬uèND¤XëXp%2íÐ^Ô©{¢S+#Ï{4qä)hÍ¥qQ$:,X
áÞ÷S9)
+X ¤öO
+üÖX+6Î%t"Q?G¾8 Ûï"¥0<1Ρå»Ó*ÂmØ
+ÏkÃ
+¥
+f*-"»¢¬$«ÕÃ2°:å«C!Äbqù
+©5Yéi9RJV¬Y#;Ç"u\IÎÒ?+Îf>µ %ZIñM¥È*ßì^=·cçAlQ6Ô%çí-i-T{z£ÁW¹nÄL7ñD)qÆ /ãùE©.i/Å!%Qì-NuDS=¢-Éî²4!©¡ÕúáïC_ñº¬ðæ8༱>Ûµdä¦ðÀj;.2Î:¡±%¸r8c°jã-7
E
+UWÕòÍé?4RS-óêªÚ
+Õz)R t×Ï¡ã¨Î¸EÐky-
+
ÉÈÇ9¦(<cAxqÔ
+rKvh(ÐÝÄC&4pQSL^NwIÒçJl±§8ÝñǪ|¬j1_ËÂ!Qö>@qÀwgº38©»3~94YñÖ
kA¦@c(!uX§%S¬xé÷9®Ø)´¨h#"\©Aã7HÈ)õdµ©ÚïäÈbJUËm¤÷÷0ÆB,p®Ä9¿ aVau`®8°aQ³U>èÚ
+îtÙ8㥯étýó8é=Æ#ßìuBÊÕba(¥33Øx£;CÑbØ65¬
+Ñv¦ ç¹!·n¢´$ÜÆ6(^,ÑèÒ@*¤µ8áyÇqÍálãÞ¹ÕbmKk.H=ÕÍá¥hdÄ#ZPãlIÇM³+|À7îÍcó24Q¥WË
SiqN2× wE$¥]$B*Á¥
Eân$IÎá³Ã½£Q!#Ð
+o](§°&£È0ò×aÍ&:OÅfèHcʬ¤(sT§ï⬠>ë¹ÍRÖÂ)%Zk0K8ª9|ZJ^s®rE¨NÈx
+"8#òH»=veçýZã
QÖ
+^Ái-ÒI1X©°ªCb²$HYÈÊQÄ3~ýúXlýQÞ¢´m,8!ÿ Âà&²¬âß6x®Àv±ÒÕì#
+ÕÜ4·¼6éò)ê
Þ0f\«jhȵ»²,\qºíFwÀTÈÆbáÙQzÁм]& 21¿{;ë¶
+Æ"¥¥:SLÏΡö3ÍAEÒyRb¤t6()U` ÈúÌó2§,Ft;ÞãçP¬aËÇÖR¢éLEܹ5±_P-9´0faq\OpÐÕ¡vA#&
àÓOÞ̾yp¤SÊáÂ:¢HÄ1¶()Â?3ZÕ¸q-JQÊ9¤Ò¬Ùz"£¨Ëü÷4~¬¶Y»Z¬XUÎúÌ×YÅ64¢H³ÀKu²ÁJÛtÕ¥Þ[XJmºß¡ùÞдª&ò¼ÒEÔJ>-d@"Zfã¬UÑöÓJÓÓ¸àoKÃp~áâÐsÃ㨩òl=ÞH ÝI7Å KW
+¬F(IäYC0^!¤ ¿fG{ÆEÓ_½
+Çù2[é-Rká²Äýiìâ!Ïî8¹Y:Èè¾kpRÐíhÍ¡÷û^FÑY{éÚ£Rcä׬*;Ïy(PJ°0¶
cª£èD¥C$½: âYL¶H¶ÿÌx Y¦×ΡD.T4£,Ê:3²IylØ qé46ÃÖ÷²C8Ó|]ðÓRÕìçä¯[*7Ô9]g
+ú?ù®P·=VvUk·"ý1ý[ r+¾Rú«OÀni¹«²¶²¬»ÆV~»2)ÂH ÑMGN·¡Iº×+`&HZè,M13·¡"DÒ3.1ZÚÄ¢´$ÖºÎ
+â»Vã9^·Ëb¯¤hÒ8ÈË8HW"^é`ã32È©¥ôx³²"¦b¢4Åæù[gAèås½cäÆÓZL%W2 T
+òàµa$XºpÒõÃR¥8ëv«jV&<J
+ï×¥d*ç÷Ö(lcL_ù^¼qMEóª 03ÏÍ!
Ä%æÉFct%!o§35#p¥¡C§ßíB]>°Ðh~|y®¹äK#J0½f2Ë}à1FûîÅft×C45â°9ºvtByÁ«
+¢ôT¼¥]Cz3Ó[uh-)wÃT5½)¢ÚêSXMºÌçApJ³´4 at H
Rý^L¾árÍ
+ìÞXWbó8ÖôÖ¬!5F3¶¦ë¥ ÷¡T%¶cõöÊ1°ÂQ+,Æ¿CßÄy
+[Ö
+c´"ûÈ:Ïìp³DÂæ6mÞð?^æë~¬¥B<oãá$X
ÚuXPwò¥«à)jò}p6«U TõàúçÕ¤
êwT
TBi´Ö¨ð?lé ú24Ú$²RMÉjðPðã[2¦;ק-QdKå72ZÜ(Þð[PÙéiån¡ì¦q¢_2Ì#!%JT$,íÇçIUÁô×ÌR)%Ý^â§ahAÜwï.\Qx¬«:ÛI´Þý9¹i
+³s]R¤IDªÖÒãgyIÇ5L§1i¯çm3XÖ²°#´ 0O¨$F(Myð |ZÁ¨CKH¨ºì©°Ak±^ügTèà'`L£å²!}Ö:Z
ªhDáqmHé©F¾AjN¸oþþ
+?ó§É*>]"0N+qÖFJÒ7ÿ #]¿)!e,Í/ #å©mÕ¨ÐÜRy6©*VhvÒ`HZ]Æã1£Å?7³ØÒPf&иÒu/aûÃ,KÚé{9¹°H¥ÑZAq
+©q¤ ´dyÆøà^:ÃyÏâ`VPe£Ò9Ët_)éH"¬ I4ÃqNi7ÍT¢-ìçÐÁÆÃx²8Ö(©
+Ï,B°Túc\ú*(÷³K5}˳Å<Í®ø¬{ó·
+UÔÈø¬TO`»þ¬KZfíR ZÖxc§â×8µêE%}µlHütT `UÜ[71X%ÉDZ{¡QL½·¦%¢.ÖÄBwºÞ]úóV´°[åQÕ@Âs©"Ï|p¬'jóürÌhï½ÈÙÎÛI×l&þú£è%hÍ,ãÁ¬!ûGJ"éEÍ~ð÷¤ <xFè^Ï ] ù½;)©H{úkgë uc6tú=òáÈÃF¢¿~¡Q-k âãçPVbTÍaL Öå`¾7 Rʼ@ÛcÐ
+é¬tk-
+;¨àä®ÆÒ 5µMËGwC[5ø:·ÂÛA<jðe
wpl}&VËx«&Xèk!V¯î~ÖªÔ¡Xø¦KiYWXoÀ £@%ôsØ´Â¥Ä:8"¥¡Ãh54bÍúñø§ÂáÕ·¥7âv¾ b
¦£EY2¬éÒã`uj
+Ö<¼ó^²nXid¤f%ãKlY7MÆ8g*FWþÚ8:½iÜpµ¾´ß³ç æG
+I^)°&4À#:Â;
+é´u03Õá¸cÖ1ÌÍô@@^Z£8ÁøDJbT¯Cfù¨ 6ª¾I>£ô~ÕnË2¬=îÃÂ!_Þ h®>¾öµ0(ý$Ùس<ãÂ{f(&äÂÕ8ûÒzø©t®æOì e}ÆKØ0mà$+á ùN0ÝÞ¬ø£gr{Rµ¬ªëp4.>¸B'$ZL,¢ð Zû>î¯!ÙÖ»7÷A8Á5Ï9RèHRA<ÒËÕ¨«:Ѷ|4¥§ÚÑÞídRâ¤`¼ûNâNÂÚèN÷(F%r4F
õß«GXhRv»Þ5Ê¥EØE,ge>RâéõÈx
+REH¡Rûì{
+ÓÎÌ¢,)Ñâ
+´4Öûy]£Áa
+¦:1Z*J · Fwq¶ -}¥É9öþ¿óKÃNªqα´p$ÑXí?3¥sÖ ¬Ùp¥±ìbeKE*ÉÁýìÙ»àé9¡êO3XZÀV3µ)K"]«Ó.8nKȬé(Da`ïÁ^ᬡÈJæ6ÌÑé³ãáy
+M\¬½n̺¦ôÔ$[d5õE¥1Qb~©©#7¾TïèP
+J*×±f±GÚgÁ¹ ¾!{!º6¶ÕD1¹^egE)ruûYÖ\/òLֲ못bÙÈ0aÄ!
ói'ê¾nB´TócqyI§ß÷Òz:cùæ_¹ô>g'³µ8;
(ï
+:¾Z©ÎCHÌ·8¥Õ¿oãì)ëªQ78ÇØ°¸ÿ sÇL47KÏeØáòÑ¢§Í¹TL1<ä{qT¸Û4éÀÃz"ÖÌmZðhC§×!êoAt@ê¯ÞY{éìÊwzÉ·³ÆËhaNcd¤)FcFÃ7»TwHïLûÞ®²\
qe`æ(J«pI©{X#²y(Ò`]³y´òjäÛ4ö'õüGýhÞ
+®&
+ëðôà+&¨{F|ä#sÒɧpýõ×ð7¿ë¯¿óÎ;¿úëwòüç^48KëêqÎm»·åte$·z,̤a#ÇHZÖõx<eÈðòY©JÇd5i>3BÐ2x½ºà (B&)qáIê:qPè`I#á í:ä2bäzXcFÉX§$EQ]ág_áP:B)M&
+½$FJAY"X:°8é`EªlÅÅ!î:HiªàëïòâüÁ½¸mÓ'¤'©oX7ÃôL7øÆgdV2ætSM(ÖOO3ßKA*)(2¨¿DhZú¥%r$k±<c¨ÀkÇD33f¸ÍÆÀ¨òAå¿k,EéÉò¦{À92Iñi-qË`Æ"ÂTÆáËËĪ#&[ÒìÖ+ÌäKcå=\5Ê(y¬ ´Á:òFÓàðß&0-¬¥Ûï! Ìs¬ óõL0Þ'ÕãÎ58ãÿÂtI¢A¸Î;óå(
+çlN°½5°ñÂ']ТUkr*ìSøG(
+ºj
+2ê!Dá,YÀÌ:lr¿vÙ!Ù&Hñ
+¦{5ÁÛ¹õkîBfì¡¥¦f7B~0Ø[òá(õ´µáÁy¬qh!w4ÙC÷ÝJ&ôÖÎ ¥
+Ma_¡àMmÂJOCÆÝÃwãòCâ^8µSË*³òÁ¢öþ® Ã6áÚÌùIn>&#ö[}éÍ[8é¤Sؼy»ví@
+!iw£?¹5ºtÂôÌ´R~:®RDQÌÜl4â$írhiÈÒ¨¬aW椽iâîÝ4
+c4ZjJã(JS
+t *{¯öåØÂüÒÞl=¥åï!ZX)X×ǦSÈNöf
Sß_EGF¬ààRæÕkJ·æçJH!LuSÖM÷pÎbJO#µea¸ÿZMÏøLÌY¡{\4¥ +HÐÑ%1%AÅÿq,+èÄ*°_|`VRú
+Ey¾lk"Õb0HAQÁ+YäW¥°Õ/ÒHÓ4q¤1ÖÏËÇ¥µR(!ÑÂy<?³¦5èTÊÐY÷ô©áEDP[I!ÑQBonî)Åh±Ä:ë°AØ`añÐÀS0k,ÖmH§zHO± 3Ó÷7"æÓ
µ#D5é[/פ;£ÊlÉû+( ¶)qÎ`Ë1ÖyG3ØdNŸhu8å'¨8k,,V&=SÚ£¾«Í|#b¬±GãÁ(Öôf§¼¤_´ªUTît#æÐÒL Ú5ª±Éç¹®UzBw:
x*lN"ÆûM©¢°¶×ÃdÀ®mµìZÆËnÒÌFU!þôxö³Ãã>7Éwm«Sî×¼æµ$WI]·!àsýç=þ|6oÞÀ±[ã/ÿüm¼ðE/%IN:éT¾ðÙË[ÆÜaÂ>ÀÕ*´¥¬¦¡U6vÁK´Î|«Õ
+6QwÇÇWú+P를´"_½Oö¾ÙEͱi
¦X³qk×A:½Îìf×mafý¿ð¥£?»4í$£qÎhpH|)Ö±
MÇA6¥¥0N¢é¤
¥,/H´§Ù²@XÃýÚ³Hf Ò:[ÛT"ìÏ
+fY7×ev*FékÅ @ÇLu#¦:~lf¤%Æ@·£î&,ro"¼ODtÓ
+s]Ï©ukPZ»é@i饢£ñ;4ÓÚ%Ò@\Iyµ04ÞÂÐ&Rè¹ÏÞK!UMÝrxW5ÃOUl)kÆ
+:±--fÈ¥/ùûëæ°Â±4ÊÉóc,ÙÂáCÞ泿¾q&÷lþ¡;±Å´àdãðVÛFÚOÂv´Ó¡;ÓóÛHar-ðÌø
+@¹A¹¤D
N¸3Z¤X:ÒÌûa°®â²
+ÞÏLÃãâ?_80#qN6"$³èÎmöL©æ½A/
BKÃܹñâl¡ãÞÜJÅD½9â©5¨d¤;EÚëÐ
+LãiaΡo2[êµl)ÃÿïóêJÁ{&Öݺ®7iYgÄ«`wò®/¾Õüù¼óïæ¼óÎç¼óÎçÂ/bóæ-|û[_÷ÒÔ$á¼óÎon'Êåü®ºò»¼ü¯`Óæ-Üöùñúkxê
³ióKÜvÛMuiPÉú*2»-X¡bJÔ¸UåD%Zü`2ã&Û¡Êí
+ßõL£°S=AùVYZçKµ$7÷$ñt¿'/}n¤cI§7ãe>"Ïsôº=
CûÌ:êe9Á"Ùx í2bè$^7&éDD(óB¼n®Ki,g¡Óñæ=RIö/äÜóÀ~²¢@(
sªV*ú±G¶Fµ©-8çX·v-æèub¢ J48Aa!M#Öô»tb]gNQ¤èv4©Ö>xZëñô¸V4
+k¦B 6ÒbÆ£
+Çõ()Ûß¡Ó´ësQ #¦ >øº
+ 0%&%q9Ö¼Oí·-AOMNOÏálN>SÙ%êÎ!ìºpUF30xl°ÄhqÉð\èîì,ÉÜ1$3[YÒÙDý
+PÂo!ÐÙV 5ÖâLúµO´¸+pÅB+IFõë<ô
+RgV±¥JK^ä5·»4ͨW=ê`"ÄZ
+òÒzγäÎê [ÕXAéUÕ&ÈLµR+¥ç¾¼L·RôUå¼@ÐM5Z ÂÔ¤«¬_
8B§ ÝN°%ÃC#sÁ×ÖaËkdÄúµ¥"
ê$`¼
+f{~kYÌVͯ¶¿Rá2ìÅaÓM7×R'6^H2(ÜÊ@p&t ºq"õ,r Wf¸rW. òE>Eé
+½ÏCªCW\:"áÿW±D!SÑÒS¼ç«1KÝí@?VFUÕ«,rÐíõ}
+ú î$8!(³
+¾§²11¢Hug0eVKÉ
Tè8
+h
+[
æX3öÑ ; {^lÆà,Ù`\;¢¥Ý8v2ìa³ÆYxEçxÉ¥ýéãÝbÓlz\ÖFóû Âôj~¡
+U½opé®Æ3i¬ Z÷WÔ°^#3{æÜóNw¥¡µÔoÖ9N>é>ö±O6?~î%±sç¶l>Ï~þk+~~ýu×ðú×y÷Òç½ßÿÃ?øù¯¾îç¸áº«¹üsßdShÈÝtý5ü¿òJò´g2ÕæË¿sλ
+ðÂà½xn'%VÇ
+Ũ5Fiͺõ[èõg9°wö!l¶Ek¥È3F½Õs¥0:¢yQQxøa¶
+t8V¡óíG¡/2ß=»ç9x`©ÞRiëÎZ:^()ò"/Y¿a5³=ÖÏuQI8(JC[GÄkú§º1㬤Fwë&7zëÁ÷ÂÙ
+Þñô©oÔØ2ØycÊbpwàaÖÌÎ2wÔ)Ð_ïqº|DqÿMû
+QfÞ()Ī8¡HZ¦ëíÓ-¥ðÇeÃ5X3Ø*ë²rÖã¶Ö z=Ö´Ú½l
ÙÕ$«.OÆ%úkû¥°+T70R
K¼W)R/
+½NKÒ5¤Ö]w4ý#CÉ`÷]Þ×7^?Á}âdâDÅ..ZHæꦶ+l7{¡M&LÍN³k×rTyOØù0qÓß° =½§»µ÷¸5&8ÃÉp½&ÏXܵ
+%$S]LQb¬Å~l1Á!Í·ÎgëøXO>^¢ÒÕBºa|¸xÕ,ØÁ¾}óÊW¾z¼P½¹þº«YZZdóæ-|ò©«fÁ»wîàî»îà¹Ï»l2Þt$_úÜåÜs÷6sée
+õºf̳í¿02¨ £¡%%H\ßþNÌêoB bâ
+gm=ÍXIEºæHdÒ
+æ>ñÁÝþÚ:"Â?LYø{e³Ú×× Hh ÌQ¤Hû¢Nd¤ð©fç¸ÛA%)ÄkRÕ¾.lP^)(B²¸û^¤+ÑÝ´>7WeËá¿+¡OåwêjqÓEK Òyñ|õ
+©p¿ßçÅ/~)¯yõ/ò¢½K/}7mfçÎ,,.Öà[ãSN]5
+K¦ôïûÄ
+ã¬ðPÐa*ñÃ;#Ç\RÐÅàâ «ÅÁâ!ÊÑVaÁjPâô4ttPÈUÖ½°
¶ ¦¬+Bø (BØ7ñò¶DW]9!uRM*Ôí¤5¼â»÷ªK(©¦lÈ)5ÂÖü¦6Gýq¯CdÃ1Õ5뼫`hT¡R¢âæ
+6cÅZ£jûOÑ8(MÄSÕ´BÆJEÞ`¾¿LA9<µ#ôã}ò¬ îÄ8áÇ»;pûÎgB 3±\9DªfЫªsÑvZ34£8òn~¶Ä©.N&¾¢¨ªé
EÖù \î}ÐË
¬"U³Ò[غVw5Öµ Ñ05l5* }µió?<ù¤SøÈG>É
>c=Í=¾ûøÇÏó÷BöïÛÇwÞ8xþ.[5è%Iâ1Þ;·q`ß>Î{ü5·wyüð®<ø£;xÖs/cªqÆÙ|â?>ÀÍ7\Ã_þêÚà¡û·óä§^´ê÷ÞvãÕÜ~Ó5|ëKóé¼wýÅïðÕÏü×~ïkÜ~ÓµÌØW¨eUÆ
¹\.ØHúÀKë9¡!YÐÁCVÑ~7ë² *Y(¤kæ;b-6L+¼è¡BRôú³Dq<5^îØaÒíÍÐe<x×&\©È²å1:ëÕMÁãÇcÚûT/c
+¢¨z¾$NÄpab<ò;}¬5äaÃp¢æÂF9Ó½ÍÖá,L÷½Ol{eÑt7&5IoÇH¬®®µZs`P ¤dÝ\^Ưà¥aæ'ßb|ÖdrÒ8fnn~W0Þ·b0DϲJcóÈù(W`$ Kt!N)Ò6°U*ÛQ0ÃE\Y?Ýܯh
+ì¬ÈùBoUîÞB1+!±$±öÙÎĺ]ÐBFȨQE0§ÈcbrzEô7lôø{
+FÞ´¦êæ×µ
+ÁÂZФLÈkä±µiLíá%kjÈÑÈ
$½I·C&DiØñÒ.¡dNDè$AFÚK
ë9¶ê5ÔK,ÂɤÎÎm±Å|+7q±£n¢¶'h²Ü*sÅ §¼V0²Õ$ëß·´g;Ùâ^ʲ$ge©üÌDçÜÜѲfíÉ;!Ûm)Õ*®¸ìljQx{M7üáûß÷aÖ[wØ úøÇÏÇ?þQò,cÇÎxÁó/£?=½êû§¦ú|ö3#,-.ò¬ºdÅ{6¨!R0,ðä§6YðTÁ`k¯ú.·Üt-½~ïßÎÿõ\wõ÷Ø»{'Ûn¾ï|ùÓ|ì}ÿÀ{þê|ûsí÷¾Æ=·ßÄÞ=;èMMsÎOåÉϸ¼æ¼úMÿýåßä¾½{vðÀ}ÛëáÊÄ]ÔYF¨FU$õ¬/êæûDaÁ
+58Nb¢4&RÿÀ;ßõ±ÖQ:ȳE1ö1¿ÔÁÝGú(NÑ:ö%°óÖÁx¼D>áBªe¥jºX+JcqÒNB2ÎK
+c=Døm6Ìàe°4
+¤+ BÉÿ$'ÜÒê
+U6f¬Ù0ÇôTÃÑéFtM¿Äû[æCL 9çþÁÅ12Ò8b¶3ÝóSSæà (-ÆLùFb,é'ôff°¶ÀÇKCdo
+2êø2=SìùÅÂ^\(õmÈ ºÝ±¤.CKÔ!
+É)
Ðy+8@(ÿï®ñQéTè~75ª3CaÁyðÕ(ÐQl0=¦oÃ&&Ó.²3T Î "DÔA8\ÇD=
+Æßéàèè7Ó¢À
g>'Úa°Eã¾e"Cugü`Éd
+öÈîAXkF"&îÍ`TDÄdoÎ!
+|&d¤(óbÔÆÖ)²Êá¼È½¦*Æ>f<.l@À:ßtÿ/döq Ó[Úzrr½9ÏèpÕ&ç=p¥ðç-¤ôcvóSEZ>s-eð(¶xÒÙ¸
+^´ø´ÇT-gÿÄ¥!sÿ;îßV¯§
+^ð=Z¢\Jzeler¼(¬ðþ¼Uö^L»ÓXàòE+¢ÆÌÁ¡ÓXÀhÕ»1%8%6PûlsNµ;Ä2Ètã8Qc£dð@¶Î
$2ØQ^ýµwÞqÑ?ãÓf~á;w<Ķm·sÊ)§NG{ÞeüÝÛÿC|û_cqqaíà9¾pæ9çsÇÍWñîæ7\Í-êØ^új¾ú
+سû!^ÿkÿ³Ï=ãN<
ÿÌkïîÜ÷Üqó5Ü|ãµl¿ûÚÜÇ
IÆx®oÕ6ΡL3×ÖÈP?;Nºl<òXÞò×ÿNwjúQåÇkçù÷¿û-öì¸%q¤°Fc¥4LoP_JÆC´9£ÁB0ré}¶´,À~0ä¥ßq1A2ª"O¯²ÖPÚ²ä%XRÒ©)ò¬ ,
+>á³uW·¦¦Ú*ûõna<p±íG;[Ó¥Æ~VVh`x|ÔçÕÆ8ò¼Äº¤Uÿ/©±²å
+³¶jZ
+°¡>3aàæk{ o¨¶5íÐiJ1±¸¸àU¢¬×væj£*×òP
(ò&Ní»àÔU1ªD5ó±`§?ã">ýéOâ+>}9§üÎi}ïóùðX\\à?>ü~éõoZñg^r·ßxB8>üoïä/ZxªßçU¿ø¾úÅ+¸ì¥¯ú±Ïûî¾Ûn¼;n¾ûî¾}»wpì§rê9pÚÙO`°8ÏÞÝ;½Âzf-s©¢¶Ý¶ÁUµ¼2ÐQ®]ÇoÿÍé<à[½ÒÎüìoð?úeâHkOMѧÒè¢ð]ë1z%Sð¶ÂT²UiÚâ¥7qxÒw)zée^2Í$ >¶ôî`°À¨Ì(!Öz{w*¡E¬õ÷NÒZNËaâ3£mwïâì3 :UÀìT³8еª×ç>ð<tïµ'¬±`!Öc/ߣB&ÞÐÅPØ8ÅÇ8cÉNG¸l c¼ØÆÖ¥`Dc«ÌÐ)ÒóB«óß+Bj¬BãÆþXÐsGA<
-J¿Á ?BH)sqù
+¾Y ².Ó|Ó½ípSùÇXÓ:6GÀ§=G^Çl!dP&ÜÀÚ¨|,*Ó¤Ê"CYi,ëX.à½Nø
+RZ°±ÀßúÖ7xÝëÞð¨ãϸÏ}ær,OêüöïüÞaßûW¼ÿøÈû1>{Å'W
+À?}ée|à=ÏÁ=qÃ5Wqó
+WO(uɹâã|Äc,-pÛWsÿÝwpëWsûWÓëO³õÄS9íxÎ_Íiç\0ñ;/ýù7òþøs¾ýÅO¡
«±ÇDá¬7gEpì
+Ͳ¤ì¿¼ú«ßýïä¾O§;ÅúÓ+~¾åè8íÜgpå·¿@{×HÇ()0Yá:¸OEé*G.2 ÄÓ ´ÊQÅFù²Õ:lY°8ÈÉÇYc£1(E¿0dX½Í1¦ú)y
+ñpI3vÊQMÑ¢(¹lPEëíF£ßM5fv6sõ1:,:ñ)Mà,Ùº ^Gë;sJdÁé\á°¨ëq~!Öïðwmcqq~¿ÿÈðÓ/fzz¥
y²Ño|ý+<ã¢gúÞM·ð´§?¯ý«ìܹÏ]q9Ï}þJúÚ«^ûküùÛ~ïøßæ/þñÃlØ´¥V°Ýwïøß¿÷ÿñóoüm6lÜÌ}÷lã¾{¶qÛM×°ýβýî;8bã9ñTðó_û=¶xê#cÀSÓüêÿüs¶m»}Ýë± ç+ªYVVÍHã`d½çC¤¦Üã/~áÏ¿êËäßÿåÏ1I
+Îñµ/|ßøýwÒíNM¼ïìóÊßù<ã¢d[
+ÞEÆx÷*ÕØ×éHÅiU)f^zKÅX¢enãòñ²\ (} g9¹}õ0Y5P0ÇÚ)î´BqÌq'1å:x²(Y\¯óÑ2)+
+TÏ|û¶DZJ1HlQø,ÛMÎ@ëvtk*1FÞ^±´ÄEù&^Ò5
P¢$ÅäCÊÑ\±5#lQàLá'næ)ÇK¸jRUË?ÅÖ%"áDN
+@@4j&/2ö2îÊ× ÂC¬¨þòÒ Ã:ð3ß*0dܦDHEb*Qå±UÄΡGKõ5ðµÿÓTõ*:¯.lÔô@tú¨þ:LnìC¨ÈÓæláËdQ/%îMy8BVÀàl#§¡±"ºni°×ôRgÅøõ%`à¯Æd^MEAaWù8ÛÆʶK´a'g©×@ÕÈ®UäáW³O\Hõ$C¢4!®-eEÍÜqõÔ
+ZÍ4×bR´ Zµéjæ
+r<2gý]a×¢
+âÒ9dw#ÖYt¾g~}é>Ò,
Iá&Üõ×_³ÂÅìpAø³W|!à;ßþúa0ÀK^þj¾þõ¯|ø}«àç<ï2Þ÷¿g~ÏC<¼û!~ñEOã´sDa·Þr#é¸ú{ßàï}£¦£w©{ü\òâ×pú¹°aòí±¾6s2öíÅ&GÊÊ轡Ë'cEFl!UÓ.¸pÕÏýò{ÿNBÙMÈÆ%Ý7ùø{yÙ«}rþÝ©çÔNcÕrç
+
+7Ï0Ég&Q"ÙØcyes~ZJwR@Ä1ã¢dq0òôgRîapåÅDJ-³:C¬}ÒÅÚ
Csèà"·EQddãñÄH'àáPeóK#n½s'ë7môX¢-äÇD9º8³4ÌÅâLr±Ê2â.Ùä±-1£ë$èµ8$Ö-bLÈtÅ4·¥ñwTuú~+-FØb\O2qy\ðÂÀÉ<Ðt\³"MPCQK"°ÎÔ%rÈ=æ¾x
+']uTÁHRH,ñ"üR´ß¨Ç-{]×!ÔÝrÍÏ«Ç6*úP
mü7ªª°zäRJJW¢Êü¿vò,{èÖV
+×}õIg
+άcÓÖÁ<Àüþ=l9ãIýÏbݦ#=X*î¾õ~xíÜûà8êyÁe̬Ûè}:KÜøý¯pÿMß÷j»
+PFÚâ̧?£O9´;åoi»o¾Þ~ÂÅÄýÍdzý{÷°´pÑÁ}¾ ¦QÒ!ê¯aó±§F¸çîm 4HïÌskØxäQtÓtí÷=àù®c?SÏ<Mª3ËC÷qëM×ñÀ}?B
+ãE ²6'íL±aÓVpc>ÌÂÂ<NHúsk8íqO,;î»#lra²±ä
ñÞ
+ck)k7læçßð»tÚ¹x>wÞz=ÿôof8X8x¶%³k6pÒ)gðª×ÿÝÞÔ£^Oô½|úcïñ)¸ìe¯ã¹/þ
÷|íse4réKO=üÑ]·ó¿ò
+Î:÷üæïÿ庱ýzèþ»ùû?ýÿp6c*¸øy¯æÉÏz9
+Ñ}ôÑüÌÏ¿ÅÃpߺ+¿û-þìË8çü§4ðÜ7?Í÷ÞÂK~ñ÷øîW>Æßø8TµçsðS/úN;÷i>Yºñ;|õSÿÌÒ Gk?ΩVZ/¹oc¼àxò³_Éã.ø©Ãÿ¾Ý÷óOÿ{wß ~ö௾Í_³ÛoãïýCN?ïB.ºìW',n/ÿØY¿a#ÏyþK]ÝçÐ>âN$éÔÿö¯ò2tÈ~eà2×ðÎ;عsǪ¢øóÙO{âs¹üð¥Ïïþ§¿giaïë+ìÞù7yØ,ø¬Ç?wüóþËw°¸À7\Å5ßù
+7]
+ûöì"ZwdpLRµ<P
+Ä1'Êßø|àO~¥ý»Ø½c;·låØãNBjEgv
+.?³
++;ü$esëÉãmÛpFb\VÝ©µÌÝà7«;o3Ùã¿ð&¶prÃ*úÑÜ·ý6nÜÈ)gçgë¼âçÿó?a´°¥»¸rýĽ<ïü§L_!*I« ç-
+w?¸¯þ.g]ðÖl:ã÷DvîÞå'Tâ÷ówü)ÙÂ~ÈäKû½¶ªÌØuï6¶é¡²¾ùY>ýo¬_饹åº+yþ/ûÏ:úä³ùÁw¾s3Ͻ$íÿn>ÿñâLÌxÀλná«{/¾ú×
+3ËëâUsîþÏÞÿïݼåH.8ÿßqäßV}ßÒâ_¼â|ï[_]õç÷Þ}WüÇûøë?z¯yþSø׿ýËßr˵?À:ÇÖNçù/ÿE~ïíïæ³×ÝÏ[ÿêݼ࿰jðm¿úÓ/ä.ñÒÌÚ¾ÂU¥,±b!è¸w`K·ÏýÓó½/~ò1]³S÷$^ù?æ¯ÿ6y¼÷ÀâlÁùO{þ÷çKeÏ{;3¬=êdîºûvnøÁäµét§8ý¬'0Ýèwßøü¸ãæ+Ù~·÷÷øþ·¾ÀC;î'U9Ãîïäö¯Yñ]Ç|v0f_ «K¼íͯäú¶Ýq7]ïúë?Zõ¿ôÙOðæ×½|ç«ÜzÓÕ\ñÑ÷±g×C«¨Ù:m:åcz-.-ùoZ3½Ê~ù?þ &b(rK!bµ|ïïå¯}&_üл)T35Õ#Ñ"ËȲöïkBb³1£Ñ°þ·;nº¥Å?
+!#Êi
+Üwëµõûnúægý`ϲÀ§¨t
+=³±]y"BpÂiÍùÕO¼»¸3¿|ßù=;¸îóâÐÞ]Þyì¤Ý>ÛïþáÔ]+Uû$8¡êÍüGwÞì!¢SÎö
+^ÍGç7®ý»ß¿-62·ÆÃÛïþ!÷o»
+²H3DèØ0`Ûn¹*$=ÎzüSЫTNÙxȧ?ô·¼p¦àÊ!Öä,ç;¤Ïzñ¯Øç'{vl¯ß¡dj*¦×}ÆUÆ>÷
%Nºßîå¶ë¿Q»Ùók¹ñÊÏ×}Ú9ÖFË_ï°w×v߸ÌM`¾?º{OØïõÔ¦r{ïhÖÄæcÏðTC×L)ñË2àÅÅEî¼k'tÊcÈ/æñg×θkÛítÊáÝs÷"nºî¾IõGÚæå¯lJ¯¯»Ïæ8à~óyÎó^ÄÆMG=»âßþ*Áb£pn¯ÏO\øLÎ<÷I<îñOâÍÿ9:À
¼ïñuÐÎ"<ÐFédðÅ*?¾ýcõÛÜzåWyɯþk7>ú1l=é,^ùÆ?ã_ÞþìÛ} º.×&[Ûnò¨ÈRÝçÖ[nâÜ'=s=åÜ~~ïm;Eé©:®AÔC:+aËCûVDk-¡gl,]ýÝ/ðà?BÅ1ë×ÏçùaÏí¯ÿè-aB3rlÏ®8b9<®ÁEs´Ç¹õÚ¯qèÀÃ^ tÒJ²ÂK^Ò`Âä£I[¾ûvÝ}+
îQ¨.ãñÃã1ÓÁ¹éÐÎ7Hgn=ã,geAipÁOrLKæ.¤Ø»½©ã"#ßÿ
+n¼
+ÊÉs¼þªo±°ëÌ¡zhjYøüÔKÞÀ·úßûÞç¹íýù[R`EQËÌ+ÑÍø
+¦MÓh¼«@IØyûµ\qÛÕ\þw¿Ë O{6ç^ø\Î8ë'<¯sÙë¨cOäÌs¨µ[¶_ïÑ^qÒ%/¸QN οð
<ù¢2·öÇô¶rô_
Ø!^¥aƺµ}6n\»êç,÷>Ü+[ÚO"_ð9YT¢¥"c"ëк`dFÄqÈvñC DÝq3ó{w!BÑ; \"Ö2ø
+ÆFÒµ~Zå.p6mÔÌäÁùà`ÒOEQÚ\2ÇÎï&Þ¼¹%
+:WýÞ?<¦{%;ÓÈÎZ|àB:å ÜxíU¨3Þ{ï¹#§Øþ£;ÙzüÉwò¹üàÊ+ÂrÜ©
+ÿ¶;îÄÒgÃæÚæw TdÒ
Ç,
gÛrH>M¬®7ÕÌ-7§µBx¿jasm N¿
+Ìà ?y 7]ù2ÙgvuóÙajÃEj£gónÍ´lFÑ1zðÞ[9ê¸3<ìá&þÞÛyxǽõ@J%¹Ð
+ÜÇ|7|çãµI4ÑãZÊí·6#§e°Â®À?|éó/ãSòxqao~ý«<ý¢göý/ýÙ_º³-]°²«x(~òÂgrÖyOäÉ>ë¿+<EíÚom7^Åõßù
+ãÁB7ÔrR(
+ÈH-èè*OzåZë}õßá=±ÝÛ®ãëïçÛy/Ï|áëxÜù¯8O;[oüÁé|Jc9¸áÈØ|ôñ¼áÍÎõ~¼Mf¿"ÀïàÙ©n¢QJ°eãêüÇÕ?ce(Îg2Qç¤&Ï
+IZ¹©8üPÖFëÕº8¥Ì0ØOw<ïh*oB1ââ×üÏxÉ/Nö[®çÎ[nä¾»oã'>§þ´o@Ï/-2p·¾Â^&,ñI5µÙ8QBâÆKl1(ÎZ-¡@ªÿÔýIõ¹ÿþûë;öø¹éú«
+ç¡´UVÉ7?ÿî¾õpÚH:=Î}ò%Üð½ÏeÚÊ`]¥`õtòå[¾cðkÉ®ªa¦ëVOált¹¯A¤ëøÎw®âÓHvxÚsãO»¶ßVãÉGwFÍ øÎÞ7ñ8fÛY«`ç×=Æ
+Þ4üã7pçU_ó74Ïq¥«ôC÷Þº"
+d-`îûfeÙ ßh¼]Ôîi®æZEgw5ùñ{qyFØ)ü1ä9kÞʳ^þºfø÷wü;¼¿}öÿãí¿ã,˲»Nô»öÞÇ\>ÒgVeyÓFmÔÝr¨»ÔÐ-Ó@0x 7yÌg@Ì|ÞF¼÷Ä03à jy$!dhµ÷êîªöå«2«ÒgøkÙ{¿?ö>çÞ(ÓjÍ ¢>õÉÌÈÈ7î=gíµ~ëg\tc¡£îÖC:póçfôÅhM¾vtõ4ª·xfÌï\_N¨¶_ÀNH9A`Ýùº³Ìa¢,¹qóV¬®µÄl]è¬ÅàÐ]Fg/Â3O}ïáäéstºÝ¶°ÎfSÆÃC´6lÝS;ïºû>nuû-ÜòÜÓO°¼¼(ªb«ßqç9®^ÝÎ]:ã¦^ÇÅÇ!nÝ¿_vÞ/_EéxlR=g|êC¿Îã_üÔS}üÓ<ü·uzÜóð[xüs;qË<ö½5Ýñ'µ{ ·ñwöø,\ K«']°ÇzÝAúwø0I;d%iÙôÁsw½ª-ºÍÇÑþ¿ùdçÖóó;iY>õÊð×úñ=ßûýüÜ{þi2+
+>ø÷ñ=ï~eeÜë¾þ-ÜsÿÃ<ýäã9{î?zñ}î©Çøâ#â¿ñ+\~ú±vQÀ]÷=ÌÛ¾óxÓ[ßÁæ¶òoø#ïàÝ?ú_òOÿ_«Ï=3â&¼UéÐñ&8>ñÎ?óRò7¿ûÏñô§?Ø^4¾"Ýâ<Ë/³@;Úßæ`û
.ÖÎ]dm¥pÈZW¤©fcµÇ»¾ÿn³së
+Û[·±ÕÁò2w?ðu/Á5ÿå?ù ·I
+¬R<)IòÒÑ75!¦>Í:/+4©ÐÊ·zù0ëæ]FðQ~ùc2qp0¡¬êcÝs#qA§ó9@¢$5êØÍãëòE¬0æ½ú-ß:§ÈýòÏróêµ£4(_(>Îù`ú^ÍIʳº< ]9Y>Þ_WÇôùkáöob÷BÚÕ è(ñZ0îN2ôêiös,tyu½
~¯ëE%Ö:,«µ®¾ðÜ|9w÷ý\¸xoìl deY¶LgÎ?®]y£
+Ø)[×i%ðÎ
+Ûyë*ÔÑUìÑÎ1(dÔÙB4ÙêÒõxbn`Û$+çðÓy¡vå8âÁÛWÕ%¦38Öí¢¬G1p´¿ËÒê:˫묬s¸·»@ /BWÕS8<Ø¡68çع}b6%Ë;\¸x/w4øùg·o<nߺÎÉÓç¸ã®ûètúí×éÆ@}ÀÎgÛ§xá¹ôܳx_A=BÜÑÞdx'ÎÞ7¶.}%Û/¾Ûº:[¶L¦Æx]D[vI=õr´·Ëc~ßðvV7yèõoã±G?87[_¤
Fü×ã1Z±}Æ/ZÎ-úYßóÐu«ªñøÖ¢Íe_Ó¯ûú7³y"pºé_þ$;W¿À³ÿòi¯E¢©^uÕ~³Ñä\ªWBDyô3_s[Rzýìg¸qãÚWýúï|÷@D"
íÿÜÇ'>ò~~êþ=~øßÄ_úwð«?û/Bñî¹ÿ!~ìÇÿ;~ú·>É?úù÷ò]?ü£_³ee·¿Äÿoþ-*¬DÑKÝDjì:à =òÉ}wÿÕ¿Ëû{?Ã[~àÿÁ׿ãÏð]?ôã|÷ýo^Þ5æÒãADxâ{)Ëä;ów¿:X²
+VOð?ðW_òu×.}ù%lgïb0XCS£\Á½ùÏÿ.ù˾(%AåçëÅͺkéÑxú
+WÎ1VìWÝúÍÊñ¸x ì]LFØ¢4ããégosíÆûS&ûG/ÚñÛBOTz53ÈB
?yîÎ0Êèo2ªªäðÆeÖú)ßøîÿìس6e¡§îâ&ثؽë¸Ã-ªO
äc·
º ËsÒdwbVÏÇÉ#wõò3íç~ý7-º|
+×hCw°ÄúËÿ?ôþ+V6N!:A¥
+W_¸æ÷°¼²ñþË$F=®Å¯9yê,.ÆsO~ ±#¡+oË«^ûf2¢|°D_ÎÃS³^ÿ
+sçÄç}&/Æ ¼Èï`±¼dÅ aJRÕ)÷ñ|úÿÚþõ[þèKL5ÂÎßý0çïXkg°Ö~~çæ¥PL#,°²v"NÀsYâýºo+þ{â¤s&WÚÌ·Pì77çSì7¼õqöâÃl¾h[¾jx=ÒU|~¯8I",GëKì_i ü¶¯Áà»ßý}üì¿ùé9 þ÷ñ#æÏÿ~Kw>úÁ÷1úG_3µìãyüèøÄG?Àxx®õYÀýîyàU¼ã»ÿßôöwp2nÿÏ~Üÿº·pâìyvn]k±Â$J&Ywú|å3áÆ˹pñ%qÏkÞÄ=¯ùê¾_üÔoQW3DO<ú»|Ý7¼ÍSw,tÁ=¾ÿ/þ¶n\¢Ù<sW«j;yüßÅPÌ&dy÷XýgÿêOr¸¥MW7_ùýñ»½ôïLÊV%T³Cöwo3X=õ²Óë/3°qÁ$_åûáa6;.ê¥îÁÖFCvö'lï8<êYÁþVñÕ÷|ñïÝ7oýwñ³ÿðo!u/gÔ³1oÿã?Àø+ëe°
+ðç¾vøâܹóܼyï=?÷³?óUðp<$F£#þÑßÿ;ü¿â'_öëFÃ#>þ÷ó¼O|ôýÇNOA¸÷þøöïø.¾ñßñ²kÿW>ÖNc÷ö1E6ª;ï`VÎà÷¯ò³?ù7ø/~ò_Ñéöþ@ÿ¹ß{¿û?ÃJ¯Ç3ü_üøÁ¿ü÷^RdO¹ëå¹´³ ¿ûËÿKLö*ùüÇ~·|ûû¥uVÖjS¤MÕµ}YB')¤k¸¢¢°Cü+OwÝs7O>þ8¾r_ýû!/5@é*$(®?w·v±EiAfVV¨LxV
ÍâO<<ö{b:Òé
+xðõoá/üõàò¼Ûçáo~«§Âa=GáÌ]¯y3/|é$Kó%M²r2`¿Åq³Ð¡3²@J7IÏÜtQi;ݾZk\dç|þSáuß°êþ¿ÿ8~ð7øÊ# ¶sîä-ïøþà+Ü~þiýíMvî4Gú«Ï>
+üà¡ü<ªÜ9^;³Y·,§ûýµtº\5Â$9ù?Ï=¿,ïòðÞÎòÚi>÷ñ_§¨!åáW½»ó¨?òÿ©G¡¯
r¢ÒàzªÈø%Ç +JÀÎb¼Q_yâsn©\ozÛòdÄåe:MqøÌ»|§/²qú"ß÷ûøâ§~£½àwýú·ñàëçPàGëÿt)L]/mÏçSY¤Á<ûôSü»ûóü±w½»õð8~¯^l1èoøV8:<ཿókܸr¯{àâ%·y%JÆSO>ñ5ÛSB&¿çßü4pãæu~îgÿ?ü§ÿÜË~íÿñÏÿQX*
+þí_f÷æóüé¿ñ¬.xuìߺÆoýÔOðø'3÷<Ä¥/~*°ØºË¤'î¤(
+®>÷4"K1Ù»M.I"hÑøºDt¤°\{ö Ð&,÷¬EKô2\Që/<¶fûêsT·Á×%¾*ð®æwþÙÇÕ/oüþ¿ÈòÆñkçhoÏô½<úÑÿ¬!ét1Y?Ú0ZðÅG>ÎÙówç{
+¯à]TÑ?ÅÿYS[Ï£z?I(Ëé¨f°bH´EIÍÞοð¿ýoú?Î]~ýK&²çø,ùíÃÑÁ>A=å(¦£èp{×ÁWHÚòñ¶µK/Id¿\Ü,J}gÈl«eP|æC¿ÄäÁõÅ01Ýxþ±ù|¸Ý.{ÅíÞíçùåúq^ó
+ïâÕoy×KÿõË_áÓüE®_úJszgxÏöÖíc° YógÿÂN糿ûkÿ+_úìûHRæØ1ëû^ÿÇxÃßÊù;Â=øæoz+ÿþ=Av1iðÆh1×tMþîïz7ûoÿݯ¹x½óßÊ×"K@µ¬éÀñ¶¼Ismä$.>´Dû»ï½ïxç÷ñÍßú_t®_»ÊG?ü~ÿò)àý«àf#ê[Ï õ¬í!éô¯¸¡|L×ñgÕaéæÖΡÒôÔÉ)åñ6lêW+£ »ÓnØå%òTØß; ´>ÈU¤¾háá½'1^'eu¹K¢£ÉvIº'lUñÓòlïÙ= µF)XZÞd<<ÈïZîel¬ö0¦®j&EÍtV3.ÎZ½>ÝGK"^F+'<ú
KÔÖ¡µbiíy>àh¸ÏÒò:ã£}¶äKÎ^åÊÕ]Óà+!ÒZdÖE_LØHñ#u°Ò)®âPÔf.,>ÃaåäyVOc÷ö5[WѲÀî÷ló"ùIàgcìösT[X8Ýw:é#IF~ñõHZÞtÜÒ(êñv¸ñ¶ÄUE¤( * ²¤]TÚ!ïX;sZkvnß`2¡iKIÄyCDW!½q!éZ|· ð5£ñÃÎ)¼ÃúJ\W¡nà7×c<;ßD÷ ØáúOã\ȵCP¼ªIÀ6]Ã<£OæFmÄY`
+ïÊ
+\£pí7oKûwÏ9ûaZÔ!Ú¨hÌ>³$ïæýè/
+Ò¯]ú
+Þ<QEyº!bj_ÇÆGá
+o|oý¶à5ü;¿ñ|ñc¿KJ×0v¼GF²uHøKõ¿eyyÿé¿ýAD÷Ðý;âÒ»xeØ{Ïg?ûé?P{ûý~îgÿe{aICÉh7
+Þ·Ý®0WÝûÀC¼ë{~·|óÛ8yêÌzÑN&|éçc~?7o\o;\i8§"îúüÔ×@\ÕoT
+IþE¼X%(DÛCC1¾¿D®d)9"I
+'LJK7õt âs^ÀC×nR¼°{ýÉ@GÓ$ß@Õ¨Æ`G¡àBoËæK|~:¼®Açx7
+b<1{ÕX(ÓÞ7ªy-Õn *ß¼¯N
+z9ÑR qikËèpÑáV|,iUíÄ_ þ^y ]lG4&ì
+ØññìñÇ´Ï7oÞ੧äþûø
+Úw}÷÷òó?ûÓm7+ñUkü ¢D¸ïÁùcïú>¾ñüQNý'ètyêI>ý{糿÷ÉØu«y«ò{8¥ãÏaÕÓ¸q'Þ±ÒtX¼(jGU(ÎR§tô»)ýNµ645môµ
+¥Gå,rdXà|øyBÓn9}ö"ÊOÑè¤ Î{ºyÆѸ IO¯ëàRµ½?a:
+pbS;Ïm0<ûü>:É@ÝÁJ0
+×Ò.N/øÒZD£µ¦ß_Fª®LF!zh¬®ÑM
+*
+1n²GµÆG¸j2 Z<ª¿YÚDÒ>*Ë·6nÜeñÆoÅÒR¼÷xQè$8²É1Øз·F¦
+çK-m9½x>ø:À
+.q©§%³ÊH
6Á IT6}v¡¬{Ø&
+Ë.ëhÒ"ÑSWÄc!C]0MQz{á^¹ÖÒ9u>@ñ·1C±¶ç@ÛÁgÄ,®6æÍ1EhøÒçyÃßÂæÉ38s'ÿåOüÏ|åÓܾy¹å¢#°´ºÉw¿å©ó§>ð+m/*Æ©I[ 6çÑG?ÃüÈýÝ[ßþíüü{~&±)X,ñ'èOóÎï|÷²¢ðùG?ç>ñQ¾ü
Ï#Z¡br3öóðH3j;c1VZ!yé-ãë ZÅ9vUN4Ú 4ãbÞódZè'u5÷$åexoäI¸ËJ·ÃPôó«K9ÃñIQÓø ÚzÆôh:£¹/ÏöSl®tXäíMÜÈ|Óؽ¯/åô:)&1L&%Úò.¦µ&&û-°ÐªjÖ:q*P3Ëó7oQ×`ee]cë
+¼bg$ØdówÝËå§çÖµKhc¨OáO?{çCþÛt2a:¾®ªQ#i`Ñ8[S³
+lü~áy{g1IépÃ[ÈÎ%T7?qzïéÚ]dgîGuWÂkÞzѪpe9åöUêÛÏ!åíÂì¬CuÐY/`§ïÒ-®{¼itHùQÑ4b2Wx x["ÕQAAìOÍÁpJaÖOßKÚàªiÒ9â\ÞSí]èEÄãê]¼áà´²\§ÁU¸hÑêàÐkÁ£ñâQâp®@pt´Enµ6®¡t¨)¶Â=tê8í5Si4½/ê#übRi~Ö{L+i×:B5Íë-ç<ZÚ9ð3üì>÷ »a2qMk
+´RX¹_GÇH8eqLÛÀw´ç-Éú½».âª*¸¦9OmËÙdZáÅÑILj8<pmkyá÷þ¥®e¡´sA7ãÌF¬»·u¤ù8DÎb6+Xaiiã¦ÅÒyö§8ëY_[¡*`Í
+jz¨pL,[3Öú)׶ÝÁ%+Lg5ya|/v³Á¤ÅloïqíòVM·øÕ2b¼óXç©aÀϵíî òYôúK?sÕ¥6¡+³5Åõ'q·1ÏUl
é-ÌQ¯^?.@Çm
+U,HÚ¤¤wº÷ÂõBXÌó`8KqãÜîUÜôTôÔ=èÁõc«êÚ"ÑÔ,°Úì²E//qîuãÈÅ
©
+³søbªÈù¸4ÌJau¹Ö_ÂÄÔ9ÝÊ*\9b'`ÖRÛ¯Â󨧮
§Sà
+dT¢ðÎâHªC¼+ç¬JCøvªE¡A)TÒEÊ=´ ·*¶û#Iìå·Ó
+7ô°Öù³wΰfhÒ(\úBTkc@𺯻áõ©&øz«Ç1É+'¸ç¡7qîâCdþqj%°uãy®^~çx$ÖÕÖ$8¾R$Ä?ÿâ/ü*÷ßÿà×\
+ÝÒò8²xH¯Ûe8±{óÆhÐýxÑ;®_~í=$F7:{ݾ?kk¬sX;¿¤]]·P`D?]¯1llàäÆ4
+ò¯#9q'ª»Þ£Xxª&IL+u¶öE+Y8Pç
+O·Éü¥ÀcB:&PÚªÔFCE]= ØÖ&HSBpó¥wFÂt"
+ÊñfäÅ·×jÆùæØrsß=ÇÛt¼¾ÉgÃ9çç
9&.>óÍÙ'á`¡y¯çºy¿°¿{mHä
}ÖvÐáZOz%!oé?|èCøào}ë·óK?ÿ3À½÷?øZ|_¸ôïýÍ_âó|iEè R]n¶Q²)ðÂß7Ó:ºjéO/þzq)^|(ñ"ÐZ££Í¥nøËâQa§¸3QKPNokêm²Õ%ÒN'8º
+ÅÄ´×b£¼ò>þA.PVóef+¢PÝ.¦ !`ÄR&Æû8m$GL®@±¤Ý*ñNpyó
+ÅÛCTáM|X§
+Ô3IÖÎ?µ!>ʬÔkaïNÒÐ áÔxIàuà»xXÄfÀ$!D<J¥± ûèø6ÎQZÈÃÄ/xF³æ¦
+ëC²6¸Ó¹
âñvkd
ö©0I4$RÑ¡ðâÍ/bñÍû×t×j¡;Çä´µ(NØÆÂè
+òàs*ºÅÄÝÀMoEßPA¢C§çªÅøè»ë$ÜXF·²´D/Ïn'3Çáð·öHÓRíûE)¡¬ÓeyuáÁåä4ÑàÆÁÑ*ðEãµÝ²¯HÒRì<O"IHgòg¥]ÆKçHåÖMt²tò£-T9D)7
+Qí=Ý{ÞÎûÈá
+ÒÕS¡óTáP\ú¹Gñ>ºyü׬]Çëä´`ÝR¸&|Ü{&EE/Ï¢ ;ÆÑÑÍôz¡üXIUX4yÔÕ[
°ØÁ
O»x) áB4wÉÀïWn¡³
+\¡ìëÁÖS¨nhK>N$"5$9.ßÀÏÀNpÎôu#%>]BÄàf»`zÁX+ðÆX:Pî¡ÄÞ?¾D<ù~%¡S½pɨØ]ÒúTÞ6V¦Ýt¥Åí©Gi·ÁObámY$ÈHçDèv½DÃA/tÃ4ÄZ?wï#BgJâ²-6v&NyÆ&OëwÀ/&¿Å?h¾÷¾9{æ<·n]g°ô/Ãíñ/?ÊÇ>ð|ü¿Gô0zÔÃl7K¸®ÒÍó1;¼*nU3èøâH(ÎF+§SXÐøA
+¾±®$A
+]®
+xÑKÖ*ÜnZ!lCÆ] vyºe\`.¸Ý]Ê+WèÞw7v:³õ(6ËÞy4ôÏR¿Ëd2ãöî$í°¹Ú%Ñ&PË¢ÛóH,ܾÜ|ýøt£Õí/Ú>Ò¹ÏêáÂ=Ò
+)ÑâÂòÆVs(#xIÌ&¤IBftº9§NdoÛ[»ÜÞ:ÄZGÈQ
+Þ¸:,Å|è:éô(Bê¥þ£zëýå
+kÜzáÙ¯«ÐUi¥é>¦Ú¥¦B¥)àÉ|gT'gõä}(ºo^¢V)F9ÌÑ-zvHê
+«5â*÷~=;^CuûkáÒ.sèjî¯Q<ó{¸¾Ä¬td®¦÷à[è\x-Ò_{Z4
6rá]Kp:&tmq`ï*ºªBÆÌòÉÖ1-ðJâ(gC6Ö×c@
OêI8 ÍÉhÙزÔ/Èím|̽ñ~yÈ(©K¼âl¯¶pIO
+õ¯©¬<ÂkÁ
+wâ(PCÿÎ-Q°Cê#0=Tç$ÞA÷Qn«\KÃ1Y'ÂÁ¤]§D'z(ÙH¡@ê¨BÕÛ;ÇZÁ6¯cáum0)J
kÂ)
XÜç\øZíÿÁ¹ØÀøàÞ ÑÇ×;âBUæpD{bJ+Áÿ6
+ Ñ5"á×êå|sÅ|èïçmoÿ¶¯¹X9w<÷ÌÿîöÖ
+ýÔyï¿ÿv·oÇ·¯È|SÚÉ©ööðE, 4 Û¢ÝFÆB+*t»²ðb-vÊJiüø(v¼v;Ë;iãt´9ÒâZB\HZ&UHmàºKÔã#ìÍØnJváèxêº 1b}¹÷0 §7û$¡ÓËñUݪ¡aIS«e+_ at w
+ê#Äñ½»!?ÓJu%f7oµJº¸r¦ÞÛ
O|¸Ê´¶ñ9Þt¸~뢬ÙÜXG×»;sí
;ÛGxçI$⨠Úh\âѵiâ¥FãÊål%˼º>¦ÃýHû(¡Ó-©önt-ÒPW£ªÆ:OG qµ{¥YAMsòý£k$ä&ÿUl¼GgõT ü¼Þ¢ÚäôèÙêÉQ_}
+)ôuþkþÝ;_û JÚÞhæ<PN!ëàUÒ.Tíl$®ª±·ÀV%vï*eÿ4º·ÌH«IWNÐ=w©i.+¨Â
+
+(F·Ï ¶Ñ¤`°~'dz¬
+^¾*ü{)QOvTGØjEЩƻVj|ÚÁÙå
+µµ ïjÎ
¼7د¢;à¼IAl¤Häæ]°ÖôU Iù¾
+h´ØÐ 'º
ñt{oGïvWÛÐ Z²Ukc:gxSx\ Ø®µIÐ9Cí3«az_ìck$/Îâ½É(ò¯£_>ÚÞĸ_´fsCóäõ&îØýª¥÷¯`¡ýÈ£ýàÁÒ*¢S¾ø¥/qëæ
+Nþ)Ûù½ðñý6ûì§ÂÖTÚäUôèH¢øÆ×çy°ñ+FøjJÓw¦Z®¯Å¶´§T'(O*Gľ¨4± ÇÓ9ÜÄä:æÍE'|
Ý^ìªUÖÅzmQ\½BuÈÎÆ3êªÆZK¿Gª§våâàpʤJ8¹~,©±²B¨jR³±~ÜT8ï9'=òþ^ç±W-ÐlU¢°îm+&R}¢¢ª¹Ì®M»ÏÃ&H7¹ãÜiÑm¤¼ÊöÞÏ\ßb{÷n¤8W1^*¾&¨Î5Iª,/d]¦Ó)G{»hÖÕ(I³4ï2Q3:Ý.®.ÛÍ:u¡#ìæg3F
[1uÁÒ*'OdÐYa)_bvТI´Gª{¤»O»_Ouûi¸ô)lyß½Ø)©IY~ý·cNß3Ï{)
+¨0
+Çí¿ËRÊç?tW¨»¸Ù¤]òû¾
ª8$?ó
+±%®ØÇ9AÒ5¤ál´zù*^åèjN¤²Õaa NåBÊru¥½h:Cê
+l2
+M´3Ì]JÎÆ(©¦ÇFº9+À
+å<¶?é¬Põ_ôÞcëpÅ6BGáʼ-ð³¼
+"êiÄ%ÂA¡è|C[ ²nJk4Ó·ÚÄOIÛ¿l"i(üeÉ·oßNáýÓÀOüðûw»·oò»ÿþxôÓa÷`*Cç+1$³a[=ÄGöQÌ%JH:9¶* ®a¼tú1Ë4s~ãfRŤHÓu-`bצà;K¨qãmT5k±c£(¯#¬T N©ÈðJµXòhÌöQ¶mpÓâùçH; é8çISÑ´®:ïk=&è,m`ì.Æê _Ð5JçÜ:¢Ô.ÙÆ4àê1KÝ
+3¸/á½iã½ÐXt4°q%ÆÊB8jÁlÐqA$±óÖ¼®4%ËRf~±5\¿¾ËÖö1 gÎÞIÚés¸»ÅN}z¡D¤U]1<< Ë+Ë õlâ|Òåå5úK«Üxþ´+è
+VI³»·®áÃkOá=ëY'ØÚhÁô7I6ÎaÒéés,¯¬RGW¾Ìö< ¸}1!»ð½»Þî@<ÐÒò ºç=ö~ìá-¤bùëßEvæèÉàBÊ2qaÓäcÏ}pg?ê¸H½óöülLýüg0ýá_¥IÀt+-&òléÞYnñ£À÷5KQ褨yº
+õ[`êðË}Tï$N@æ|UîãÊ=¬£±XQâR ºX'Má5ʸjSÊ×Ãx?ÛÅ+gs
+,ÁS[s°#Á"¾â&(}J¦J´N ÒÝRSýFdKhÒ46 þKκkÇ¢l´`½àó
+$ÍâýäÐ"X£pÉÙHtlçk\÷4¢]¬?zé{Þ«6ùµ=óÞhÃa½wÁ»bÕ+{A¼~êé'¾jàfóqëÖ
+{öéù½O~ø¿ö_ÿmzýÆ}üÃÿ¿ïßñä
+¸é¢ÓÁ-vaQë.¤¢ÄÆÏÏó¤×Ù4PfCdºÊO/¼ªýÚFÁÔBzÎ|0*ò
UìBo¸ñänÿZ íãÔsÑx(ʵ8¼Sá&p¦=xW¢ñX0¢&O=
ÖÞÉøiPu©<Gʺi´ª«©
ú&â+| F³}sÌÖÁÕõ3\ÉèÊ>R©ën¦HÖqi7àÁbÂÒ-ÊU÷v÷Ȳ=AgíÝ$Õ¬ôºÔÑË"Ъ ¥¡&ÒYlEÒugG?ö9*òÞ
+"ï
+\=C¼%éoÝ
+K¾<w!]G¹:}N©¥D1Fùi`$«qÅ8PÅ"nX7XX/ñXl5Á»âÅKi
s3¼IgL
+úKkÆàj6hfy£æ\z¥@º«7AÅBÜPNw¾ÄS&¦rBë#5Iél&;ï±60ó¥hT§lm,ZI
+,Gùôâûgð£çü2ÃÎ51Vm\z¤)ëÞlqóò&/ÿñ÷ük~ìÇþÊï[ÿÙ?ùsêW,rúÄùó?ò.¾éßΩÓgÝ<òéRLèH¿B)T6@ë¤ÝL2÷Ü1Mé"ÔÓ¸tRs*%$ÝÖZ|]নõ³q7?}-k«hZD Äô1FG8ÒGVÖq½.ìt¨w/·no:Bº§±eç"UÔÎ2¶%]LâíèÉã#uEïÂZ%ÑÌ[ s$Ê£¤8½AD8½9`y1èjÒ$bµb1âPz7tàuX:×®mY]]Ƥ}dxI,Eí¸±;¦XNXiåB2qÀÑ ÎOn]»Æ§>ñqÃ1J·®Ä$غæöµg¡×ë±¼vb:b:Ò_^Ã$ ;[¸º`t¸Ëɳw%ý[/ÄWbÒ+«ë$iVþ`@U®2ñÎQ9(<²ôº]üò¦*c<¥Ì(ÊËÔ·B×Ó@ú·f°L÷â×-¸ôî5Ì`ÝYÁ¤7: ~þ3Èô
+i/§¸ñe¼ê!½³¸$ǯÉÀzjzÔÞ£M|]#ÅVJ¼Ò()±Þ
-óSp^ðËÊÆZ¨õ4rbQ*
+M
+X«®håÐÚ`¢zML'ÜZ©(YnºLB¢KÂaÁi·d&dæ9ïcGÖ{¼ªI´ÇaæPÌ kZ©9/ßÅ(ฯB£Àtq^,L:jaq»aý´5DâÄ./kÈ.¯\ÿùOýcÞøƯço|eéÝOþ½¿É'?ñáÖ»ØQóLÇ#>ôþ߬'
+\,¢;hm(VÑÆ Mpè4é
+0¯D~Q9º·¬·K&ݪ˼¢}apLlT8)IpQ¦Û`:igØþ¡ZQbN^mÌѹ(»õ(©ñJè©VA*S9öÃ#&}ã,½û:¸b.rQä¢ÈÛd¸ðÑ
+WÕôºD;Ëþ Æ-.Õä#~µ¤]¤ÜÅ×#D «}0JÞZ»ØèæD#ý;àvxöñ¯ðé}ñxL'°
+Ûn#æÛïb<<ÄÙÉÑnë`UcÆG»áõO_EØT;Çht at 9aËyÒÈlF- çïfeãf³)©1dirúÚ%ì¦)*vö»Þ@~ên"Y=N2ªvÏ|·UNèÜýòõsؾ9û
+Mb´ncò.b21h£©nA5"Y¿dõ,Ô5Ò_¡<¼ÔlõUWA~+B²´N²qôô=áp·cT¤¥ùzÂ}½+I|%ó®Å 56ZÁZD-¨ªÓEÒÕ0áhÔ®"ùJðú-ç~¾²`$:P2©0ÝÀ¬ñ$ËÊ@Êò¡Ä91j.p¢Æt1ÝS(7AãÃ)BZü×4£{b½¢rèÕIÖ_ô/ø¤¢}îHöÙ**²ç3ÅfNæÞÌmsÆ|GTn£fÛAÅf4ª¯G{øÙnufï6jÜVW ¢ïIÃÒ¿?¼ÝÒ>þùOýcþ·ÿõ #¦j´´37_Ã
+î?JLE:F2hE]Îpõ$È=M/Ø
+e9¥Þy!tÉø(i
+Àæö¨Ø
++<ÓÚSÔÐK³Âbw·ÐZØ6IÃ!ÖË«=zD¶²ÜØ2-{(}µõÙxáÑ«fLGñõJ8èâA
Þi<ÝÓÎ
+1¾
+¦Áév2YY?IgijºËx8®W&t!F%Ñ~&IZTCºýZ+ªÙ$Mé-¯DU°·s«r¼wTån§OfvÈò.uÊrÕe
+¨gî
+ìî%tÞ$~Gç×o\@Ã4Ï·$RTÏ|{íK!øÔ=Ì.êÚdyÆA »6¡3ÛAÕQ8aL
+NöàÅ/ z«¨þ&f°F}pjÿéé{±ã#TÞ£¼òE¼±®'~ÒÅdaÝé¢ó<(Ì\|Fô\ÆòÕ;©CÒ%ÄMPCE"~ê}Ôuôî2 ._ì
%_S°0KwEà~7þ
+J
l³t)ù øÁUìfQ¡ÊNÂýÖÛê$0N*ÝÚ(sF«Æ°´+xNÎiÄäw5î褷MZ=tC÷®;øÙ6â
+Ð*µZN¼¢TâBì¦Y"öÃôè-ªÞE|~3÷ ]x4ÏPÙWU!¯P9m½$¬nnÜ,ÈN3çï5Âàuº-oN)ZtA ò~¸øµ1hcÚâÛ:)Aù±¢¢â¨áÅ'K-G8\êXäQHàp
w¸á.n÷(GH] ¶F')ùê©6f»aGᢺg)¯|1`¼Þ#Ê#Ydýð5vxWÔ·öÑtÛÎcñ6%RΧX
DÊÛ[Ô£#òõ
+Èsæ³²âÄæ
+Æ(-÷(L\l1a2< ®¬-É:=úýew8}ÕåtWñÖQ_ÿÊK8èêüükè(6¡8é$¥xâ#TÏ|êÚc0ÚAÙ2LN;øÝëèÄlÜI¦Ëw¿<ïP^û2ù©{ÑÝen>ó9º+'¨®?Fut;tZÊ òÎAÒ_Ã,¢>Ø$ÁÍFLjIs|1 °PÖÃW3|]Øø(á]
Âé"ÉJôÑMFÚ ;BIðXÝEL|"Ü$ÀÞ\Öd9¤<ãÃR"*Wc½Ý
+ý¤mئw5¯ãIW³¨¤ ÆÔØ»yò2!I A¦"¡D¤Æ¸Z¢Èª)¸j¾è¦Z¿_KKÓÁGÍgnQ¤KHºÒ ºpïêð8ÙÉ°0["7uM@u+?±qSvvS¨¶;¿j}u|ÑÑ.[
+¬&¥ð~Ó¢_)¹Éz},ü¦õñÌOMcDÞ[êr
+ 8/ÂvÐ*$`Ò1í4nCâÓõa㳦Í!É?¤o¬àÃ&Ñý¬+qAîëfLî×Õõ(#Ô:ÁÙºuLRѨYë@}ªo=6ÇÞc´
+^¶WQ@½ýlü^18Ð;¤ñ)Å1ÒK+RxD¢±h/øªdzé2õÎýûîå¾;/¤9Z| .jùN&û/0«vÃã%ØÌ-ýX;ÏäN#°î£Ó;»Û(¥XZê6(ÑÓçÃ
+QÝS¢oç¾;7óà=nìN¸}SÖ½WI|`ë
+[ÁtxÒ
+_U`ÊéÞ`ë,GÛ$&¡ªªÐAGõkóÎt41^ÁpÛÑ[^cÿpB÷ÈÏÞKqý9êO#u
Õdå4ù(àmnÌØ¿ÿ)¯~òÊPÎ
¥àfS<D2·¤ýÜx}ñ!\1ùÊ{±Ö¡Ê}ñÕX2{ü#¸$!½çÐKx2~ú$ç_ë.
tbLuxüÔ}°s«#ç<É@¡O¢{˨$Á»àõë³åàÅ[îâëQFA] T(iÖÇ1ÙFè&fKÇûÅEÿhºÞÙN(^ í
fD%AH?¹d'1é2Ötñ:Ùp
+É2Û 7]Òßï]|» ÷ Ã+ÊOb4èºByah¡¹D¨yÌY)Înã«!Þ^û#Þêàif7H»«0¹ø²Ý¹bgPËà\q¨ÀèÀ[\q>òöbäTÓ°··
+ÊÛ;Ô7nA//¡ò;Hï$»Ó.ûG$~Ú,æ[ëÃ9oÒ³<ÈéuÓv¡ÑÚ4>Îõï!ëou¨êñîÓÁ©ÍVT¶Ät6ââeTÓÞe +Ë=6ºt§99Øßf}ã4y·Ït|Õ¬µ«Í¦8e¢®ZfóüÅqIB¯zÒÌÆCÆã#X°»W©n=UWeR:w¾½~kêÖ´³DyõKøýk(<ù
×Óûºwº{´gëgÑYÞ¸ÙÞutÞÅÑy¶QINrú3÷£N=@²´&ÃÝ»B]ñårç
+få,ÕþÀ×îâD£´¡®K¼I0ë@'HÑ¿G{S Z;ʲàõìG÷xpíd)læí,îeÀY®Áz«ðõñÎÎB·î..×¼éâHñv¯Gà«°¬3i`:Hºg²é#¦ºrc$.µ6¨ Ðv¸1:YÓÀ
+ëAÍ¥È!y£ñð PÎãbjl'
eǨj¢ç6m|©!å!^ø2È»©r5y±ÓyG¬æ¡Á¾µAÐí.,Ôù¤Ü0DI-õ%bGÑ;/)À/"ûc.X²@:®(¹¤¨:´äcµà¯ MBÀïl0â&7È÷,ÊCsÒAw6ÂÏ(#É eÊWa;ýoX×Aâ§mBA³¬+Gxï8_$F¹®QݾD}û9\]¥6غÝx«Azåv÷Ô%uÐYìÎ×aNÞÇðhH.U%÷2xIqõ¬ÍÍ3
+JcdÁ:!ñÊÅÍ[Ì®¼dë¤^+w°»W0Ü¿òÃø|tkVÝv.xÓ®ösÔÄÝZãâ-TCt}·arTÅI¢§BuOƪ¹$¥ÜÛ§xþyª«éÔVú9³ñ£éÉÁm´+g4°ÂòKG)/-1
i
+gÿzsX*mÂbÉÇ¢íA´¦ë§dWpÅ8\o®â0?ÉNzñÝ#FÓ)yÐéä4§¾ýÕ/ÁlLºyüÁo"Û¼FçÎ2½ÞÂþÄvn3Î`zHÞì×»é,ã9xÞ´a§|9¡Þ¹+¦8å±åôÔ½¸b¯®ù{1
+Ñ_ν«ââ
+¼®]ï-J 7'Æ ¡»uEì:S
+M:Àë_ð®K'ߪ+.;Nã{PnÓ×a
+©+|u¨,L¦*
+uIø@Cyв1Dá´$OTàýJÀwuÜ_5û#µðgñóæ¡{ãCîßæñð¢½n¼ÐP6¾Âõ?» åRÂôj¸¦±qro¼TÛ¨©hüjîý Õpón=XÛè4í-E¾åË~Îó)m¹nJeåì"·vÞ¹´GXS¼ÕB·¬ÂRD)Öi XµÝsTPX¼I¤±¼$*´ÿ¢§ª·1á
+²^ÚÄ`/ñ´lùBæk¦ÑG.zw#ÊSÚ»Lª³B}tß¿+ÆH1l*a«_e+Ì÷
+®k1;Õ¾
+Éà Á"$a:1>Øe%Qè$C×;ô8Ì7Ñ¢XÍ3ªÚ0L¸µ·IRiNqíIìh«xª³ÌôƳdëgéÜýFTÞûÍdåæ
Gé¸2t3OsÒ;^ä+ØéALÛHÛb/¬co>Ä
++'QiäôI\QàµFõWðu«K¼µ¸Ñjm
+Wojõ!ÛÎy¡ö;k«5V`h«
+$qk² £TÝW iMP¡©uyyãgm£ÖðüUôÐÇR/z/.®¹Ù¡H/îCMiS|7´DçöPÄÅø2p}ìòíc-mzKPáª9T+Bô
+×vÓ¥ò¦Ï<ôâY/ö
xEX!&äy'>°oÒeÎÛki³!lü0³Á
ÑC' Mø½1(å;E¹0bþkø ¨ 4 ÕFɺQã#'/IÓ0nÅy%ÜÛ±¹¹NÚé2;Úi¬sÃr t+û×±·±Ã}|=kìG£¡¶Âºdõiw q½µ3ÔÞn
+ÎÇWaDK6/à&Oj÷Øué=øGè½êhPßze÷lýiwÝôõ§÷ò
+4§[WÐtä¨Lvqº¶Ó¶ÆÇ@Ì;ή±:È"}ª.V&Gé;;¦Cjîô5íaJQ½;ÁhÜlDu4¦Ü/°eâdÌz¼hIñöQ½Dqr¥ÏN¯
ר¹r²évâífÃHÜ\üMÒ^Z%¾E1£jÖrÓ®.öNR
+Îà½cmi@&Óç++kèÝËØ[Ï*x>9ErònʽjF¾vÉzx ;°â:ÅöM¤Ñ¹óµ!hùÙéQiFqùsÈÊiP)Î{ªÝ+¨¤+gT·/ã;Ò;_i;`2êá>N$Æ/ÕÊÕ1Á{@÷ãT2 ^È
+Æö×+Mú«PôbbF¹â'øªÄä'ñ*Åë.ÝÀ§ka1UáUK@÷ðÕ0¬«.(Ó~
+vºd+ødîï
âf!~°^õP¾Bk°Å$ÍXïÛ)ûXL4ÆQÙNÌÿc1å³ø_ówZñnsô§'*«Hm(Íç&TÓÝJk)ÿx»NosøynÝÜEX
+°_üËñçLó
+þòg±7cH©8LÖ¨òÖÎßã}ª«O`6ét1«ú¯z3I7AÖîÅícG{¤w¼6,6ë)w® ½*ÄE¢Ü¿X4iÒNÀYÁ[MÃÁdxkÑýhWB\âE
+^÷&(Nó%ÁëAØs9>]ÙaøÞ¾ÆO®áÌ2N<RâªC¤
ÊñªåÞUHº×ÝP¤´B$9V+h(vpäï*ÕÙ@û*ü>í }öÔXI;-¦¹øèÛÛ}¼3ådÉóó@N"áÃû9ÀÚü¾¹2eqúþ(í¹Ù4å© eUqiH³ð¦ñ>^¿Msqñ"Ê?¦]cÄMÚÚ÷ìlâÓ·ÑîA±nRöhÇ#^GÙnx¶Ë2B`^ÚÇ'íëy¢t÷%NtLÒ÷ÀÚ #3_MX_[£2Ú¿M¹¿ö¶nÆ¥B¯5U5Ìl(ÇÞÆ"Ò\T67/?pê¢À;GôÖN³±y½ÝmÔê9ähz÷8GÖYÁö(oQÜ
+üHƪí[×HŲq÷kÃÍ×]ÁÚK$øàBí|ë+kg=2?¥µ°3*I/^ ]?ïr¶ßçäÆÆ£Cl?Á~ù)xö£+)³ÕstÏßd9åpz2¤³q
+WO¨ë»ûS£ yÑñf:&Ù8G÷Á·!¦^¥$¢
+×LÏ®Koåi}d~&ªå|t~ý>¤V4´¹ù-Æ9ßæÒÍÓý=Á|£(±X[üBrp6mÜ7Ŷ1£bAÍGeÕ8²yßú>4¡«Îûùµï£5mtl²ùjÊÿRÆBý
ñ@æ¼?VãÖÕ·Î[_ó/uUûeæãi±!ͳÂá5a! η1zÜ!uHXðÞ!®ÂQc!«ËÌoPé:Iܳ«|½rm´I¡â·0*åY§-Æág°éõ',& w±uëj¤ðMsm-Ú;¦·.!³aàÇá<R$Tôîÿfò
/S^}¤AUÀ~µC,:IXDé9
ÓT2>úÒ¯béþoÆ¢®+Ò÷mÇN+ܬBèôW_}bç*Ö[®
+Y¢Q#UtãÙ½ßBgý`¨u{é4½v:ÄÙ2¸Ðégk¬§Í[´Kzöað<K9{ò§§~ý
Xi`Ûk)Ð
+¡5B1>ÜdUQZÏ´tèôò&Ýnn~@9Ñ]Yc´Û'Û~äs¿Â^*Áã¨o=Î2ÇþÞ+
+õP'øçñå^¸ÙfW0ºbíõ÷Q©Æ·þIÌÒ:®¿«
+kOàzí\(BeÂF½Ç«[LºAçy(¶&áUÀ.²¢(BZ³L'SF8DÓͺÝ
e½CU#¤
+þ!b=ZBÊ0@*Iãr¹úùÐC¢®Ùçà[Ú£RÁü'XW´ã§YúâpR·óP`&)jtºª×ÄÜ祩9®Åtd&é8 0®ýºyþa3I
iW+iqd%óå
=\¼6¥=\<s*krà6@$6Mo°e/
+Þ·l£EY©`7 ®AÃ9ñ²ð±Má1½9 ZÅZ£ã^´l±½ÖÍGcè&
+¼ðxÒ
ÇPÙ2(ÓQm©ÄUøº
+èõïkÊÊÒ[Þ 1 Jë0îîâÂÆ%zù4éæ0$ÉPiäK¨Þ
+õþ-¨bôN\
+ôΣzktîÿfúoü²Ó÷ÂôêÊ=ûªëOD8'A]+'B? ¯qGÃz.TýR%ôµeeuÎÆ
ÆÛYBÁ3ü;ªKèÞ*é樬-G*äÏzsâpåj&µgV;v§¬×gíµßN¶|ä/ÉlJ¤sçÿ¬C=Ú§¸ò¼
+8M²´¤Éæ$ðÑ©ÊhCÒ`ò.'6mèÎöpíØW[ìÂÐp7è¹=aÛxu
³6<¶-Y?}'ý³÷c´!'¬æUU2]¥çÇÛ¢XCò^xá>å§(o|
ÎÙ¦@],ÑzB]O¬té$ºãÎØ T
+Isê½ëT»W[|ué¬ ºË¸é0Bº
+½¶ÚÕQ&jª-,DË»²mnYå¡L´jÙ=´[òzt²ò(Hï}Øx[3[Z[ºérÀvµbª!*íC¶è4¥9V:OÑ¡ì-nîÓb² ÂI2L#õpî ¬b[4\Ï÷ݸ§³?ĸ!»¼Ùp÷Ý¢¦¡¥÷r|±Æ|·àc÷ºÐ?Æ?Ké6¶ÞKËoA6ãEBÄ8|ìdàüòfslbQ¦×øë=787ÆåykÎ1Å\ÓàKÂã
"Ý,ôPÍ))Á"Y
+Ôò¸-ÙGº=ÎƲjs÷LGäy,벿sÉè0tÆFîO'õ³Á:q/cs$óq:#kc¸[îK¼8°7RíÝ ¾ñ4j¶¢ÀNPmÍÃ×Á7þI:w½Ý]&Y=MváÕÔ;W¨¶.hðÖY?²(èkXJ-m\Áa eè
m£WObÖÎ :«îã¯|âÊCVg ³|D3¼ôy$ïcò:ï¡×ïÄ¥9ÕÁ]±,eLн5ò³÷Ñ]=i7óN4IcVPduñIêÖ³1³
+J¯6ê-¾vw¶êJ^'ÔºyÎææIû]vww(&ã
|`æßÛ6{8ÔED/,Τ¬»ÕL¦®=õEn]~splv¾bë&¿ª§COG¾î5tÎðJ|ï<e|d+GEv¤È½"õþ-Ïâ1u9¡ø¬3Lm¨Gûaa$
+eè~/.4S¥ªËÀÐ ÛJãÃmÌL J¬6NÞlÁÏvÂ-;³l{WAv
+²I+¸©
èùt-ÒzbÓ.©T *;(?MUàô«Î*&é
ÏãPn2æ4³
+·Öâ
+®³!j¨ù³u.8ùQ4¶x8ùÅes-úÚ
[ã.¹ÀÊižé²cÜ·¾¹²âгØ*´8Âq/ye49ξhMuZLÐíõ±U1¹CZ`}AcÔÜ vÂ*KïÊÞ|áE; IÓmñY_MNç ÔÖs°·Åè`áÑ>ÖÖñE&?èn0Óy7Îv 4ª3Àwi3©½o±è i6o-&Ë1ëÍÁrz:a »ðò»ß<ç¸F²J»TÛqàýk«¥MìÑ^+n<Öûggs®z&ùÔ7/Qï_£xá}î7)¶®´s0Ý¥0¢æ]Twìî7Q©é¯!˧©ö®
+¸[CN]$¬!ZϹ/^Dn¦à<ý)l17gsõ¨dRYVS £> WNÍ/[%t{ËR8[!ÕjmsXÇ.±ÙT+Wæxkü[m<$ÃÿEiY=yÍA'>Åðæeʪ`RhICS²up¤y`8+:çÏÑ{àLwß=Á±5EYEw`wa*³ Xg'C§Z¾âÚSRðôVpÅÕ]ÓÁUEì/«D¢ZÓk;MgLÇ£ØàTC÷"F¥C`_A¹Ä
+»zûùlyÒÓ÷lÞ¹0úÌ_Üâú¸ñfã$í¢OâÛ¡k÷0³ÂÍ©ç ¤5wα_ÂÈB×(±G{Ô£=|]µHÙiåpÓ]!Y9 Êy[}éw±b0ëçñÅz¼Ot$ëQéô4[R¼oq[{´/GTÃx`U,'jØyÆãFû¸É1_MÇØbÈäp'xØ·õ=jZ(mÄð´iñè,gCR³¯SÂSWcºÛO G·#\yLEIº0+'H6î 9ÿjÓ¸Ù³qÁ7½dã|@D=?ù)¤2$iÜÀtY
+®téA¨CFo÷=Á%®¬B·ëê0^;R(\YÛÄ;
+Ø2¨Û6Yä0,ð'äxW§dîgÑh6ÌWuÿ]K}ÈBÑl䲡4±5m~Cv"ÔÎAt¬(«¨Gê°]tØÅÞEûC;¯ê_Åd=ô§¬ò\
+{pÂe}dzRÄeU²~ú<ùÝo`$9³g>K}x ï³Ø »µÐ|ºöûÏ>
+8²Í;±'î£<ØBN¡zka5
+B£«èvÒ@;û éÒZ¢$4øq³yçBáÄPMXç£F,cg½züøz÷õîuÆ5J;ï}S̶/£²n:$Õ³èjáÆöëH /¢K6wPsÙ7Jý½mö{'ËéÞƯ«K\5ko#kéæETw?9 óºï$;{
+ÝI°I5|?½ìÝçÝ<öûjºTY¬3øÑÓAYÍb<Ðéò2jyréÖæìCLÿ"®?Éò ØàUÏÂ5L+
õPu |&7>°$hXe(ä]÷Îþ¯MP¶Ä'ËØl=²h9Ô8×6ÍR0ê]Òy8X
+S__ôº@4U²Lg5IªI²e:?Zñü¶k¥åõºv°Î
8y·XtÃïç¨Ä8°øø¾Y¾5IH¹% i#î]KòݯÎð˯B%K«µÔÅÁ{@dQAüA3!sÆoüZ-¡ol#^¡ýL«´S&çÄxËa·9M¬MHÏÍÍ¿ñJ9é¡áØÀön£Ú±¢
+4pµ¯ò¶;
+¾£pzߪãDg ²v0¿(ÔÔ?µÊ{ Üì_ס=ufå4Éæ$w¢óAÀª&Gxg±ÓÑBxÃÒ³£¼}Ó\U2{áÌÿB°1Ü»íâ&øÙQkƬã0vé$ÅÁKøc)YÌÈJï#¥quG;Ôu9q7ôV$£º}ÙåÏâY$ó¯+êáõdD¶rª¿tB¨g^ø2u]PJF§·Ó*Щ§,¯Á£¸øò¤Ê³ÜíÐ=÷P0Çé0»òeÒ¦$ÐÑnJý.í1Ú×SÅ T_а
+Ña±8±À*3Ìù¯#=uõám\óÞÆÑ÷d¼¿^:Aº¾N}X¸In
+å>b§d±Ñðs©·îF¸jýrqusê
)¦{dëHÖÅlÞ&Á·C¤Òà*µµ t²k"ÃÃG¿ÊTÈM«CÌ{L
+Y èäôrÌZÍéãàrì[à:Í KqBUÈìR¡.Ò9%úáscL°oU Us8Fìºw,`:'QÙJ`(×ÆqqL
+Ù*ì0/¶îX×kã"·áü%Ý	ίmX,"¥~G$]$ßî¹Ðd4×&ð©½WÂâbq_øNk, _°,,öÅ¢ådA° ;®hZpH[0¡åy·Ç`y[U(£É².ÖVño4pQsjî°vú~ÖOßÅúæI&Ã}ʲ18Wz5m7Á¾ùa|SÕ¾H½Þª
âëêùKj+ÜÑmìdÈà¡oŬF%9þ@нeÌòIêÃ[!J¨±äk|)t(¡ºõ4bR\5CDQ<÷ã/üÔeX-ob'GغÀzY8Ej§týMSs&-$ªÅg£j³µàlê_ø;DðJSmQî\¡Ú¹Êìê)n<««`<ÝêÛ¾QÞbvó²w ÒNÛ»Ul.·8üâ{d[Úy:'.àUÝ}ÃÒ¢'{èhêÝèè½.ikk×Òåjí`V:VÖ8qß9}âë««TuÅh|ñU%ËÍö;("ª¦§`5¸$½N=>BeÝàÏPïÝ]ƬßIux%i¬C¾>DºçCUl[#»À7BN`T8×Ê~½HðIHóS_áË}t¿êvðU
d):KÃkÎ¥¼qï"ѾµªlÄÎ$Y±SÁSC%¥A¼¿:åjLDçnwLéê ¥Y]½4ºÜ
+ªÔlÉ7QÆÄæKÅ&¹&Af[¨z?8Çå¥nBºv?br¨¶BDÚÇñ3çø·×ªwmlmd?Ø åõÎQ»ö8õX[Þ¿´Å>«M´
f;¡Q½sQT2wh£Ü
ò°Z4Xñ¢¨cþ.|gñÇXd"/Âåe7qó¿i2ÓÚp95g44Þ¼¨
+zFèé¾r#Ë1l˵ʱ9[À?or
+Û×v6³¸Áy
+²g¾èøÊcøÎ
+½qå,ÝN3'OÓïöÙÛߣBJ)kØÙ*ܶdmó]-Û8[¡ûᦡ«t_õíøl;ºF¾nÐÇÁ´ÀPÆxu »:_[ éZà&×EKì÷
+«Fgáï:[ÒtòUÔ`m|È6Á×ãൻ@
åÕNZtÀÛ¢iÓë/8Ë s.GØÎ;²c_Àó£«1`þëKTï:[m!½bn¤t=rS(-Hg
+£:í!¶rí*akÖÒ¦Qø"søØ û\xó/yT³¬yü\Wîr¬h+ÄHï¢Ìfüèr0:®2/æ¬Ö<>½°xT¯%^Úè° vãÌÈÄäøä(@ÍÈ ðhÜð:OåàAùƸ<¥¶6Ä2§øèn$¶æ`½Ý-.;
+¢ÈòMí<k-ÔýyÛu1jý%ìpݧ¯·Eºz?Þ
º&Êôøhªªfíñ"ù
+$ɤq/ÒÊÍAÕàÎCï(È?ÛAÙ!¶â vQÈåø³áõ°Ç æzv{ÃFÌ=¿7qM5²aZØ¡]nY¼A÷`Â+4zÖS½ý}½´_h¶]-¸ýq7µ Døÿ
+à°Ëð×õÓ
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/shane.jpg
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/shane.jpg (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/shane.jpg 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,46 @@
+ÿØÿà
+
+ $.' ",#(7),01444'9=82<.342ÿÛ
+ÿÄ
+%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ
+ÿÄ
+$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ
+é&µ·Ô¤Ñï\Ón¡Ë¢ ¹!¹9ö<Ö´úÔV0K3.Jô
+êèÇ"³à2mYc@ç[ö·Gw!÷kǤç¥Ù·wmn¯Ø¬`R{T^ñÖ§¥ËµåÄ6DàAê_¹ë©îáæ~ç{
+®PjëxI8j®yÒy]½}©«®Udz×;s9k/I»itäG|´/^ݪü8flã¥a
+\Ãù]4U¶XÉè´V¶2¹À½´íQ¢>Õ~IÍ£p+¢Þ[ ÈGAOÚ1L4àÙ5èEEhdî.)ÈíN¢ÖUI&¬Âö/Å«Ü@1Ý# }* îÞàåfõ?ÐUzQ\ñÂÓ¹£&¬¨"+£C!ÑÈðÈ6Á®I¾Kpä @éë\¾jHäh]r+Íy¤ÑÓ°9éE6Òê;áz+ÎpiÙ\äñEoëºL3OhÀ/ñGJÀ¯NHÔâL¢âìÂ~Ç~0(óÏÛ'QE.⤻ãQ¯Þä⮫´q´¯#Om9¸!ÌìS=iêã ¨!ÆOB{R£P ñÖ«uîî*çvçéQ¹ÍH͹5jÛÐN¦)àx¤ÇdÎÖ#>SM¬·â*ê¬í°+$;câº?ÄXÜy®z@Ö¼h¶L×¼Ý/£2·5Þd7¡ zvXSG¡ëNÎ+ÖZ¼Ð =é¹£mvy¦1àÒò=ê9c±«;E¶4µF¡¶ÐÁ§yÀ94ô¾F±|¦1ü$Q
+þ'wû*¼§¾G|»Ò
+ͶE:VàÐ÷:/à[¾Öpµ¶&<¶z²Ç
+'é湦dÉT_<N¾Z¢ñ3½é1Ù-`l²+<y¸°eDm´8zZè46Ö¬}Q
tZéw[->§-Q´lpKM*Oo\[Á
+Q8#¸ØsGâºmþP+²Õrv5\)£küªiÒ:/ òѳÊ6¥Eú£5hK¬zRôδèdζGm×:⨠îcvè]X¥É¿aúäÚbF_QåIàJ>»ëñ½IªÂ+¥.ú8ð8×ø¯#3K3|Щfùú7b~¡z#Wh£ÑfoN/=GÕéPìÅê
+6©5;èPZqB2jÎ"6(R4<puìlÀHs}Çò+Õ\×°¸Zñþ7ñ},.}¦åhÚf<[#;ÃòI»Xztîv¿ºCs]å¥GµóFìöí[¯.û@=cÚ|ù¬uË5_QûCGð¯Áso¸»Z{¥Ä:Ìwþ±;ú1´ßÉiø/WÈÕ2ñåkáC`üÕ½þhx4å¯m°ØóG,ªÝ3/,³ÀOßzé]¾ý¿õ]gÄNÔ¢a!|ã÷÷Ü)±±¾ìfsX긵WMÌÍovrÿ
+^r¡Ìê¦De0ácËÍ(<xniëµ&ÞîgRuÕle=16Qìv+sGÿ
+sNà©N^.+KÍ5ü/;×ÙgÆn¸§H+_d\I3pç
+ÄÏ)ÚÐZ},K<ceDΣúAuañÆN6j¸ÃÅÁ¾!µy®UyKYéev}N:8RåGqubÇìÇi]Á|êû)QöSN3N^Kb<ì×y¨®o+z
+7ò:Ô¶¸=§ÕB=ç7¡¤æ®ÛÃÔ¼)(Ù,<P³º>rEÙë«(ýãý¿Ôö&»ýàÿ
+ TWúv~î?ð³e'7l%$0ÂZm8dÚºïbû-7éÿ
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/simple.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/simple.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/simple.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,14 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+ <m:from name="Peter" address="peter at example.com" />
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>Try out Seam!</m:subject>
+ <m:body>
+ <p><h:outputText value="Dear #{person.firstname}" />,</p>
+ <p>You can try out Seam by visiting <a href="http://www.seamframework.org">http://www.seamframework.org</a>.</p>
+ <p>Regards</p>
+ <p>Peter</p>
+ </m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/template.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/template.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/template.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,37 @@
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:s="http://jboss.com/products/seam/taglib"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core">
+
+ <m:message>
+ <m:from name="Seam" address="do-not-reply at jboss.com" />
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>#{subject}</m:subject>
+ <m:body>
+ <html>
+ <body>
+ <ui:insert name="body">
+ This is the default body, specified by the template.
+ </ui:insert>
+ </body>
+ </html>
+ <f:facet name="alternative">
+ <ui:insert name="alternative">
+ <h:outputText>Sorry, your mail reader doesn't support html.</h:outputText>
+ </ui:insert>
+ </f:facet>
+ </m:body>
+ </m:message>
+
+ <ui:insert name="successMessage">
+ <html>
+ <body>
+ <p>This email was sent directly from the view without invoking a bean - just link to a page which contains an <m:message> tag!</p>
+ <p>The email has been successfully sent. <s:link view="/index.xhtml">Click here</s:link> to return to the index.</p>
+ </body>
+ </html>
+ </ui:insert>
+
+</ui:composition>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/templating.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/templating.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/templating.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,28 @@
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ template="template.xhtml" importance="normal">
+
+ <ui:param name="subject" value="Templating with Seam Mail" />
+
+ <ui:define name="body">
+
+ <p>This email demonstrates that you can easily use <i>facelets templating features</i> in your code!</p>
+
+ <p>In fact you can use <b>any</b> JSF tags that you like!</p>
+
+ <p>Here's a dataTable</p>
+
+ <h:dataTable value="#{lists.daysOfWeek}" var="day">
+ <h:column>
+ <f:facet name="header">
+ Day
+ </f:facet>
+ <h:outputText value="#{day}" />
+ </h:column>
+ </h:dataTable>
+
+ </ui:define>
+
+</ui:composition>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/whyseam.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/whyseam.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/whyseam.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,60 @@
+<p:document xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:p="http://jboss.com/products/seam/pdf"
+ title="Why Seam"
+ keywords="mykeyword"
+ subject="seam"
+ author="Seam Team"
+ creator="Seam PDF example app">
+
+ <p:font size="12">
+ <p:footer borderWidthTop="1" borderColorTop="blue" borderWidthBottom="0" alignment="center">Why Seam? [<p:pageNumber />]</p:footer>
+ </p:font>
+
+ <p:image alignment="right" wrap="true" value="/jboss.jpg" />
+ <p:font size="24"><p:paragraph spacingAfter="50">Ten Good Reasons To Use Seam</p:paragraph></p:font>
+
+ <p:font size="18"><p:paragraph>It's the quickest way to get "rich"</p:paragraph></p:font>
+
+ <p:paragraph alignment="justify">AJAX fundamentally changes the interaction model of the web. The synchronous, coarse-grained requests used by traditional web clients let many server-side applications get away with minimal caching and no session-level concurrency. The "stateless" architecture is in many cases a viable solution. But not anymore! AJAX clients hit the server with many asynchronous, concurrent, fine-grained requests, which could easily bring your database to its knees. When state is held in memory between requests, it is highly vulnerable to concurrency-related bugs, since the Java EE platform provides no constructs for dealing with session-level concurrency.</p:paragraph>
+
+ <p:paragraph alignment="justify">Seam's totally unique concurrency model and state-management model was conceived and designed with AJAX in mind. </p:paragraph>
+
+ <p:paragraph alignment="justify">Seam 1.1 integrates open source JSF-based AJAX solutions like ICEfaces and Ajax4JSF with Seam's state and concurrency management engine. You can add AJAX to your applications with ease, without the need to learn JavaScript, and you will be protected from potential bugs and performance problems associated with the switch to AJAX. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>It's the easiest way to get started with EJB 3.0 </p:paragraph></p:font>
+ <p:paragraph alignment="justify">EJB 3.0 is a great component model for transactional business components, the highlight being the brand new Java Persistence API (JPA). But Java web and application frameworks designed before the release of EJB 3.0 lack support for the new component model, leaving you to write your own integration code, and in many cases forcing you into the use of a layered architecture that may not be right for your application. </p:paragraph>
+
+ <p:paragraph alignment="justify">Seam was designed for use with EJB 3.0 and lets you use the new component model everywhere. Since any class in a Seam application can be an EJB component, there is no need to introduce extra unwanted layers just to keep your frameworks happy. And, of course, there is no need to write code to integrate EJB 3.0 with your web framework, since Seam already has it. </p:paragraph>
+
+ <p:paragraph alignment="justify">Note that you don't have to use EJB 3.0 to use Seam, and if you're developing in an environment that doesn't support EJB 3.0, Seam provides alternatives. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>It's the best way to leverage JSF </p:paragraph></p:font>
+ <p:paragraph alignment="justify">JSF has created a vibrant ecosystem of component libraries and other addons, that make this easily the most exciting web framework in Java. But plain JSF is heavy on XML, and misses out on a number of important features, especially for people building internet-facing applications. Seam replaces the tedious XML configuration with a handful of annotations, reducing code and making you more productive. Seam extends JSF with extra functionality for multi-window operation and workspace management, model-based validation, jBPM-based pageflow, internationalization, page fragment caching. Seam even adds facilities for handling bookmarkable (REST-style) web pages - the number one user complaint against JSF. </p:paragraph>
+
+ <p:paragraph alignment="justify">Since JSF does not address the problem of access to transactional resources, Seam's integration of JTA, JPA and EJB 3.0 is a must-have for most JSF users. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>And the easiest way to do BPM </p:paragraph></p:font>
+ <p:paragraph alignment="justify">jBPM is an intuitive and powerful solution for enterprise applications with complex human collaboration, or web applications with complex user interactions. BPM technology not only makes it easier for developers and analysts to model, implement and optimize a business process, but also makes it possible for operations and management to analyse the efficiency of the business process, and be informed of problems. </p:paragraph>
+
+ <p:paragraph alignment="justify">Seam deeply integrates jBPM and makes it incredibly simple to use jBPM for task management or pageflow, and is a great way to get started with BPM technology. The combination of Seam and jBPM can shrink development time of some kinds of projects by literally months. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>But CRUD is easy too </p:paragraph></p:font>
+ <p:paragraph alignment="justify">Seam takes on hard problems affecting complex enterprise applications. But that doesn't mean the easy stuff is any more difficult than it should be. Seam is every bit as productive as any of the current crop of CRUD frameworks when it comes to building simple data driven applications. Seam combines a simple data access framework (built around JPA and Hibernate) with a command line code generation and database reverse engineering tool to get you started in minutes. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>It makes persistence a breeze </p:paragraph></p:font>
+ <p:paragraph alignment="justify">Seam grew out of the Hibernate community, and was designed and implemented by the people who created Hibernate, the same people who coined the term "persistence context". Seam's conversation model solves a raft of persistence-related programming problems caused by traditional stateless web application architectures. Whether you use Hibernate or JPA, Seam makes it easy and natural to use extended persistence contexts, and helps you avoid unnecessary state replication when you use an extended persistence context in a clustered environment. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>Annotations </p:paragraph></p:font>
+ <p:paragraph alignment="justify">Seam is the first programming model that lets you use Java 5 annotations end to end, from the persistence layer to the UI. You'll never find yourself wrestling with unnecessary, noisy XML. Which is not to say that Seam doesn't use XML when appropriate (Seam has a sophisticated XML-based component configuration facility), just that you won't get lost in reams of XML for common programming tasks. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>Get hip to automated integration testing </p:paragraph></p:font>
+ <p:paragraph alignment="justify">Automated unit tests certainly have their place in any project. But it's worse than dangerous to rely solely on unit testing. Most bugs concern the interaction between components, and the interaction between a component and the container environment. Unit tests are unable to properly capture container behavior, and usually don't capture complex inter-component interactions. Seam introduces an innovative approach to automated integration testing, where you can emulate the entire flow of a request or conversation, testing all layers of Java code in the application, from presentation to persistence. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>Marry open source with open standards </p:paragraph></p:font>
+ <p:paragraph alignment="justify">Seam is founded upon open source implementations of open standards like JSF and EJB 3.0, along with open source innovators like Hibernate, jBPM, Facelets, Drools, ICEfaces and Ajax4JSF. The creators of Seam are active in the EJB, JPA, Bean Validation and JSF expert groups and lead the Web Beans (JSR-299) expert group which aims to bring the ideas of Seam into the Java EE standard. The Seam project is totally committed to the idea of open source innovation driving new ideas and ehancements into the Java platform. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>It just works </p:paragraph></p:font>
+ <p:paragraph alignment="justify">You'll love it if you try it.</p:paragraph>
+</p:document>
+
Added: branches/community/Seam_2_3/examples-ee6/mail/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/pom.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/pom.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,46 @@
+<?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">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.seam.examples</groupId>
+ <artifactId>mail</artifactId>
+ <parent>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>examples</artifactId>
+ <version>2.3.0-SNAPSHOT</version>
+ </parent>
+ <packaging>pom</packaging>
+ <name>Seam Mail Example</name>
+
+ <properties>
+ <example.name>mail</example.name>
+ </properties>
+
+ <modules>
+ <module>mail-ear</module>
+ <module>mail-ejb</module>
+ <module>mail-web</module>
+ <module>mail-tests</module>
+ </modules>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <version>${project.version}</version>
+ <type>ejb</type>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-web</artifactId>
+ <version>${project.version}</version>
+ <type>war</type>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ear</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+</project>
Added: branches/community/Seam_2_3/examples-ee6/mail/readme.txt
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/readme.txt (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/readme.txt 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,7 @@
+Seam Mail Example
+==================
+
+This example demonstrates the Seam Mail functionality. It runs on JBoss AS as
+an EAR.
+
+example.name=mail
More information about the seam-commits
mailing list