[jbpm-commits] JBoss JBPM SVN: r4816 - in jbpm4/trunk/modules: pvm/src/main/java/org/jbpm/pvm/internal/email/impl and 2 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu May 14 13:19:29 EDT 2009
Author: alex.guizar at jboss.com
Date: 2009-05-14 13:19:28 -0400 (Thu, 14 May 2009)
New Revision: 4816
Added:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailTemplateRegistry.java
Removed:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailTemplateMap.java
Modified:
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailBinding.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailTemplateBinding.java
jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailTemplateWireTest.java
Log:
[JBPM-2254] prevent registration of an inline template
Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailBinding.java 2009-05-14 16:04:40 UTC (rev 4815)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailBinding.java 2009-05-14 17:19:28 UTC (rev 4816)
@@ -21,20 +21,18 @@
*/
package org.jbpm.jpdl.internal.activity;
+import org.w3c.dom.Element;
+
import org.jbpm.api.env.Environment;
import org.jbpm.pvm.internal.email.impl.MailProducerImpl;
import org.jbpm.pvm.internal.email.impl.MailTemplate;
-import org.jbpm.pvm.internal.email.impl.MailTemplateMap;
+import org.jbpm.pvm.internal.email.impl.MailTemplateRegistry;
import org.jbpm.pvm.internal.email.spi.MailProducer;
import org.jbpm.pvm.internal.util.XmlUtil;
-import org.jbpm.pvm.internal.wire.Descriptor;
-import org.jbpm.pvm.internal.wire.WireContext;
import org.jbpm.pvm.internal.wire.binding.MailTemplateBinding;
import org.jbpm.pvm.internal.wire.binding.ObjectBinding;
-import org.jbpm.pvm.internal.wire.descriptor.ProvidedObjectDescriptor;
import org.jbpm.pvm.internal.xml.Parse;
import org.jbpm.pvm.internal.xml.Parser;
-import org.w3c.dom.Element;
/**
* @author Alejandro Guizar
@@ -67,22 +65,22 @@
}
protected MailTemplate parseTemplate(Element element, Parse parse, Parser parser) {
+ MailTemplate template;
+
// look for template reference
String templateName = XmlUtil.attribute(element, "template");
if (templateName != null) {
// load template from configuration
- MailTemplateMap mailTemplateMap = Environment.getFromCurrent(MailTemplateMap.class);
- MailTemplate template = mailTemplateMap.getTemplate(templateName);
- if (template==null) {
- parse.addProblem("mail-template "+templateName+" is not configured", element);
+ MailTemplateRegistry templateRegistry = Environment.getFromCurrent(MailTemplateRegistry.class);
+ template = templateRegistry.getTemplate(templateName);
+ if (template == null) {
+ parse.addProblem("mail template not found: " + templateName, element);
}
- return template;
- }
-
- // parse inline template
- ProvidedObjectDescriptor templateDescriptor = (ProvidedObjectDescriptor) templateBinding.parse(element, parse, parser);
- MailTemplateMap mailTemplateMap = (MailTemplateMap) templateDescriptor.getProvidedObject();
- String name = XmlUtil.attribute(element, "name");
- return mailTemplateMap.getTemplate(name);
+ }
+ else {
+ // parse inline template
+ template = templateBinding.parseMailTemplate(element, parse, parser);
+ }
+ return template;
}
}
Deleted: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailTemplateMap.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailTemplateMap.java 2009-05-14 16:04:40 UTC (rev 4815)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailTemplateMap.java 2009-05-14 17:19:28 UTC (rev 4816)
@@ -1,44 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * 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.
- */
-package org.jbpm.pvm.internal.email.impl;
-
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author Tom Baeyens
- */
-public class MailTemplateMap implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- Map<String, MailTemplate> templates = new HashMap<String, MailTemplate>();
-
- public void addTemplate(String templateName, MailTemplate template) {
- templates.put(templateName, template);
- }
-
- public MailTemplate getTemplate(String templateName) {
- return templates.get(templateName);
- }
-}
Copied: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailTemplateRegistry.java (from rev 4815, jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailTemplateMap.java)
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailTemplateRegistry.java (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailTemplateRegistry.java 2009-05-14 17:19:28 UTC (rev 4816)
@@ -0,0 +1,44 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * 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.
+ */
+package org.jbpm.pvm.internal.email.impl;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Tom Baeyens
+ */
+public class MailTemplateRegistry implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ Map<String, MailTemplate> templates = new HashMap<String, MailTemplate>();
+
+ public void addTemplate(String templateName, MailTemplate template) {
+ templates.put(templateName, template);
+ }
+
+ public MailTemplate getTemplate(String templateName) {
+ return templates.get(templateName);
+ }
+}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailTemplateBinding.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailTemplateBinding.java 2009-05-14 16:04:40 UTC (rev 4815)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailTemplateBinding.java 2009-05-14 17:19:28 UTC (rev 4816)
@@ -21,21 +21,19 @@
*/
package org.jbpm.pvm.internal.wire.binding;
-import java.util.ArrayList;
-import java.util.List;
+import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
import org.jbpm.pvm.internal.email.impl.AddressTemplate;
import org.jbpm.pvm.internal.email.impl.AttachmentTemplate;
import org.jbpm.pvm.internal.email.impl.MailTemplate;
-import org.jbpm.pvm.internal.email.impl.MailTemplateMap;
+import org.jbpm.pvm.internal.email.impl.MailTemplateRegistry;
import org.jbpm.pvm.internal.util.XmlUtil;
import org.jbpm.pvm.internal.wire.WireDefinition;
import org.jbpm.pvm.internal.wire.descriptor.ProvidedObjectDescriptor;
import org.jbpm.pvm.internal.xml.Parse;
import org.jbpm.pvm.internal.xml.Parser;
-import org.w3c.dom.DocumentFragment;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
/**
* @author Alejandro Guizar
@@ -47,48 +45,54 @@
}
public Object parse(Element element, Parse parse, Parser parser) {
-
- // MailTemplateMap is added to the WireDescriptor with a ProvidedObjectDescriptor
- // The MailTemplateMap descriptor is lazy initialized by this binding
- // mail-templates will add a MailTemplate to the MailTemplateMap
-
- ProvidedObjectDescriptor mailTemplateMapDescriptor = null;
- MailTemplateMap mailTemplateMap = null;
-
+ // MailTemplateRegistry is added to the WireDescriptor with a ProvidedObjectDescriptor
+ // The MailTemplateRegistry descriptor is lazy initialized by this binding
+ // mail-templates will add a MailTemplate to the MailTemplateRegistry
+ ProvidedObjectDescriptor templateRegistryDescriptor;
+ MailTemplateRegistry templateRegistry;
+
WireDefinition wireDefinition = parse.findObject(WireDefinition.class);
- String templateMapDescriptorName = (wireDefinition!=null ? wireDefinition.getDescriptorName(MailTemplateMap.class) : null);
- if (templateMapDescriptorName!=null) {
- mailTemplateMapDescriptor = (ProvidedObjectDescriptor) wireDefinition.getDescriptor(templateMapDescriptorName);
- mailTemplateMap = (MailTemplateMap) mailTemplateMapDescriptor.getProvidedObject();
- mailTemplateMapDescriptor = null; // setting it to null so that the wire parser won't be add it to the wiredefinition a second time
- } else {
- mailTemplateMap = new MailTemplateMap();
- mailTemplateMapDescriptor = new ProvidedObjectDescriptor(mailTemplateMap, true);
+ String templateRegistryDescriptorName = wireDefinition != null ? wireDefinition.getDescriptorName(MailTemplateRegistry.class)
+ : null;
+ if (templateRegistryDescriptorName != null) {
+ templateRegistryDescriptor = (ProvidedObjectDescriptor) wireDefinition.getDescriptor(templateRegistryDescriptorName);
+ templateRegistry = (MailTemplateRegistry) templateRegistryDescriptor.getProvidedObject();
+ templateRegistryDescriptor = null; // setting it to null so that the wire parser doesn't add it to the wiredefinition again
}
+ else {
+ templateRegistry = new MailTemplateRegistry();
+ templateRegistryDescriptor = new ProvidedObjectDescriptor(templateRegistry, true);
+ }
- // create the mail template and add it to the mailTemplateMap
+ // create the mail template and add it to the registry
+ MailTemplate mailTemplate = parseMailTemplate(element, parse, parser);
+ String templateName = XmlUtil.attribute(element, "name", true, parse);
+ templateRegistry.addTemplate(templateName, mailTemplate);
+
+ return templateRegistryDescriptor;
+ }
+
+ public MailTemplate parseMailTemplate(Element element, Parse parse, Parser parser) {
MailTemplate mailTemplate = new MailTemplate();
- String templateName = XmlUtil.attribute(element, "name", true, parse);
- mailTemplateMap.addTemplate(templateName, mailTemplate);
-
mailTemplate.setLanguage(XmlUtil.attribute(element, "language"));
+
mailTemplate.setFrom(parseRecipientTemplate(element, "from", parse, parser));
mailTemplate.setTo(parseRecipientTemplate(element, "to", parse, parser));
mailTemplate.setCc(parseRecipientTemplate(element, "cc", parse, parser));
mailTemplate.setBcc(parseRecipientTemplate(element, "bcc", parse, parser));
Element subjectElement = XmlUtil.element(element, "subject");
- if (subjectElement!=null) {
+ if (subjectElement != null) {
mailTemplate.setSubject(XmlUtil.getContentText(subjectElement));
}
-
+
Element textElement = XmlUtil.element(element, "text");
- if (textElement!=null) {
+ if (textElement != null) {
mailTemplate.setText(XmlUtil.getContentText(textElement));
}
-
+
Element htmlElement = XmlUtil.element(element, "html");
- if (htmlElement!=null) {
+ if (htmlElement != null) {
// extract child nodes from html element
DocumentFragment fragment = htmlElement.getOwnerDocument().createDocumentFragment();
for (Node child = htmlElement.getFirstChild(), next; child != null; child = next) {
@@ -97,34 +101,31 @@
}
mailTemplate.setHtml(XmlUtil.toString(fragment));
}
-
+
// attachments
Element attachmentsElement = XmlUtil.element(element, "attachments");
if (attachmentsElement != null) {
- List<AttachmentTemplate> attachmentTemplates = new ArrayList<AttachmentTemplate>();
for (Element attachmentElement : XmlUtil.elements(attachmentsElement, "attachment")) {
AttachmentTemplate attachmentTemplate = new AttachmentTemplate();
mailTemplate.addAttachmentTemplate(attachmentTemplate);
-
+
attachmentTemplate.setUrl(XmlUtil.attribute(attachmentElement, "url"));
attachmentTemplate.setResource(XmlUtil.attribute(attachmentElement, "resource"));
attachmentTemplate.setFile(XmlUtil.attribute(attachmentElement, "file"));
}
}
- return mailTemplateMapDescriptor;
+ return mailTemplate;
}
- protected AddressTemplate parseRecipientTemplate(Element element, String tagName, Parse parse, Parser parser) {
- AddressTemplate addressTemplate = null;
-
+ protected AddressTemplate parseRecipientTemplate(Element element, String tagName, Parse parse,
+ Parser parser) {
Element recipientElement = XmlUtil.element(element, tagName);
- if (recipientElement!=null) {
- addressTemplate = new AddressTemplate();
-
- addressTemplate.setAddresses(XmlUtil.attribute(recipientElement, "addresses"));
- addressTemplate.setUsers(XmlUtil.attribute(recipientElement, "users"));
- addressTemplate.setGroups(XmlUtil.attribute(recipientElement, "groups"));
- }
+ if (recipientElement == null) return null;
+
+ AddressTemplate addressTemplate = new AddressTemplate();
+ addressTemplate.setAddresses(XmlUtil.attribute(recipientElement, "addresses"));
+ addressTemplate.setUsers(XmlUtil.attribute(recipientElement, "users"));
+ addressTemplate.setGroups(XmlUtil.attribute(recipientElement, "groups"));
return addressTemplate;
}
}
Modified: jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailTemplateWireTest.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailTemplateWireTest.java 2009-05-14 16:04:40 UTC (rev 4815)
+++ jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailTemplateWireTest.java 2009-05-14 17:19:28 UTC (rev 4816)
@@ -25,7 +25,7 @@
import org.jbpm.pvm.internal.email.impl.AttachmentTemplate;
import org.jbpm.pvm.internal.email.impl.MailTemplate;
-import org.jbpm.pvm.internal.email.impl.MailTemplateMap;
+import org.jbpm.pvm.internal.email.impl.MailTemplateRegistry;
/**
* @author Alejandro Guizar
@@ -41,9 +41,9 @@
+ "</mail-template>"
+ "</objects>");
- MailTemplateMap mailTemplateMap = wireContext.get(MailTemplateMap.class);
- assertNotNull(mailTemplateMap);
- assertNotNull(mailTemplateMap.getTemplate("memo"));
+ MailTemplateRegistry templateRegistry = wireContext.get(MailTemplateRegistry.class);
+ assertNotNull(templateRegistry);
+ assertNotNull(templateRegistry.getTemplate("memo"));
}
public void testLanguage() {
@@ -55,7 +55,7 @@
+ "</mail-template>"
+ "</objects>");
- MailTemplate template = wireContext.get(MailTemplateMap.class).getTemplate("memo");
+ MailTemplate template = wireContext.get(MailTemplateRegistry.class).getTemplate("memo");
assertEquals("juel", template.getLanguage());
}
@@ -69,7 +69,7 @@
+ "</mail-template>"
+ "</objects>");
- MailTemplate template = wireContext.get(MailTemplateMap.class).getTemplate("memo");
+ MailTemplate template = wireContext.get(MailTemplateRegistry.class).getTemplate("memo");
assertEquals("wacko at jbpm.org", template.getFrom().getAddresses());
}
@@ -82,7 +82,7 @@
+ "</mail-template>"
+ "</objects>");
- MailTemplate template = wireContext.get(MailTemplateMap.class).getTemplate("memo");
+ MailTemplate template = wireContext.get(MailTemplateRegistry.class).getTemplate("memo");
assertEquals("dilbert at office, alice at work, dogbert at house", template.getTo().getAddresses());
}
@@ -96,7 +96,7 @@
+ "</mail-template>"
+ "</objects>");
- MailTemplate template = wireContext.get(MailTemplateMap.class).getTemplate("memo");
+ MailTemplate template = wireContext.get(MailTemplateRegistry.class).getTemplate("memo");
assertEquals("theboss, hrpolicymaker", template.getCc().getUsers());
}
@@ -110,7 +110,7 @@
+ "</mail-template>"
+ "</objects>");
- MailTemplate template = wireContext.get(MailTemplateMap.class).getTemplate("memo");
+ MailTemplate template = wireContext.get(MailTemplateRegistry.class).getTemplate("memo");
assertEquals("thoughtpolice", template.getBcc().getGroups());
}
@@ -123,7 +123,7 @@
+ "</mail-template>"
+ "</objects>");
- MailTemplate template = wireContext.get(MailTemplateMap.class).getTemplate("memo");
+ MailTemplate template = wireContext.get(MailTemplateRegistry.class).getTemplate("memo");
assertEquals("bureaucracy", template.getSubject());
}
@@ -137,7 +137,7 @@
+ "</mail-template>"
+ "</objects>");
- MailTemplate template = wireContext.get(MailTemplateMap.class).getTemplate("memo");
+ MailTemplate template = wireContext.get(MailTemplateRegistry.class).getTemplate("memo");
assertEquals("plain text content", template.getText());
}
@@ -151,7 +151,7 @@
+ "</mail-template>"
+ "</objects>");
- MailTemplate template = wireContext.get(MailTemplateMap.class).getTemplate("memo");
+ MailTemplate template = wireContext.get(MailTemplateRegistry.class).getTemplate("memo");
assertEquals("<strong>rich</strong> content", template.getHtml());
}
@@ -169,7 +169,7 @@
+ "</mail-template>"
+ "</objects>");
- MailTemplate template = wireContext.get(MailTemplateMap.class).getTemplate("memo");
+ MailTemplate template = wireContext.get(MailTemplateRegistry.class).getTemplate("memo");
List<AttachmentTemplate> attachmentTemplates = template.getAttachmentTemplates();
assertEquals(3, attachmentTemplates.size());
// url
More information about the jbpm-commits
mailing list