Merged HEAD-BUG-FIX (5.1/Cloud) to HEAD (5.1/Cloud)

94379: Merged 5.0.N (5.0.1) to HEAD-BUG-FIX (5.1/Cloud)
      94324: Merged DEV to V5.0.N (5.0.1)
         94107: MNT-13084: Invitation email to the site are not received
            - Support both Object[] and List<> subject params.
         94248: MNT-13084: Invitation email to the site are not received
            - Add support for String value in PARAM_SUBJECT_PARAMS
            - Add unit test. 


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@95080 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2015-01-31 15:40:04 +00:00
parent 955219c5cd
commit f0546e3819
2 changed files with 50 additions and 3 deletions

View File

@@ -933,9 +933,25 @@ public class MailActionExecuter extends ActionExecuterAbstractBase
// set subject line // set subject line
String subject = (String)ruleAction.getParameterValue(PARAM_SUBJECT); String subject = (String)ruleAction.getParameterValue(PARAM_SUBJECT);
List<Object> subjectParams = (List<Object>)ruleAction.getParameterValue(PARAM_SUBJECT_PARAMS); Object subjectParamsObject = ruleAction.getParameterValue(PARAM_SUBJECT_PARAMS);
subjectParams = subjectParams == null ? new ArrayList<Object>() : subjectParams; Object[] subjectParams = null;
String localizedSubject = getLocalizedSubject(subject, subjectParams.toArray(), locale); //Javasctipt pass SubjectParams as ArrayList. see MNT-12534
if (subjectParamsObject instanceof List)
{
subjectParams = ((List<Object>)subjectParamsObject).toArray();
}
else if (subjectParamsObject instanceof Object[])
{
subjectParams = (Object[])subjectParamsObject;
}
else
{
if (subjectParamsObject != null)
{
subjectParams = new Object[]{subjectParamsObject.toString()};
}
}
String localizedSubject = getLocalizedSubject(subject, subjectParams, locale);
if (locale == null) if (locale == null)
{ {
// process the template against the model // process the template against the model

View File

@@ -25,6 +25,7 @@ import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Map; import java.util.Map;
import javax.mail.Address; import javax.mail.Address;
@@ -54,6 +55,7 @@ import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.cmr.security.PersonService; import org.alfresco.service.cmr.security.PersonService;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
import org.alfresco.service.transaction.TransactionService; import org.alfresco.service.transaction.TransactionService;
import org.alfresco.util.Pair;
import org.alfresco.util.PropertyMap; import org.alfresco.util.PropertyMap;
import org.alfresco.util.test.junitrules.AlfrescoPerson; import org.alfresco.util.test.junitrules.AlfrescoPerson;
import org.alfresco.util.test.junitrules.ApplicationContextInit; import org.alfresco.util.test.junitrules.ApplicationContextInit;
@@ -384,6 +386,35 @@ public abstract class AbstractMailActionExecuterTest
} }
} }
@Test
public void testPrepareEmailSubjectParams()
{
Action mailAction = ACTION_SERVICE.createAction(MailActionExecuter.NAME);
mailAction.setParameterValue(MailActionExecuter.PARAM_TO, "some.bodyelse@example.com");
mailAction.setParameterValue(MailActionExecuter.PARAM_TEMPLATE, "alfresco/templates/mail/test.txt.ftl");
mailAction.setParameterValue(MailActionExecuter.PARAM_SUBJECT, "Test Subject Params");
mailAction.setParameterValue(MailActionExecuter.PARAM_TEMPLATE_MODEL, getModel());
Pair<String, Locale> recipient = new Pair<String, Locale>("test", Locale.ENGLISH);
mailAction.setParameterValue(MailActionExecuter.PARAM_SUBJECT_PARAMS, new Object[] {"Test", "Subject", "Params", "Object", "Array"});
Assert.assertNotNull("We should support Object[] value for PARAM_SUBJECT_PARAMS", ACTION_EXECUTER.prepareEmail(mailAction, null, recipient, null));
ArrayList<Object> params = new ArrayList<Object>();
params.add("Test");
params.add("Subject");
params.add("Params");
params.add("ArrayList");
mailAction.setParameterValue(MailActionExecuter.PARAM_SUBJECT_PARAMS, params);
Assert.assertNotNull("We should support List<Object> value for PARAM_SUBJECT_PARAMS", ACTION_EXECUTER.prepareEmail(mailAction, null, recipient, null));
mailAction.setParameterValue(MailActionExecuter.PARAM_SUBJECT_PARAMS, "Test Subject Params Single String");
Assert.assertNotNull("We should support String value for PARAM_SUBJECT_PARAMS", ACTION_EXECUTER.prepareEmail(mailAction, null, recipient, null));
mailAction.setParameterValue(MailActionExecuter.PARAM_SUBJECT_PARAMS, null);
Assert.assertNotNull("We should support null value for PARAM_SUBJECT_PARAMS", ACTION_EXECUTER.prepareEmail(mailAction, null, recipient, null));
}
/** /**
* Creates a test user with the specified username and optionally custom email. * Creates a test user with the specified username and optionally custom email.
* *