[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