/** * Return FieldError arguments for a validation error on the given field. * Invoked for each violated constraint. * <p>The default implementation returns a first argument indicating the field name * (of type DefaultMessageSourceResolvable, with "objectName.field" and "field" as codes). * Afterwards, it adds all actual constraint annotation attributes (i.e. excluding * "message", "groups" and "payload") in alphabetical order of their attribute names. * <p>Can be overridden to e.g. add further attributes from the constraint descriptor. * @param objectName the name of the target object * @param field the field that caused the binding error * @param descriptor the JSR-303 constraint descriptor * @return the Object array that represents the FieldError arguments * @see org.springframework.validation.FieldError#getArguments * @see org.springframework.context.support.DefaultMessageSourceResolvable * @see org.springframework.validation.DefaultBindingErrorProcessor#getArgumentsForBindError */ protected Object[] getArgumentsForConstraint(String objectName, String field, ConstraintDescriptor<?> descriptor) { List<Object> arguments = new LinkedList<Object>(); String[] codes = new String[] {objectName + Errors.NESTED_PATH_SEPARATOR + field, field}; arguments.add(new DefaultMessageSourceResolvable(codes, field)); // Using a TreeMap for alphabetical ordering of attribute names Map<String, Object> attributesToExpose = new TreeMap<String, Object>(); for (Map.Entry<String, Object> entry : descriptor.getAttributes().entrySet()) { String attributeName = entry.getKey(); Object attributeValue = entry.getValue(); if (!internalAnnotationAttributes.contains(attributeName)) { attributesToExpose.put(attributeName, attributeValue); } } arguments.addAll(attributesToExpose.values()); return arguments.toArray(new Object[arguments.size()]); }
@Test public void messageTagWithMessageSourceResolvable() throws JspException { PageContext pc = createPageContext(); final StringBuffer message = new StringBuffer(); MessageTag tag = new MessageTag() { @Override protected void writeMessage(String msg) { message.append(msg); } }; tag.setPageContext(pc); tag.setMessage(new DefaultMessageSourceResolvable("test")); assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); assertEquals("Correct doEndTag return value", Tag.EVAL_PAGE, tag.doEndTag()); assertEquals("Correct message", "test message", message.toString()); }
@Test @SuppressWarnings("rawtypes") public void requestContext() throws ServletException { PageContext pc = createPageContext(); RequestContext rc = new RequestContext((HttpServletRequest) pc.getRequest(), pc.getServletContext()); assertEquals("test message", rc.getMessage("test")); assertEquals("test message", rc.getMessage("test", (Object[]) null)); assertEquals("test message", rc.getMessage("test", "default")); assertEquals("test message", rc.getMessage("test", (Object[]) null, "default")); assertEquals("test arg1 message arg2", rc.getMessage("testArgs", new String[] {"arg1", "arg2"}, "default")); assertEquals("test arg1 message arg2", rc.getMessage("testArgs", Arrays.asList(new String[] {"arg1", "arg2"}), "default")); assertEquals("default", rc.getMessage("testa", "default")); assertEquals("default", rc.getMessage("testa", (List) null, "default")); MessageSourceResolvable resolvable = new DefaultMessageSourceResolvable(new String[] {"test"}); assertEquals("test message", rc.getMessage(resolvable)); }
@Test @SuppressWarnings("rawtypes") public void requestContext() throws ServletException { PageContext pc = createPageContext(); RequestContext rc = new RequestContext((HttpServletRequest) pc.getRequest()); assertEquals("theme test message", rc.getThemeMessage("themetest")); assertEquals("theme test message", rc.getThemeMessage("themetest", (String[]) null)); assertEquals("theme test message", rc.getThemeMessage("themetest", "default")); assertEquals("theme test message", rc.getThemeMessage("themetest", (Object[]) null, "default")); assertEquals("theme test message arg1", rc.getThemeMessage("themetestArgs", new String[] {"arg1"})); assertEquals("theme test message arg1", rc.getThemeMessage("themetestArgs", Arrays.asList(new String[] {"arg1"}))); assertEquals("default", rc.getThemeMessage("themetesta", "default")); assertEquals("default", rc.getThemeMessage("themetesta", (List) null, "default")); MessageSourceResolvable resolvable = new DefaultMessageSourceResolvable(new String[] {"themetest"}); assertEquals("theme test message", rc.getThemeMessage(resolvable)); }
/** * * @param group * Set the group to create * @param page Set the page number * @param size Set the page size * @param result * Set the binding result * @param model * Set the model * @param session Set the session * @return the name of the view */ @RequestMapping(method = RequestMethod.POST, produces = "text/html") public String create(@Valid Group group, BindingResult result, Model model, RedirectAttributes redirectAttributes) { if (result.hasErrors()) { return "group/create"; } getService().save(group); String[] codes = new String[] {"group.created" }; Object[] args = new Object[] {group.getIdentifier()}; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable( codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/group"; }
/** * @param identifier * Set the identifier of the group * @param ace Set the ace * @param session Set the session * @return the view name */ @RequestMapping(value = "/{identifier}", params = { "aces", "!delete" }, method = RequestMethod.POST, produces = "text/html") public String addAce(@PathVariable String identifier, @ModelAttribute("ace") AceDto ace, RedirectAttributes redirectAttributes) { SecuredObject object = conversionService.convert(ace, SecuredObject.class); getService().addPermission(object, identifier, ace.getPermission(), ace.getClazz()); String[] codes = new String[] {"ace.added.to.group" }; Object[] args = new Object[] { conversionService.convert(ace.getPermission(), String.class), ace.getClazz().getSimpleName(), ace.getObject() }; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable( codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/group/" + identifier + "?form"; }
/** * @param identifier * Set the identifier of the group * @param object * Set the identifier of the secured object * @param clazz Set the class of the secured object * @param session Set the session * @param permission Set the permission * @return the view name */ @RequestMapping(value = "/{identifier}", params = { "aces", "delete" }, method = RequestMethod.GET, produces = "text/html") public String removeAce(@PathVariable String identifier, @RequestParam String object, @RequestParam Class clazz, @RequestParam @PermissionFormat Permission permission, RedirectAttributes redirectAttributes) { AceDto ace = new AceDto(); ace.setClazz(clazz); ace.setObject(object); ace.setPrincipal(identifier); SecuredObject securedObject = conversionService.convert(ace, SecuredObject.class); getService().deletePermission(securedObject, identifier, permission, clazz); String[] codes = new String[] {"ace.removed.from.group" }; Object[] args = new Object[] { conversionService.convert(permission, String.class), clazz.getSimpleName(), ace.getObject() }; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable( codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/group/" + identifier + "?form"; }
/** * @param session * Set the session * @param organisation * Set the source * @param result * Set the binding results * @return a model and view */ @RequestMapping(method = RequestMethod.POST, produces = "text/html") public String post(@Valid Organisation organisation, BindingResult result, RedirectAttributes redirectAttributes) { if (result.hasErrors()) { return "organisation/create"; } getService().saveOrUpdate(organisation); String[] codes = new String[] { "organisation.was.created" }; Object[] args = new Object[] { organisation.getTitle() }; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable( codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/organisation"; }
/** * @param identifier * Set the sourceId * @param model * Set the model * @param session * Set the session * @param resource * Set the job * @param result * Set the binding results * @return a model and view */ @RequestMapping(method = RequestMethod.POST, produces = "text/html") public String create(Model model, @Validated({Default.class, ReadResource.class}) Resource resource, BindingResult result, RedirectAttributes redirectAttributes) { if (result.hasErrors()) { populateForm(model, resource, new ResourceParameterDto()); return "resource/create"; } logger.error("Creating Resource " + resource + " with organisation " + resource.getOrganisation()); getService().saveOrUpdate(resource); String[] codes = new String[] { "resource.was.created" }; Object[] args = new Object[] { resource.getTitle() }; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable(codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/resource"; }
@Override protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request) { //TODO detail i18n and missing parameter name final String detail = ex.getBindingResult() .getAllErrors() .stream() .map(DefaultMessageSourceResolvable::getDefaultMessage) .collect(joining(", ")); final E errorResponse = createErrorResponse(status, i18n(request, "rest-error.MethodArgumentNotValidException", detail)); logException(ex, errorResponse, request); return new ResponseEntity<>(errorResponse, status); }
@SuppressWarnings("serial") public void testMessageTagWithMessageSourceResolvable2() throws JspException { PageContext pc = createPageContext(); final StringBuffer message = new StringBuffer(); MessageTag tag = new MessageTag() { @Override protected void writeMessage(String msg) { message.append(msg); } }; tag.setPageContext(pc); pc.setAttribute("myattr", new DefaultMessageSourceResolvable("test")); tag.setMessage("${myattr}"); assertTrue("Correct doStartTag return value", tag.doStartTag() == Tag.EVAL_BODY_INCLUDE); assertEquals("Correct message", "test message", message.toString()); }
public void testRequestContext() throws ServletException { PageContext pc = createPageContext(); RequestContext rc = new RequestContext((HttpServletRequest) pc.getRequest(), pc.getServletContext()); assertEquals("test message", rc.getMessage("test")); assertEquals("test message", rc.getMessage("test", (Object[]) null)); assertEquals("test message", rc.getMessage("test", "default")); assertEquals("test message", rc.getMessage("test", (Object[]) null, "default")); assertEquals("test arg1 message arg2", rc.getMessage("testArgs", new String[] {"arg1", "arg2"}, "default")); assertEquals("test arg1 message arg2", rc.getMessage("testArgs", Arrays.asList(new String[] {"arg1", "arg2"}), "default")); assertEquals("default", rc.getMessage("testa", "default")); assertEquals("default", rc.getMessage("testa", (List) null, "default")); MessageSourceResolvable resolvable = new DefaultMessageSourceResolvable(new String[] {"test"}); assertEquals("test message", rc.getMessage(resolvable)); }
public void testRequestContext() throws ServletException { PageContext pc = createPageContext(); RequestContext rc = new RequestContext((HttpServletRequest) pc.getRequest()); assertEquals("theme test message", rc.getThemeMessage("themetest")); assertEquals("theme test message", rc.getThemeMessage("themetest", (String[]) null)); assertEquals("theme test message", rc.getThemeMessage("themetest", "default")); assertEquals("theme test message", rc.getThemeMessage("themetest", (Object[]) null, "default")); assertEquals("theme test message arg1", rc.getThemeMessage("themetestArgs", new String[] {"arg1"})); assertEquals("theme test message arg1", rc.getThemeMessage("themetestArgs", Arrays.asList(new String[] {"arg1"}))); assertEquals("default", rc.getThemeMessage("themetesta", "default")); assertEquals("default", rc.getThemeMessage("themetesta", (List) null, "default")); MessageSourceResolvable resolvable = new DefaultMessageSourceResolvable(new String[] {"themetest"}); assertEquals("theme test message", rc.getThemeMessage(resolvable)); }
private MessageSourceResolvable parse2(String code, Object[] args, String defaultMessage) { List<MessageSourceResolvable> params = new ArrayList<>(); Matcher m = pattern.matcher(code); boolean result = m.find(); if (!result) { return new DefaultMessageSourceResolvable(new String[] { code }, getArgs(params, args), defaultMessage); } StringBuffer sb = new StringBuffer(); do { String s = m.group(1); params.add(create(sb.toString(), s)); m.appendReplacement(sb, "[]"); result = m.find(); } while (result); m.appendTail(sb); return new DefaultMessageSourceResolvable(new String[] { code, sb.toString() }, getArgs(params, args), defaultMessage); }
/** * Returns the header to be used as column title. If no explicit header was set, the headerKeys are used * to fetch a message from the available resources. */ public String getHeader() { if (this.header == null) { if (this.headerKeys == null) { this.headerKeys = new String[2]; this.headerKeys[0] = getPropertyName() + ".header"; this.headerKeys[1] = getPropertyName(); } this.header = RcpSupport.getMessage(new DefaultMessageSourceResolvable(this.headerKeys, null, this.headerKeys[this.headerKeys.length - 1])); } // JTableHeader has a reusable defaultHeaderRenderer on which the default height must be correct. // when painting, the columns headers are processed in order and height is being calculated, // if label is null or empty string header height is 4 and thus leaves us with a very small // table-header, fix this by returning a space (-> font-size is incorporated) return "".equals(this.header) ? " " : this.header; }
public Object postProcessAfterInitialization(Object bean, String name) throws BeansException { if (bean instanceof TitleConfigurable) { TitleConfigurable configurable = (TitleConfigurable) bean; try { String title = messageSource.getMessage(new DefaultMessageSourceResolvable(name + "." + TITLE_KEY), Locale.getDefault()); if (StringUtils.hasText(title)) { configurable.setTitle(title); } } catch (NoSuchMessageException e) { throw new BeanInitializationException("Unable to initialize bean " + name, e); } } return bean; }
public Object postProcessAfterInitialization(Object bean, String name) throws BeansException { if (bean instanceof LabelConfigurable) { LabelConfigurable configurable = (LabelConfigurable) bean; try { String label = messageSource.getMessage(new DefaultMessageSourceResolvable(name + "." + LABEL_KEY), Locale.getDefault()); if (StringUtils.hasText(label)) { configurable.setLabelInfo(LabelInfo.valueOf(label)); } } catch (NoSuchMessageException e) { throw new BeanInitializationException("Unable to initialize bean " + name, e); } } return bean; }
@BeforeClass public void beforeClass() { AllPropertiesMessageSource molgenisLocalizationMessages = new AllPropertiesMessageSource(); molgenisLocalizationMessages.addMolgenisNamespaces("web"); ResourceBundleMessageSource hibernateValidationMessages = new ResourceBundleMessageSource(); hibernateValidationMessages.addBasenames("org.hibernate.validator.ValidationMessages"); molgenisLocalizationMessages.setParentMessageSource(hibernateValidationMessages); MessageSourceHolder.setMessageSource(molgenisLocalizationMessages); globalError = new ObjectError("entityCollectionRequestV2", new String[] { "TwoFieldsSet" }, new Object[] { 1 }, "must have two fields set"); fieldError = new FieldError("entityCollectionRequestV2", "num", -10, false, new String[] { "Min.entityCollectionRequestV2.num", "Min.num", "Min.int", "Min" }, new Object[] { new DefaultMessageSourceResolvable(new String[] { "entityCollectionRequestV2.num", "num" }, null, "num"), 0 }, "must be greater than or equal to 0"); }
@ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity handleMethodArgumentNotValidException( final MethodArgumentNotValidException exception, final HttpServletRequest req) { log.warn("Processing method argument not valid exception: {}", exception.getMessage()); final String message = exception.getBindingResult().getFieldErrors() .stream() .map(DefaultMessageSourceResolvable::getDefaultMessage) .collect(Collectors.joining("\n")); return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ExceptionResponse(message)); }
public static ResponseEntity<Response> createErrorResponse( BindingResult result ){ Response.Builder response = new Response.Builder(); response.errors( result.getAllErrors() .stream() .map( DefaultMessageSourceResolvable::getDefaultMessage ) .collect( Collectors.toList() ) ); return new ResponseEntity<>( response.meta( Meta.badRequest() ).build(), HttpStatus.BAD_REQUEST ); }
@RequestMapping(value = "/{id}", method = RequestMethod.GET, params = "delete", produces = "text/html") public String delete(@PathVariable Long id, RedirectAttributes redirectAttributes) { PhylogeneticTree tree = getService().load(id); getService().deleteById(id); String[] codes = new String[] { "phylogeny.deleted" }; Object[] args = new Object[] { tree.getTitle() }; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable(codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/search?facet=base.class_s%3aorg.emonocot.model.PhylogeneticTree"; }
@RequestMapping(value = "/{id}", method = RequestMethod.GET, params = "delete", produces = "text/html") public String delete(@PathVariable Long id, RedirectAttributes redirectAttributes) { IdentificationKey key = getService().load(id); getService().deleteById(id); String[] codes = new String[] { "key.deleted" }; Object[] args = new Object[] { key.getTitle() }; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable(codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/search?facet=base.class_s%3aorg.emonocot.model.IdentificationKey"; }
/** * @param identifier * Set the identifier of the group * @param user the user to add to the group * @param session Set the session * @return the view name */ @RequestMapping(value = "/{groupIdentifier}", params = { "members", "!delete" }, method = RequestMethod.POST, produces = "text/html") public String addMember(@PathVariable String groupIdentifier, @ModelAttribute("user") User user, RedirectAttributes redirectAttributes) { userService.addUserToGroup(user.getUsername(), groupIdentifier); String[] codes = new String[] {"user.added.to.group" }; Object[] args = new Object[] {user.getUsername() }; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable( codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/group/" + groupIdentifier + "?form"; }
/** * @param identifier * Set the identifier of the group * @param user Set the user to remove * @param session Set the session * @return the view name */ @RequestMapping(value = "/{groupIdentifier}", params = { "members", "delete" }, method = RequestMethod.GET, produces = "text/html") public String removeMember(@PathVariable String groupIdentifier, @RequestParam String user, RedirectAttributes redirectAttributes) { userService.removeUserFromGroup(user, groupIdentifier); String[] codes = new String[] {"user.removed.from.group" }; Object[] args = new Object[] {user }; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable( codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/group/" + groupIdentifier + "?form"; }
@RequestMapping(value = "/{identifier}", method = RequestMethod.GET, params = "delete", produces = "text/html") public String delete(@PathVariable String identifier, RedirectAttributes redirectAttributes) { Group group = getService().find(identifier); userService.deleteGroup(identifier); String[] codes = new String[] { "group.deleted" }; Object[] args = new Object[] { group.getName() }; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable(codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/group"; }
@RequestMapping(value = "/{id}", method = RequestMethod.GET, params = "delete", produces = "text/html") public String delete(@PathVariable Long id, RedirectAttributes redirectAttributes) { User user = getService().find(id); getService().deleteUser(user.getUsername()); String[] codes = new String[] { "user.deleted" }; Object[] args = new Object[] { user.getUsername() }; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable(codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/user"; }
/** * @param organisationId * Set the identifier * @param session * Set the session * @param organisation * Set the source * @param result * Set the binding results * @return the model name */ @RequestMapping(value = "/{organisationId}", method = RequestMethod.POST, produces = "text/html") public String post( @PathVariable String organisationId, @Valid Organisation organisation, BindingResult result, RedirectAttributes redirectAttributes) { if (result.hasErrors()) { return "organisation/update"; } Organisation persistedSource = getService().load(organisationId); persistedSource.setTitle(organisation.getTitle()); persistedSource.setUri(organisation.getUri()); persistedSource.setCreator(organisation.getCreator()); persistedSource.setCreatorEmail(organisation.getCreatorEmail()); persistedSource.setCreated(organisation.getCreated()); persistedSource.setDescription(organisation.getDescription()); persistedSource.setPublisherName(organisation.getPublisherName()); persistedSource.setPublisherEmail(organisation.getPublisherEmail()); persistedSource.setCommentsEmailedTo(organisation.getCommentsEmailedTo()); persistedSource.setInsertCommentsIntoScratchpad(organisation.getInsertCommentsIntoScratchpad()); persistedSource.setSubject(organisation.getSubject()); persistedSource.setBibliographicCitation(organisation.getBibliographicCitation()); persistedSource.setLogoUrl(organisation.getLogoUrl()); persistedSource.setFooterLogoPosition(organisation.getFooterLogoPosition()); getService().saveOrUpdate(persistedSource); String[] codes = new String[] { "organisation.updated" }; Object[] args = new Object[] { organisation.getTitle() }; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable(codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/organisation/" + organisationId; }
@RequestMapping(value = "/{identifier}", method = RequestMethod.GET, params = {"delete"}, produces = "text/html") public String delete(@PathVariable String identifier, RedirectAttributes redirectAttributes) { Organisation organisation = getService().find(identifier); getService().delete(identifier); String[] codes = new String[] { "organisation.deleted" }; Object[] args = new Object[] { organisation.getTitle() }; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable(codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/organisation"; }
/** * @param organisationId * Set the identifier of the source * @param resourceId the identifier of the job * @param name the name of the parameter to add * @param session Set the session * @return the view name */ @RequestMapping(value = "/{resourceId}", params = { "parameters", "!delete" }, method = RequestMethod.POST) public String addParameter(@PathVariable Long resourceId, @ModelAttribute("parameter") ResourceParameterDto parameter, RedirectAttributes redirectAttributes) { Resource resource = getService().load(resourceId); resource.getParameters().put(parameter.getName(), ""); getService().saveOrUpdate(resource); String[] codes = new String[] {"parameter.added.to.resource" }; Object[] args = new Object[] { parameter.getName() }; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable(codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/resource/{resourceId}?form=true"; }
/** * @param organisationId * Set the identifier of the source * @param resourceId Set the job identifier * @param name the name of the parameter to delete * @param session Set the session * @return the view name */ @RequestMapping(value = "/{resourceId}", params = { "parameters", "delete" }, method = RequestMethod.GET) public String removeParameter(@PathVariable Long resourceId, @RequestParam("name") String name, RedirectAttributes redirectAttributes) { Resource resource = getService().load(resourceId); resource.getParameters().remove(name); getService().saveOrUpdate(resource); String[] codes = new String[] {"parameter.removed.from.resource" }; Object[] args = new Object[] { name }; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable(codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/resource/{resourceId}?form=true"; }
@RequestMapping(value = "/{id}", method = RequestMethod.GET, params = "delete", produces = "text/html") public String delete(@PathVariable Long id, RedirectAttributes redirectAttributes) { Resource resource = getService().find(id); getService().deleteById(id); String[] codes = new String[] { "resource.deleted" }; Object[] args = new Object[] { resource.getTitle() }; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable(codes, args); redirectAttributes.addFlashAttribute("info", message); return "redirect:/resource"; }
/** * @see OpenmrsMessageTag#doEndTag() */ @Test @Verifies(value = "evaluate specified message resolvable", method = "doEndTag()") public void doEndTag_shouldEvaluateSpecifiedMessageResolvable() throws Exception { String expectedOutput = "this is a test"; DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable(new String[] { "test" }, expectedOutput); openmrsMessageTag.setMessage(message); checkDoEndTagEvaluation(expectedOutput); }
@Test @Verifies(value = "resolve a Tag with var not set to null", method = "doEndTag()") public void doEndTag_shouldEvaluateVarIfIsNotNull() throws Exception { final String varName = "Mary"; final String expectedOutput = "had a little lamb"; openmrsMessageTag.setVar(varName); DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable(new String[] { "test" }, expectedOutput); openmrsMessageTag.setMessage(message); openmrsMessageTag.setScope(TagUtils.SCOPE_PAGE); checkDoEndTagEvaluationOfVar(varName, PageContext.PAGE_SCOPE, expectedOutput); }
/** * @see OpenmrsMessageTag#doEndTag() */ @Test @Verifies(value = "javaScript escaping works when activated", method = "doEndTag()") public void doEndTag_javaScriptEscapingWorks() throws Exception { final String unescapedText = "'Eensy Weensy' spider"; openmrsMessageTag.setJavaScriptEscape("true"); final DefaultMessageSourceResolvable message = new DefaultMessageSourceResolvable(new String[] { "test" }, unescapedText); openmrsMessageTag.setMessage(message); checkDoEndTagEvaluation("\\'Eensy Weensy\\' spider"); }