JBoss JBPM SVN: r4494 - jbpm4/branches/jbpm-4.0.0.Beta1/modules/distro/src/main/resources/config-tool/hibernate/mapping.files.
by do-not-reply@jboss.org
Author: heiko.braun(a)jboss.com
Date: 2009-04-08 06:02:37 -0400 (Wed, 08 Apr 2009)
New Revision: 4494
Modified:
jbpm4/branches/jbpm-4.0.0.Beta1/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.repository.hbm.xml
Log:
JBPM-2149: Use SQL type text for deployment name foreign key fields in JBPM_LOB
Modified: jbpm4/branches/jbpm-4.0.0.Beta1/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.repository.hbm.xml
===================================================================
--- jbpm4/branches/jbpm-4.0.0.Beta1/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.repository.hbm.xml 2009-04-07 21:51:07 UTC (rev 4493)
+++ jbpm4/branches/jbpm-4.0.0.Beta1/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.repository.hbm.xml 2009-04-08 10:02:37 UTC (rev 4494)
@@ -19,7 +19,7 @@
<key foreign-key="FK_LOB_DEPLOYMENT">
<column name="DEPLOYMENT_" index="IDX_LOB_DEPLOYMENT" />
</key>
- <map-key type="string" column="NAME_" />
+ <map-key type="text" column="NAME_" />
<one-to-many class="org.jbpm.pvm.internal.lob.Lob"/>
</map>
17 years
JBoss JBPM SVN: r4493 - in jbpm4/branches/email/modules/pvm/src: main/java/org/jbpm/pvm/internal/email/impl and 4 other directories.
by do-not-reply@jboss.org
Author: alex.guizar(a)jboss.com
Date: 2009-04-07 17:51:07 -0400 (Tue, 07 Apr 2009)
New Revision: 4493
Added:
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressFilter.java
jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/
jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/AddressFilterTest.java
Removed:
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/filter/
jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/filter/
jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/WildCardAddressFilterTest.java
Modified:
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailServer.java
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SyncMailSession.java
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailSessionBinding.java
jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailSessionWireTest.java
Log:
make address filter a concrete class
Copied: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressFilter.java (from rev 4471, jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/filter/WildCardAddressFilter.java)
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressFilter.java (rev 0)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressFilter.java 2009-04-07 21:51:07 UTC (rev 4493)
@@ -0,0 +1,100 @@
+package org.jbpm.pvm.internal.email.impl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.regex.Pattern;
+
+import javax.mail.internet.InternetAddress;
+
+/**
+ * Allows filtering of to/cc/bcc recipient lists based on regular expressions for include and
+ * exclude patterns.
+ *
+ * @author Brad Davis
+ */
+public class AddressFilter {
+
+ /**
+ * patterns of addresses to be included. all addresses are included when omitted.
+ */
+ private Collection<Pattern> includePatterns;
+ /**
+ * patterns of addresses to be excluded. no addresses are excluded when omitted.
+ */
+ private Collection<Pattern> excludePatterns;
+
+ public Collection<InternetAddress> filter(final Collection<InternetAddress> addresses) {
+ Collection<InternetAddress> filteredAddresses = new HashSet<InternetAddress>();
+ if (addresses != null) {
+ // Loop over for addresses to decide what to keep.
+ for (InternetAddress address : addresses) {
+ if (keepAddress(address)) {
+ filteredAddresses.add(address);
+ }
+ }
+ }
+ return filteredAddresses;
+ }
+
+ /***
+ * Determine in a given address is included or excluded based on regex.
+ *
+ * @param address Email Address to validate against regex.
+ * @return If the includes is provided, and the address matches an include pattern, returns true,
+ * false otherwise.
+ */
+ protected boolean keepAddress(InternetAddress address) {
+ return includeAddress(address) && !excludeAddress(address);
+ }
+
+ protected boolean includeAddress(InternetAddress address) {
+ if (includePatterns == null || includePatterns.isEmpty()) return true;
+
+ for (Pattern pattern : includePatterns) {
+ if (pattern.matcher(address.toString()).matches()) return true;
+ }
+ return false;
+ }
+
+ protected boolean excludeAddress(InternetAddress address) {
+ if (excludePatterns == null || excludePatterns.isEmpty()) return false;
+
+ for (Pattern pattern : excludePatterns) {
+ if (pattern.matcher(address.toString()).matches()) return true;
+ }
+ return false;
+ }
+
+ /**
+ * Gets the patterns of addresses to be included. All addresses are included when omitted.
+ */
+ public Collection<Pattern> getIncludePatterns() {
+ return includePatterns;
+ }
+
+ public void addIncludePattern(Pattern includePattern) {
+ if (includePatterns == null) includePatterns = new ArrayList<Pattern>();
+ includePatterns.add(includePattern);
+ }
+
+ protected void setIncludePatterns(Collection<Pattern> includePatterns) {
+ this.includePatterns = includePatterns;
+ }
+
+ /**
+ * Gets the patterns of addresses to be excluded. No addresses are excluded when omitted.
+ */
+ public Collection<Pattern> getExcludePatterns() {
+ return excludePatterns;
+ }
+
+ public void addExcludePattern(Pattern excludePattern) {
+ if (excludePatterns == null) excludePatterns = new ArrayList<Pattern>();
+ excludePatterns.add(excludePattern);
+ }
+
+ protected void setExcludePatterns(Collection<Pattern> excludePatterns) {
+ this.excludePatterns = excludePatterns;
+ }
+}
Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailServer.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailServer.java 2009-04-07 21:00:21 UTC (rev 4492)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailServer.java 2009-04-07 21:51:07 UTC (rev 4493)
@@ -4,8 +4,6 @@
import javax.mail.Session;
-import org.jbpm.pvm.internal.email.filter.AddressFilter;
-
/**
* Settings for establishing a session with a mail server.
*
Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SyncMailSession.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SyncMailSession.java 2009-04-07 21:00:21 UTC (rev 4492)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SyncMailSession.java 2009-04-07 21:51:07 UTC (rev 4493)
@@ -9,7 +9,6 @@
import org.apache.commons.logging.LogFactory;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailException;
-import org.jbpm.pvm.internal.email.filter.AddressFilter;
import org.jbpm.pvm.internal.email.spi.MailSession;
public class SyncMailSession implements MailSession {
Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailSessionBinding.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailSessionBinding.java 2009-04-07 21:00:21 UTC (rev 4492)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailSessionBinding.java 2009-04-07 21:51:07 UTC (rev 4493)
@@ -24,9 +24,9 @@
import java.util.ArrayList;
import java.util.List;
-import org.jbpm.pvm.internal.email.filter.WildCardAddressFilter;
import org.jbpm.pvm.internal.email.impl.MailServer;
import org.jbpm.pvm.internal.email.impl.SyncMailSession;
+import org.jbpm.pvm.internal.email.impl.AddressFilter;
import org.jbpm.pvm.internal.email.spi.MailSession;
import org.jbpm.pvm.internal.util.XmlUtil;
import org.jbpm.pvm.internal.wire.Descriptor;
@@ -81,7 +81,7 @@
excludesDescriptor.setValueDescriptors(excludeDescriptors);
// address filter
- ObjectDescriptor filterDescriptor = new ObjectDescriptor(WildCardAddressFilter.class);
+ ObjectDescriptor filterDescriptor = new ObjectDescriptor(AddressFilter.class);
filterDescriptor.addInjection("includePatterns", includesDescriptor);
filterDescriptor.addInjection("excludePatterns", excludesDescriptor);
Copied: jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl (from rev 4470, jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/filter)
Copied: jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/AddressFilterTest.java (from rev 4471, jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/filter/WildCardAddressFilterTest.java)
===================================================================
--- jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/AddressFilterTest.java (rev 0)
+++ jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/AddressFilterTest.java 2009-04-07 21:51:07 UTC (rev 4493)
@@ -0,0 +1,90 @@
+package org.jbpm.pvm.internal.email.impl;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.regex.Pattern;
+
+import javax.mail.internet.InternetAddress;
+
+import junit.framework.TestCase;
+
+public class AddressFilterTest extends TestCase{
+
+ /**
+ * When no filter is provided, all addresses should be contained in the filtered list.
+ */
+ public void testWildCardIncludesNoFilters() throws Exception
+ {
+ AddressFilter filter = new AddressFilter();
+
+ Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
+ addresses.add(new InternetAddress("test(a)jboss.org"));
+
+ Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
+ assertTrue(filteredAddresses.contains(new InternetAddress("test(a)jboss.org")));
+ }
+
+ /**
+ * If the includes is provided, no other addresses except those explicitly listed should
+ * be included in the filtered list.
+ */
+ public void testWildCardIncludes() throws Exception
+ {
+ AddressFilter filter = new AddressFilter();
+
+ Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
+ addresses.add(new InternetAddress("test(a)jboss.org"));
+ addresses.add(new InternetAddress("test(a)amentra.com"));
+
+ filter.addIncludePattern(Pattern.compile(".+(a)jboss.org"));
+
+ Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
+ assertTrue(filteredAddresses.contains(new InternetAddress("test(a)jboss.org")));
+ assertTrue(!filteredAddresses.contains(new InternetAddress("test(a)amentra.com")));
+ }
+
+ /**
+ * The includes should always override the excludes.
+ */
+ public void testWildCardIncludesOverridesExcludes() throws Exception
+ {
+ AddressFilter filter = new AddressFilter();
+
+ Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
+ addresses.add(new InternetAddress("test(a)jboss.org"));
+ addresses.add(new InternetAddress("test(a)amentra.com"));
+
+ filter.addIncludePattern(Pattern.compile(".+(a)jboss.org"));
+ filter.addExcludePattern(Pattern.compile(".+(a)amentra.com"));
+
+ Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
+ //Includes jboss
+ assertTrue(filteredAddresses.contains(new InternetAddress("test(a)jboss.org")));
+ //Does not include amentra.
+ assertTrue(!filteredAddresses.contains(new InternetAddress("test(a)amentra.com")));
+ }
+
+ /**
+ * When the excludes is specified but no includes, all addresses except those explicitly stated
+ * should be contained in the filtered set.
+ */
+ public void testWildCardExcludes() throws Exception
+ {
+ AddressFilter filter = new AddressFilter();
+
+ Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
+ addresses.add(new InternetAddress("test(a)jboss.org"));
+ addresses.add(new InternetAddress("test(a)amentra.com"));
+ addresses.add(new InternetAddress("test(a)redhat.com"));
+
+ filter.addExcludePattern(Pattern.compile(".+(a)jboss.org"));
+
+ Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
+ //Does not include jboss
+ assertTrue(!filteredAddresses.contains(new InternetAddress("test(a)jboss.org")));
+ //Does include amentra
+ assertTrue(filteredAddresses.contains(new InternetAddress("test(a)amentra.com")));
+ //Does include redhat
+ assertTrue(filteredAddresses.contains(new InternetAddress("test(a)redhat.com")));
+ }
+}
Deleted: jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/WildCardAddressFilterTest.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/filter/WildCardAddressFilterTest.java 2009-04-07 00:38:39 UTC (rev 4470)
+++ jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/WildCardAddressFilterTest.java 2009-04-07 21:51:07 UTC (rev 4493)
@@ -1,111 +0,0 @@
-package org.jbpm.pvm.internal.email.filter;
-
-import java.util.Collection;
-import java.util.HashSet;
-
-import javax.mail.internet.InternetAddress;
-
-import junit.framework.TestCase;
-
-public class WildCardAddressFilterTest extends TestCase{
-
- /**
- * Tests that the WildCardAddressFilter is-a AddressFilter implementation.
- */
- public void testInstantiationWildCards()
- {
- WildCardAddressFilter filter = new WildCardAddressFilter();
- //Ensure it is-a AddressFilter.
- this.assertTrue(AddressFilter.class.isAssignableFrom(filter.getClass()));
- }
-
- /**
- * When no filter is provided, all addresses should be contained in the filtered list.
- */
- public void testWildCardIncludesNoFilters() throws Exception
- {
- WildCardAddressFilter filter = new WildCardAddressFilter();
-
- Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
- addresses.add(new InternetAddress("test(a)jboss.org"));
-
- Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
- this.assertTrue(filteredAddresses.contains(new InternetAddress("test(a)jboss.org")));
- }
-
- /**
- * If the includes is provided, no other addresses except those explicitly listed should
- * be included in the filtered list.
- */
- public void testWildCardIncludes() throws Exception
- {
- WildCardAddressFilter filter = new WildCardAddressFilter();
-
- Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
- addresses.add(new InternetAddress("test(a)jboss.org"));
- addresses.add(new InternetAddress("test(a)amentra.com"));
-
- Collection<String> regExIncludes = new HashSet<String>();
- regExIncludes.add(".+(a)jboss.org");
- filter.setIncludePatterns(regExIncludes);
-
- Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
- this.assertTrue(filteredAddresses.contains(new InternetAddress("test(a)jboss.org")));
- this.assertTrue(!filteredAddresses.contains(new InternetAddress("test(a)amentra.com")));
- }
-
- /**
- * The includes should always override the excludes.
- */
- public void testWildCardIncludesOverridesExcludes() throws Exception
- {
- WildCardAddressFilter filter = new WildCardAddressFilter();
-
- Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
- addresses.add(new InternetAddress("test(a)jboss.org"));
- addresses.add(new InternetAddress("test(a)amentra.com"));
-
- Collection<String> regExIncludes = new HashSet<String>();
- regExIncludes.add(".+(a)jboss.org");
- filter.setIncludePatterns(regExIncludes);
-
- Collection<String> regExExcludes = new HashSet<String>();
- regExExcludes.add(".+(a)jboss.org");
- filter.setExcludePatterns(regExExcludes);
-
- Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
- //Includes jboss
- this.assertTrue(filteredAddresses.contains(new InternetAddress("test(a)jboss.org")));
- //Does not include amentra.
- this.assertTrue(!filteredAddresses.contains(new InternetAddress("test(a)amentra.com")));
- }
-
- /**
- * When the excludes is specified but no includes, all addresses except those explicitly stated
- * should be contained in the filtered set.
- */
- public void testWildCardExcludes() throws Exception
- {
- WildCardAddressFilter filter = new WildCardAddressFilter();
-
- Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
- addresses.add(new InternetAddress("test(a)jboss.org"));
- addresses.add(new InternetAddress("test(a)amentra.com"));
- addresses.add(new InternetAddress("test(a)redhat.com"));
-
- Collection<String> regExExcludes = new HashSet<String>();
- regExExcludes.add(".+(a)jboss.org");
- filter.setExcludePatterns(regExExcludes);
-
- Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
- //Does not include jboss
- this.assertTrue(!filteredAddresses.contains(new InternetAddress("test(a)jboss.org")));
- //Does include amentra
- this.assertTrue(filteredAddresses.contains(new InternetAddress("test(a)amentra.com")));
- //Does include redhat
- this.assertTrue(filteredAddresses.contains(new InternetAddress("test(a)redhat.com")));
- }
-
-
-
-}
Modified: jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailSessionWireTest.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailSessionWireTest.java 2009-04-07 21:00:21 UTC (rev 4492)
+++ jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailSessionWireTest.java 2009-04-07 21:51:07 UTC (rev 4493)
@@ -25,9 +25,9 @@
import java.util.Properties;
import java.util.regex.Pattern;
-import org.jbpm.pvm.internal.email.filter.WildCardAddressFilter;
import org.jbpm.pvm.internal.email.impl.MailServer;
import org.jbpm.pvm.internal.email.impl.SyncMailSession;
+import org.jbpm.pvm.internal.email.impl.AddressFilter;
import org.jbpm.pvm.internal.email.spi.MailSession;
/**
@@ -62,7 +62,7 @@
assertEquals(1, serverConfigs.size());
MailServer serverConfig = serverConfigs.iterator().next();
- WildCardAddressFilter addressFilter = (WildCardAddressFilter) serverConfig.getAddressFilter();
+ AddressFilter addressFilter = serverConfig.getAddressFilter();
Collection<Pattern> includePatterns = addressFilter.getIncludePatterns();
assertEquals(1, includePatterns.size());
17 years
JBoss JBPM SVN: r4492 - in jbpm4/branches/email: modules/pvm and 5 other directories.
by do-not-reply@jboss.org
Author: alex.guizar(a)jboss.com
Date: 2009-04-07 17:00:21 -0400 (Tue, 07 Apr 2009)
New Revision: 4492
Added:
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailServer.java
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SyncMailSession.java
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/spi/
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/spi/MailSession.java
Removed:
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailService.java
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SynchronousMailService.java
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/server/
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/service/
Modified:
jbpm4/branches/email/modules/pvm/pom.xml
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailSessionBinding.java
jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailSessionWireTest.java
jbpm4/branches/email/pom.xml
Log:
rename MailService to MailSession
merge SmtpServer into MailServerConfiguration
Modified: jbpm4/branches/email/modules/pvm/pom.xml
===================================================================
--- jbpm4/branches/email/modules/pvm/pom.xml 2009-04-07 19:44:17 UTC (rev 4491)
+++ jbpm4/branches/email/modules/pvm/pom.xml 2009-04-07 21:00:21 UTC (rev 4492)
@@ -57,6 +57,10 @@
</dependency>
<dependency>
+ <groupId>commons-email</groupId>
+ <artifactId>commons-email</artifactId>
+ </dependency>
+ <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
@@ -109,19 +113,6 @@
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>javax.mail</groupId>
- <artifactId>mail</artifactId>
- <version>1.4.1</version>
- <type>jar</type>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>commons-email</groupId>
- <artifactId>commons-email</artifactId>
- <version>1.2-SNAPSHOT</version>
- <scope>compile</scope>
- </dependency>
</dependencies>
<!-- Plugins -->
Copied: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl (from rev 4428, jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/service)
Copied: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailServer.java (from rev 4428, jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/server/MailServerConfiguration.java)
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailServer.java (rev 0)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailServer.java 2009-04-07 21:00:21 UTC (rev 4492)
@@ -0,0 +1,38 @@
+package org.jbpm.pvm.internal.email.impl;
+
+import java.util.Properties;
+
+import javax.mail.Session;
+
+import org.jbpm.pvm.internal.email.filter.AddressFilter;
+
+/**
+ * Settings for establishing a session with a mail server.
+ *
+ * @author Brad Davis
+ */
+public class MailServer {
+
+ private AddressFilter addressFilter;
+ private Properties sessionProperties;
+
+ public AddressFilter getAddressFilter() {
+ return addressFilter;
+ }
+
+ protected void setAddressFilter(AddressFilter filter) {
+ this.addressFilter = filter;
+ }
+
+ public Properties getSessionProperties() {
+ return sessionProperties;
+ }
+
+ protected void setSessionProperties(Properties sessionProperties) {
+ this.sessionProperties = sessionProperties;
+ }
+
+ public Session createMailSession() {
+ return Session.getDefaultInstance(sessionProperties, null);
+ }
+}
Deleted: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailService.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/service/MailService.java 2009-04-03 17:38:06 UTC (rev 4428)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailService.java 2009-04-07 21:00:21 UTC (rev 4492)
@@ -1,9 +0,0 @@
-package org.jbpm.pvm.internal.email.service;
-
-import java.util.Collection;
-
-import org.apache.commons.mail.Email;
-
-public interface MailService {
- public void send(Collection<Email> emails);
-}
Copied: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SyncMailSession.java (from rev 4471, jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/service/SynchronousMailService.java)
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SyncMailSession.java (rev 0)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SyncMailSession.java 2009-04-07 21:00:21 UTC (rev 4492)
@@ -0,0 +1,66 @@
+package org.jbpm.pvm.internal.email.impl;
+
+import java.util.Collection;
+
+import javax.mail.Session;
+import javax.mail.internet.InternetAddress;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.commons.mail.Email;
+import org.apache.commons.mail.EmailException;
+import org.jbpm.pvm.internal.email.filter.AddressFilter;
+import org.jbpm.pvm.internal.email.spi.MailSession;
+
+public class SyncMailSession implements MailSession {
+
+ private Collection<MailServer> mailServers;
+
+ private static final Log log = LogFactory.getLog(SyncMailSession.class);
+
+ public void send(Collection<Email> emails) {
+
+ // Emails need to have the sessions populated.
+ for (Email email : emails) {
+ Collection<InternetAddress> to = email.getToAddresses();
+ Collection<InternetAddress> cc = email.getCcAddresses();
+ Collection<InternetAddress> bcc = email.getBccAddresses();
+
+ for (MailServer mailServer : mailServers) {
+ AddressFilter addressFilter = mailServer.getAddressFilter();
+ Session mailSession = mailServer.createMailSession();
+ email.setMailSession(mailSession);
+
+ // Need to apply filter.
+ try {
+ Collection<InternetAddress> toFiltered = addressFilter.filter(to);
+ Collection<InternetAddress> ccFiltered = addressFilter.filter(cc);
+ Collection<InternetAddress> bccFiltered = addressFilter.filter(bcc);
+
+ // Set the email with the new filtered addresses.
+ email.setTo(toFiltered);
+ email.setCc(ccFiltered);
+ email.setBcc(bccFiltered);
+
+ // If there is someone to send it to, then send it.
+ if (!(toFiltered.isEmpty() && ccFiltered.isEmpty() && bccFiltered.isEmpty())) {
+ email.send();
+ }
+ }
+ catch (EmailException e) {
+ log.error("An exception occurred while sending email.", e);
+ // TODO: Does anything else need to occur here?
+ }
+ }
+ }
+ }
+
+ public Collection<MailServer> getMailServers() {
+ return mailServers;
+ }
+
+ protected void setMailServers(Collection<MailServer> mailServers) {
+ this.mailServers = mailServers;
+ }
+
+}
Deleted: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SynchronousMailService.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/service/SynchronousMailService.java 2009-04-03 17:38:06 UTC (rev 4428)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SynchronousMailService.java 2009-04-07 21:00:21 UTC (rev 4492)
@@ -1,107 +0,0 @@
-package org.jbpm.pvm.internal.email.service;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-
-import javax.mail.Address;
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMessage.RecipientType;
-
-import org.apache.commons.mail.Email;
-import org.apache.commons.mail.EmailException;
-import org.jbpm.pvm.internal.email.filter.AddressFilter;
-import org.jbpm.pvm.internal.email.server.MailServerConfiguration;
-import org.jbpm.pvm.internal.email.server.SmtpServer;
-
-public class SynchronousMailService implements MailService {
-
- Collection<MailServerConfiguration> serverConfigs;
-
- @Override
- public void send(Collection<Email> emails) {
-
- //Emails need to have the sessions populated.
- for(Email email : emails)
- {
- Collection<InternetAddress> to = new HashSet<InternetAddress>();
- Collection<InternetAddress> cc = new HashSet<InternetAddress>();
- Collection<InternetAddress> bcc = new HashSet<InternetAddress>();
-
- MimeMessage message = email.getMimeMessage();
- try {
- for(Address addr : Arrays.asList(message.getRecipients(RecipientType.TO)))
- {
- if(addr instanceof InternetAddress)
- {
- to.add((InternetAddress)addr);
- }
- }
- for(Address addr : Arrays.asList(message.getRecipients(RecipientType.CC)))
- {
- if(addr instanceof InternetAddress)
- {
- cc.add((InternetAddress)addr);
- }
- }
- for(Address addr : Arrays.asList(message.getRecipients(RecipientType.BCC)))
- {
- if(addr instanceof InternetAddress)
- {
- bcc.add((InternetAddress)addr);
- }
- }
-
- }
- catch(MessagingException e)
- {
-
- }
-
-
- for(MailServerConfiguration config : serverConfigs)
- {
- AddressFilter addressFilter = config.getFilter();
- SmtpServer server = config.getServer();
-
- if(server!=null)
- {
- Session smtpSession = config.getServer().createSmtpSession();
- email.setMailSession(smtpSession);
-
- //Need to apply filter.
- try {
- Collection<InternetAddress> toFiltered = addressFilter.filter(to);
- Collection<InternetAddress> ccFiltered = addressFilter.filter(cc);
- Collection<InternetAddress> bccFiltered = addressFilter.filter(bcc);
-
- //Set the email with the new filtered addresses.
- email.setTo(toFiltered);
- email.setCc(ccFiltered);
- email.setBcc(bccFiltered);
-
- //If there is someone to send it to, then send it.
- if((toFiltered!=null&&!toFiltered.isEmpty())||
- (ccFiltered!=null&&!ccFiltered.isEmpty())||
- (bccFiltered!=null&&!bccFiltered.isEmpty()))
- {
- email.send();
- }
- }
- catch(EmailException e)
- {
- //TODO: What to do here?
- }
- }
- }
-
-
- }
-
-
- }
-
-}
Copied: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/spi/MailSession.java (from rev 4428, jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/service/MailService.java)
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/spi/MailSession.java (rev 0)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/spi/MailSession.java 2009-04-07 21:00:21 UTC (rev 4492)
@@ -0,0 +1,9 @@
+package org.jbpm.pvm.internal.email.spi;
+
+import java.util.Collection;
+
+import org.apache.commons.mail.Email;
+
+public interface MailSession {
+ public void send(Collection<Email> emails);
+}
Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailSessionBinding.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailSessionBinding.java 2009-04-07 19:44:17 UTC (rev 4491)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailSessionBinding.java 2009-04-07 21:00:21 UTC (rev 4492)
@@ -25,10 +25,9 @@
import java.util.List;
import org.jbpm.pvm.internal.email.filter.WildCardAddressFilter;
-import org.jbpm.pvm.internal.email.server.MailServerConfiguration;
-import org.jbpm.pvm.internal.email.server.SmtpServer;
-import org.jbpm.pvm.internal.email.service.MailService;
-import org.jbpm.pvm.internal.email.service.SynchronousMailService;
+import org.jbpm.pvm.internal.email.impl.MailServer;
+import org.jbpm.pvm.internal.email.impl.SyncMailSession;
+import org.jbpm.pvm.internal.email.spi.MailSession;
import org.jbpm.pvm.internal.util.XmlUtil;
import org.jbpm.pvm.internal.wire.Descriptor;
import org.jbpm.pvm.internal.wire.descriptor.CollectionDescriptor;
@@ -41,7 +40,7 @@
import org.w3c.dom.Element;
/**
- * Parses a descriptor for creating a {@link MailService}.
+ * Parses a descriptor for creating a {@link MailSession}.
*
* @author Alejandro Guizar
*/
@@ -57,15 +56,13 @@
// mail servers
List<Descriptor> serverDescriptors = new ArrayList<Descriptor>();
for (Element serverElement : XmlUtil.elements(element, "mail-server")) {
- // smtp properties
- Element smtpElement = XmlUtil.element(serverElement, "smtp-properties");
+ // mail session properties
+ Element smtpElement = XmlUtil.element(serverElement, "session-properties");
PropertiesDescriptor propertiesDescriptor = propertiesBinding.parse(smtpElement, parse,
parser);
- ObjectDescriptor smtpDescriptor = new ObjectDescriptor(SmtpServer.class);
- smtpDescriptor.addInjection("properties", propertiesDescriptor);
// address filter
- Element filterElement = XmlUtil.element(serverElement, "wildcard-address-filter");
+ Element filterElement = XmlUtil.element(serverElement, "address-filter");
// includes
List<Descriptor> includeDescriptors = new ArrayList<Descriptor>();
@@ -89,9 +86,9 @@
filterDescriptor.addInjection("excludePatterns", excludesDescriptor);
// mail server
- ObjectDescriptor serverDescriptor = new ObjectDescriptor(MailServerConfiguration.class);
- serverDescriptor.addInjection("server", smtpDescriptor);
- serverDescriptor.addInjection("filter", filterDescriptor);
+ ObjectDescriptor serverDescriptor = new ObjectDescriptor(MailServer.class);
+ serverDescriptor.addInjection("addressFilter", filterDescriptor);
+ serverDescriptor.addInjection("sessionProperties", propertiesDescriptor);
serverDescriptors.add(serverDescriptor);
}
@@ -100,8 +97,8 @@
serversDescriptor.setValueDescriptors(serverDescriptors);
// mail session
- ObjectDescriptor sessionDescriptor = new ObjectDescriptor(SynchronousMailService.class);
- sessionDescriptor.addInjection("serverConfigs", serversDescriptor);
+ ObjectDescriptor sessionDescriptor = new ObjectDescriptor(SyncMailSession.class);
+ sessionDescriptor.addInjection("mailServers", serversDescriptor);
return sessionDescriptor;
}
Modified: jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailSessionWireTest.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailSessionWireTest.java 2009-04-07 19:44:17 UTC (rev 4491)
+++ jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailSessionWireTest.java 2009-04-07 21:00:21 UTC (rev 4492)
@@ -26,9 +26,9 @@
import java.util.regex.Pattern;
import org.jbpm.pvm.internal.email.filter.WildCardAddressFilter;
-import org.jbpm.pvm.internal.email.server.MailServerConfiguration;
-import org.jbpm.pvm.internal.email.service.MailService;
-import org.jbpm.pvm.internal.email.service.SynchronousMailService;
+import org.jbpm.pvm.internal.email.impl.MailServer;
+import org.jbpm.pvm.internal.email.impl.SyncMailSession;
+import org.jbpm.pvm.internal.email.spi.MailSession;
/**
* @author Alejandro Guizar
@@ -40,29 +40,29 @@
"<objects>" +
" <mail-session>" +
" <mail-server>" +
- " <wildcard-address-filter>" +
+ " <address-filter>" +
" <include>.+(a)jbpm.org</include>" +
" <exclude>.+(a)jboss.com</exclude>" +
- " </wildcard-address-filter>" +
- " <smtp-properties>" +
+ " </address-filter>" +
+ " <session-properties>" +
" <property name='mail.host' value='localhost' />" +
" <property name='mail.user' value='aguizar' />" +
" <property name='mail.from' value='noreply(a)jbpm.org' />" +
- " </smtp-properties>" +
+ " </session-properties>" +
" </mail-server>" +
" </mail-session>" +
"</objects>"
);
- MailService mailService = wireContext.get(MailService.class);
- assertTrue("expected sync mail service", mailService instanceof SynchronousMailService);
+ MailSession mailService = wireContext.get(MailSession.class);
+ assertTrue("expected sync mail service", mailService instanceof SyncMailSession);
- SynchronousMailService syncMailService = (SynchronousMailService) mailService;
- Collection<MailServerConfiguration> serverConfigs = syncMailService.getServerConfigs();
+ SyncMailSession syncMailService = (SyncMailSession) mailService;
+ Collection<MailServer> serverConfigs = syncMailService.getMailServers();
assertEquals(1, serverConfigs.size());
- MailServerConfiguration serverConfig = serverConfigs.iterator().next();
- WildCardAddressFilter addressFilter = (WildCardAddressFilter) serverConfig.getFilter();
+ MailServer serverConfig = serverConfigs.iterator().next();
+ WildCardAddressFilter addressFilter = (WildCardAddressFilter) serverConfig.getAddressFilter();
Collection<Pattern> includePatterns = addressFilter.getIncludePatterns();
assertEquals(1, includePatterns.size());
@@ -72,7 +72,7 @@
assertEquals(1, excludePatterns.size());
assertEquals(".+(a)jboss.com", excludePatterns.iterator().next().toString());
- Properties properties = serverConfig.getServer().getProperties();
+ Properties properties = serverConfig.getSessionProperties();
assertEquals(3, properties.size());
assertEquals("localhost", properties.getProperty("mail.host"));
assertEquals("aguizar", properties.getProperty("mail.user"));
Modified: jbpm4/branches/email/pom.xml
===================================================================
--- jbpm4/branches/email/pom.xml 2009-04-07 19:44:17 UTC (rev 4491)
+++ jbpm4/branches/email/pom.xml 2009-04-07 21:00:21 UTC (rev 4492)
@@ -47,6 +47,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<apache.ant.version>1.7.0</apache.ant.version>
<cactus.version>13-1.7.1</cactus.version>
+ <commons.email.version>1.2-SNAPSHOT</commons.email.version>
<gwt.console.version>1.0.0-SNAPSHOT</gwt.console.version>
<hibernate.version>3.2.6.ga</hibernate.version>
<hibernate.annotations.version>3.3.1.GA</hibernate.annotations.version>
@@ -315,6 +316,11 @@
<artifactId>jtds</artifactId>
<version>${jtds.version}</version>
</dependency>
+ <dependency>
+ <groupId>commons-email</groupId>
+ <artifactId>commons-email</artifactId>
+ <version>${commons.email.version}</version>
+ </dependency>
</dependencies>
</dependencyManagement>
17 years
JBoss JBPM SVN: r4491 - jbpm4/branches/email/hudson/hudson-home/jobs/jBPM4-Container-Matrix.
by do-not-reply@jboss.org
Author: alex.guizar(a)jboss.com
Date: 2009-04-07 15:44:17 -0400 (Tue, 07 Apr 2009)
New Revision: 4491
Modified:
jbpm4/branches/email/hudson/hudson-home/jobs/jBPM4-Container-Matrix/config.xml
Log:
trim container matrix
Modified: jbpm4/branches/email/hudson/hudson-home/jobs/jBPM4-Container-Matrix/config.xml
===================================================================
--- jbpm4/branches/email/hudson/hudson-home/jobs/jBPM4-Container-Matrix/config.xml 2009-04-07 19:18:40 UTC (rev 4490)
+++ jbpm4/branches/email/hudson/hudson-home/jobs/jBPM4-Container-Matrix/config.xml 2009-04-07 19:44:17 UTC (rev 4491)
@@ -30,13 +30,11 @@
<values>
<string>jboss422</string>
<string>jboss423</string>
- <string>jboss500</string>
</values>
</axis>
<axis>
<name>DATABASE</name>
<values>
- <string>hsqldb</string>
<string>mysql</string>
<string>oracle</string>
</values>
17 years
JBoss JBPM SVN: r4490 - jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl.
by do-not-reply@jboss.org
Author: bradsdavis
Date: 2009-04-07 15:18:40 -0400 (Tue, 07 Apr 2009)
New Revision: 4490
Modified:
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/ScriptMailProducer.java
Log:
Added more comments.
Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java 2009-04-07 19:12:58 UTC (rev 4489)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java 2009-04-07 19:18:40 UTC (rev 4490)
@@ -43,11 +43,15 @@
this.subject = (String)scriptManager.evaluateScript(this.subject, exe, language);
this.html = (String)scriptManager.evaluate(this.html, exe, language);
+ //Create an HTML message.
HtmlEmail email = new HtmlEmail();
+ //Populate recipients.
this.populateAddresses(mailContext, email);
+ //Set the regular body [non-html] and subject.
email.setTextMsg(this.body);
email.setSubject(this.subject);
+ //Run through the HTML, download images, and embed images within HTML message.
Matcher imgMatcher = imgSrcPattern.matcher(html);
StringBuffer htmlBuffer = new StringBuffer();
while(imgMatcher.find())
@@ -66,17 +70,19 @@
log.debug("Embedded HTML: "+htmlBuffer.toString());
}
try {
+ //Set the embedded HTML to the Email Message.
email.setHtmlMsg(htmlBuffer.toString());
}
catch(Exception e)
{
-
+ //TODO: what do we do here?
}
if(log.isTraceEnabled())
{
log.trace("Complete: "+(new Date()));
}
+ //Return the rendered message.
Collection<Email> collection = new HashSet<Email>();
collection.add(email);
return collection;
Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/ScriptMailProducer.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/ScriptMailProducer.java 2009-04-07 19:12:58 UTC (rev 4489)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/ScriptMailProducer.java 2009-04-07 19:18:40 UTC (rev 4490)
@@ -24,10 +24,13 @@
ScriptManager scriptManager = Environment.getFromCurrent(ScriptManager.class);
- //Here, you just need to populate the body of the message if it is a simple text email.
+ //Here, you just need to populate the subject and body of the message
+ //as evaluated by the JBPM script manager.
this.body = (String)scriptManager.evaluateScript(this.body, exe, language);
this.subject = (String)scriptManager.evaluateScript(this.subject, exe, language);
+ //Populate and produce email based on SimpleMailProducer logic now that fields
+ //have been resolved using the JBPM script manager.
return super.produce(exe, mailContext);
}
17 years
JBoss JBPM SVN: r4489 - jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl.
by do-not-reply@jboss.org
Author: bradsdavis
Date: 2009-04-07 15:12:58 -0400 (Tue, 07 Apr 2009)
New Revision: 4489
Modified:
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/ScriptMailProducer.java
Log:
Created better comments.
Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java 2009-04-07 19:10:40 UTC (rev 4488)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java 2009-04-07 19:12:58 UTC (rev 4489)
@@ -16,7 +16,8 @@
import org.jbpm.pvm.internal.script.ScriptManager;
/**
- * Create an HTML email message using scripts. Provide HTML to embed with image.
+ * Create an HTML email message using JBPM script manager. Provide HTML to embed with image.
+ * Body becomes the text alternative, subject, and html are rendered using the script manager.
* Images need to be hosted to be embedded within the message.
*
* @author Brad Davis
Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/ScriptMailProducer.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/ScriptMailProducer.java 2009-04-07 19:10:40 UTC (rev 4488)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/ScriptMailProducer.java 2009-04-07 19:12:58 UTC (rev 4489)
@@ -8,7 +8,12 @@
import org.jbpm.pvm.internal.email.producer.MailContext;
import org.jbpm.pvm.internal.script.ScriptManager;
-
+/**
+ * Created to produce simple text emails using the JBPM script manager.
+ * Provide the script language to transform the subject and body.
+ * @author Brad Davis
+ *
+ */
public class ScriptMailProducer extends SimpleMailProducer {
protected String language;
17 years
JBoss JBPM SVN: r4488 - jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl.
by do-not-reply@jboss.org
Author: bradsdavis
Date: 2009-04-07 15:10:40 -0400 (Tue, 07 Apr 2009)
New Revision: 4488
Modified:
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/SimpleMailProducer.java
Log:
Added templating email producer. Provide HTML with absolute SRC linked images [needs to be hosted images at this point] and it will embed the images into the message.
Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java 2009-04-07 19:07:17 UTC (rev 4487)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java 2009-04-07 19:10:40 UTC (rev 4488)
@@ -15,6 +15,13 @@
import org.jbpm.pvm.internal.email.producer.MailContext;
import org.jbpm.pvm.internal.script.ScriptManager;
+/**
+ * Create an HTML email message using scripts. Provide HTML to embed with image.
+ * Images need to be hosted to be embedded within the message.
+ *
+ * @author Brad Davis
+ *
+ */
public class HtmlScriptMailProducer extends ScriptMailProducer {
private static final Pattern imgSrcPattern = Pattern.compile("<img [.]*src=['\"]\\S+['\"]");
@@ -40,8 +47,6 @@
email.setTextMsg(this.body);
email.setSubject(this.subject);
-
-
Matcher imgMatcher = imgSrcPattern.matcher(html);
StringBuffer htmlBuffer = new StringBuffer();
while(imgMatcher.find())
@@ -100,4 +105,9 @@
}
+
+ public void setHtml(String html) {
+ this.html = html;
+ }
+
}
Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/SimpleMailProducer.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/SimpleMailProducer.java 2009-04-07 19:07:17 UTC (rev 4487)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/SimpleMailProducer.java 2009-04-07 19:10:40 UTC (rev 4488)
@@ -16,6 +16,11 @@
import org.jbpm.pvm.internal.email.producer.MailProducer;
import org.jbpm.pvm.internal.email.resolver.AddressResolver;
+/**
+ * Creates a simple email, with subject, body, and recipients.
+ * @author Brad Davis
+ *
+ */
public class SimpleMailProducer implements MailProducer {
protected String body;
17 years
JBoss JBPM SVN: r4487 - jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl.
by do-not-reply@jboss.org
Author: bradsdavis
Date: 2009-04-07 15:07:17 -0400 (Tue, 07 Apr 2009)
New Revision: 4487
Added:
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java
Log:
Added templating email producer. Provide HTML with absolute SRC linked images [needs to be hosted images at this point] and it will embed the images into the message.
Added: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java (rev 0)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java 2009-04-07 19:07:17 UTC (rev 4487)
@@ -0,0 +1,103 @@
+package org.jbpm.pvm.internal.email.producer.impl;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.commons.mail.Email;
+import org.apache.commons.mail.HtmlEmail;
+import org.jbpm.Execution;
+import org.jbpm.env.Environment;
+import org.jbpm.pvm.internal.email.producer.MailContext;
+import org.jbpm.pvm.internal.script.ScriptManager;
+
+public class HtmlScriptMailProducer extends ScriptMailProducer {
+
+ private static final Pattern imgSrcPattern = Pattern.compile("<img [.]*src=['\"]\\S+['\"]");
+ private static final Log log = LogFactory.getLog(HtmlScriptMailProducer.class);
+
+ protected String html;
+
+ public Collection<Email> produce(Execution exe, MailContext mailContext) throws Exception {
+
+ if(log.isTraceEnabled())
+ {
+ log.trace("Starting: "+(new Date()));
+ }
+ ScriptManager scriptManager = Environment.getFromCurrent(ScriptManager.class);
+
+ //Apply the scripting language to the process.
+ this.body = (String)scriptManager.evaluateScript(this.body, exe, language);
+ this.subject = (String)scriptManager.evaluateScript(this.subject, exe, language);
+ this.html = (String)scriptManager.evaluate(this.html, exe, language);
+
+ HtmlEmail email = new HtmlEmail();
+ this.populateAddresses(mailContext, email);
+ email.setTextMsg(this.body);
+ email.setSubject(this.subject);
+
+
+
+ Matcher imgMatcher = imgSrcPattern.matcher(html);
+ StringBuffer htmlBuffer = new StringBuffer();
+ while(imgMatcher.find())
+ {
+ String replace = embedImage(email,imgMatcher.group());
+ if(log.isDebugEnabled())
+ {
+ log.debug("Group: "+imgMatcher.group());
+ log.debug("Replacement: "+replace);
+ }
+ imgMatcher.appendReplacement(htmlBuffer, replace);
+ }
+ imgMatcher.appendTail(htmlBuffer);
+ if(log.isDebugEnabled())
+ {
+ log.debug("Embedded HTML: "+htmlBuffer.toString());
+ }
+ try {
+ email.setHtmlMsg(htmlBuffer.toString());
+ }
+ catch(Exception e)
+ {
+
+ }
+ if(log.isTraceEnabled())
+ {
+ log.trace("Complete: "+(new Date()));
+ }
+
+ Collection<Email> collection = new HashSet<Email>();
+ collection.add(email);
+ return collection;
+ }
+
+
+ protected String embedImage(HtmlEmail email, String imageTag)
+ {
+ String special = null;
+ special = imageTag.contains("'") ? "'" : "\"";
+
+ int opening = imageTag.indexOf(special,1);
+ int closing = imageTag.lastIndexOf(special);
+
+ String prefix = imageTag.substring(0,opening);
+ String src = imageTag.substring(opening+1,closing);
+ String hashName = Integer.toString(src.hashCode());
+ String cid = null;
+ try{
+ cid = email.embed(src, hashName);
+ }
+ catch(Exception e)
+ {
+ return imageTag;
+ }
+ return prefix+special+"cid:"+cid+special;
+
+ }
+
+}
17 years
JBoss JBPM SVN: r4486 - jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl.
by do-not-reply@jboss.org
Author: bradsdavis
Date: 2009-04-07 14:47:35 -0400 (Tue, 07 Apr 2009)
New Revision: 4486
Modified:
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/ScriptMailProducer.java
Log:
Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/ScriptMailProducer.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/ScriptMailProducer.java 2009-04-07 18:43:50 UTC (rev 4485)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/ScriptMailProducer.java 2009-04-07 18:47:35 UTC (rev 4486)
@@ -10,6 +10,7 @@
public class ScriptMailProducer extends SimpleMailProducer {
+
protected String language;
@Override
17 years
JBoss JBPM SVN: r4485 - jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl.
by do-not-reply@jboss.org
Author: bradsdavis
Date: 2009-04-07 14:43:50 -0400 (Tue, 07 Apr 2009)
New Revision: 4485
Modified:
jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/SimpleMailProducer.java
Log:
Checked null for mail context to/cc/bcc/actors/groups.
Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/SimpleMailProducer.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/SimpleMailProducer.java 2009-04-07 17:10:43 UTC (rev 4484)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/SimpleMailProducer.java 2009-04-07 18:43:50 UTC (rev 4485)
@@ -41,34 +41,48 @@
protected void populateAddresses(MailContext mailContext, Email email) throws EmailException
{
//Add the addresses.
- for(String a : mailContext.getToAddresses())
+ if(mailContext.getToAddresses()!=null)
{
- email.addTo(a);
+ for(String a : mailContext.getToAddresses())
+ {
+ email.addTo(a);
+ }
}
- for(String a : mailContext.getCcAddresses())
+ if(mailContext.getCcAddresses()!=null)
{
- email.addCc(a);
+ for(String a : mailContext.getCcAddresses())
+ {
+ email.addCc(a);
+ }
}
- for(String a : mailContext.getBccAddresses())
+ if(mailContext.getBccAddresses()!=null)
{
- email.addBcc(a);
+ for(String a : mailContext.getBccAddresses())
+ {
+ email.addBcc(a);
+ }
}
-
//Get address resolver.
AddressResolver resolver = Environment.getFromCurrent(AddressResolver.class);;
//Resolve actors and groups.
- for(User user : mailContext.getActors())
+ if(mailContext.getActors()!=null)
{
- InternetAddress address = resolver.resolveUserAddress(user);
- email.addTo(address.getAddress(), this.constructName(user));
+ for(User user : mailContext.getActors())
+ {
+ InternetAddress address = resolver.resolveUserAddress(user);
+ email.addTo(address.getAddress(), this.constructName(user));
+ }
}
- for(Group group : mailContext.getGroups())
+ if(mailContext.getGroups()!=null)
{
- Collection<InternetAddress> addresses = resolver.resolveGroupAddresses(group);
- for(InternetAddress address : addresses)
+ for(Group group : mailContext.getGroups())
{
- email.addTo(address.getAddress());
+ Collection<InternetAddress> addresses = resolver.resolveGroupAddresses(group);
+ for(InternetAddress address : addresses)
+ {
+ email.addTo(address.getAddress());
+ }
}
}
}
17 years