diff --git a/pom.xml b/pom.xml index 40c9f1b..90f3c21 100644 --- a/pom.xml +++ b/pom.xml @@ -55,6 +55,10 @@ false + + maven-central + http://repo1.maven.org/maven2 + Akaza Dev Repository http://svn.akazaresearch.com/ocrepository/repository @@ -330,6 +334,21 @@ tiles-jsp 2.2.1 + + org.apache.tiles + tiles-api + 2.2.1 + + + org.apache.tiles + tiles-servlet + 2.2.1 + + + org.apache.tiles + tiles-template + 2.2.1 + org.springframework spring-web @@ -493,6 +512,11 @@ compile + + org.codehaus.jackson + jackson-core-asl + 1.5.3 + org.codehaus.jackson jackson-mapper-asl @@ -515,21 +539,41 @@ commons-httpclient 3.1 + + commons-validator + commons-validator + 1.4.1 + org.springframework.security.oauth spring-security-oauth 1.0.0.M2 - + org.apache.httpcomponents httpclient 4.1 + + org.apache.httpcomponents + httpcore + 4.1 + + + org.ow2.asm + asm + 3.2 + org.codehaus.groovy groovy 1.8.0 + + commons-beanutils + commons-beanutils-core + 1.8.3 + diff --git a/src/main/java/org/akaza/openclinica/designer/web/controller/RuleBuilderController.java b/src/main/java/org/akaza/openclinica/designer/web/controller/RuleBuilderController.java index 034c93e..df82646 100644 --- a/src/main/java/org/akaza/openclinica/designer/web/controller/RuleBuilderController.java +++ b/src/main/java/org/akaza/openclinica/designer/web/controller/RuleBuilderController.java @@ -450,7 +450,12 @@ public String testForm(@RequestHeader(value = "X-Requested-With", required = fal * session.setAttribute(SESSION_ATTR_TESTINPUTFIELDS, inputFields); */ - testRules(form, uiODMBuilder, new TestRulesGetResponseHandler()); + ArrayList responseHandlers = new ArrayList(); + responseHandlers.add(new TestRulesGetResponseHandler()); + responseHandlers.add(new TestRulesSubmitResponseHandler()); + + testRules(form, uiODMBuilder, responseHandlers); + form.populateTestWillActionsRun(); session.setAttribute(SESSION_ATTR_TESTINPUTFIELDS, form.getRulePropertiesHtml()); // success response handling @@ -471,6 +476,10 @@ public String testForm(@RequestHeader(value = "X-Requested-With", required = fal @RequestMapping(value = "/testForm", method = RequestMethod.POST) public String processTestSubmit(@RequestHeader(value = "X-Requested-With", required = false) String requestedWith, @Valid RulesCommand form, BindingResult result, HttpSession session, Model model) throws IOException { + ArrayList messages = new ArrayList(); + form.getRuleRef().lazyToNonLazy(); + form.setTestRulesResults(new HashMap()); + UIODMContainer uiODMContainer = (UIODMContainer) session.getAttribute(SESSION_ATTR_UIODMCONTAINER); UIODMBuilder uiODMBuilder = new UIODMBuilder(uiODMContainer); @@ -486,10 +495,11 @@ public String processTestSubmit(@RequestHeader(value = "X-Requested-With", requi return null; } - form.getRuleRef().lazyToNonLazy(); - ArrayList messages = new ArrayList(); + ArrayList responseHandlers = new ArrayList(); + responseHandlers.add(new TestRulesGetResponseHandler()); + responseHandlers.add(new TestRulesSubmitResponseHandler()); - testRules(form, uiODMBuilder, new TestRulesSubmitResponseHandler()); + testRules(form, uiODMBuilder, responseHandlers); form.populateTestWillActionsRun(); session.setAttribute(SESSION_ATTR_FORM, form); @@ -509,13 +519,15 @@ private Message createRestExceptionMessage(Exception e) { return new Message(MessageType.error, "Could not submit to OC instance because :: " + message); } - private void testRules(RulesCommand form, UIODMBuilder uiODMBuilder, TestRulesResponseHandler responseHandler) { + private void testRules(RulesCommand form, UIODMBuilder uiODMBuilder, ArrayList responseHandlers) { ArrayList messages = new ArrayList(); RulesTest resp = null; try { resp = userPreferences.getRestTemplate().postForObject(userPreferences.getValidateAndTestRuleURL(), createRulesTestFromCommand(form), RulesTest.class); - responseHandler.handle(form, resp, uiODMBuilder); + for (TestRulesResponseHandler responseHandler : responseHandlers) { + responseHandler.handle(form, resp, uiODMBuilder); + } return; } catch (Exception e) { messages.add(createRestExceptionMessage(e)); @@ -568,8 +580,9 @@ private Rules rulesCommandToRules(RulesCommand form) { RuleAssignmentType ra = new RuleAssignmentType(); form.getTarget().setValue(form.getTarget().getValue() == null ? "" : form.getTarget().getValue().trim()); ra.setTarget(form.getTargetCurated(form.getTarget())); - if (!form.getRunOnSchedule().getTime().equals("")) + if (form.getRunOnSchedule() != null && !form.getRunOnSchedule().getTime().equals("")) { ra.setRunOnSchedule(form.getRunOnSchedule()); + } Rules r = new Rules(); for (LazyRuleRefType2 lrr : listLzRuleRef) { ra.getRuleRef().add(lrr); diff --git a/src/main/java/org/akaza/openclinica/designer/web/controller/RulesCommandValidator.java b/src/main/java/org/akaza/openclinica/designer/web/controller/RulesCommandValidator.java index dd981af..562e3d1 100644 --- a/src/main/java/org/akaza/openclinica/designer/web/controller/RulesCommandValidator.java +++ b/src/main/java/org/akaza/openclinica/designer/web/controller/RulesCommandValidator.java @@ -1,5 +1,6 @@ package org.akaza.openclinica.designer.web.controller; +import org.apache.commons.validator.routines.EmailValidator; import org.openclinica.ns.rules.v31.DiscrepancyNoteActionType; import org.openclinica.ns.rules.v31.EmailActionType; import org.openclinica.ns.rules.v31.HideActionType; @@ -82,17 +83,15 @@ private void validateEmailAction(LazyRuleRefType2 action, Errors e) { if (emailAction.getTo() == null || emailAction.getTo().trim().length() == 0) { e.rejectValue("ruleRef.lazyEmailActions[" + action.getEmailAction().indexOf(emailAction) + "].to", "email.to.empty"); } else { - Pattern pattern = Pattern.compile("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"); + EmailValidator validator = EmailValidator.getInstance(); StringTokenizer tokenizer = new StringTokenizer(emailAction.getTo(), ","); if (tokenizer.countTokens() == 0) { - Matcher matcher = pattern.matcher(emailAction.getTo()); - if (!matcher.matches()) { + if (!validator.isValid(emailAction.getTo())) { e.rejectValue("ruleRef.lazyEmailActions[" + action.getEmailAction().indexOf(emailAction) + "].to", "email.to.not.valid"); } } else { while (tokenizer.hasMoreTokens()) { - Matcher matcher = pattern.matcher(tokenizer.nextToken().trim()); - if (!matcher.matches()) { + if (!validator.isValid(tokenizer.nextToken().trim())) { e.rejectValue("ruleRef.lazyEmailActions[" + action.getEmailAction().indexOf(emailAction) + "].to", "email.to.not.valid"); break; }