/** * Returns JSON violations string. Contains javascript array with elements that contain: * <ul> * <li>name - violation name</li> * <li>msg - message code i.e. constraint class name</li> * </ul> */ public static String createViolationsJsonString(final HttpServletRequest request, final List<Violation> violations) { if (violations == null) { return StringPool.EMPTY; } StringBuilder sb = new StringBuilder().append('['); for (int i = 0, violationsSize = violations.size(); i < violationsSize; i++) { Violation violation = violations.get(i); if (i != 0) { sb.append(','); } sb.append('{'); sb.append("\"name\":\"").append(violation.getName()).append('"').append(','); sb.append("\"msg\":\"").append(resolveValidationMessage(request, violation)).append('"'); sb.append('}'); } sb.append(']'); return sb.toString(); }
/** * Prepares validation messages. * Key is either validation constraint class name or violation name. */ public static String resolveValidationMessage(final HttpServletRequest request, final Violation violation) { ValidationConstraint vc = violation.getConstraint(); String key = vc != null ? vc.getClass().getName() : violation.getName(); String msg = LocalizationUtil.findMessage(request, key); if (msg != null) { return beanTemplateParser.parseWithBean(msg, violation); } return null; }
@Test void testConstructor2() throws Exception { //given Object validatedObject = new Object(); Object invalidValue = new Object(); ValidationConstraint constr = mock(ValidationConstraint.class); Check niceCheck = new Check("niceCheck", constr); //when Violation violation = new Violation("niceViolation", validatedObject, invalidValue, niceCheck); //then assertEquals("niceViolation", violation.getName()); assertEquals(validatedObject, violation.getValidatedObject()); assertEquals(invalidValue, violation.getInvalidValue()); assertEquals(niceCheck, violation.getCheck()); assertEquals(constr, violation.getConstraint()); }
@Test void testDefaultProfiles() { Vtor vtor = new Vtor(); vtor.setValidateAllProfilesByDefault(false); Zoo zoo = new Zoo(); vtor.validate(zoo); List<Violation> vlist = vtor.getViolations(); assertEquals(1, vlist.size()); vtor.resetViolations(); vtor.useProfile("default"); vtor.validate(zoo); vlist = vtor.getViolations(); assertEquals(1, vlist.size()); assertEquals("ccc", vlist.get(0).getName()); vtor.resetViolations(); vtor.resetProfiles(); vtor.useProfile("p2"); vtor.validate(zoo); vlist = vtor.getViolations(); assertEquals(1, vlist.size()); assertEquals("bbb", vlist.get(0).getName()); }
@Test void testManualAddViolation() { ValidationContext vctx = new ValidationContext(); vctx.add(new Check("string", new MinLengthConstraint(2))); Vtor vtor = new Vtor(); Foo foo = new Foo(); vtor.validate(vctx, foo); vtor.addViolation(new Violation("number", foo, null)); List<Violation> vlist = vtor.getViolations(); assertFalse(vlist.isEmpty()); assertEquals(2, vlist.size()); Violation v = vlist.get(0); assertEquals("string", v.getName()); assertEquals("1", v.getInvalidValue()); assertEquals("string", v.getCheck().getName()); assertEquals(MinLengthConstraint.class, v.getConstraint().getClass()); v = vlist.get(1); assertEquals("number", v.getName()); assertNull(v.getInvalidValue()); assertNull(v.getCheck()); assertNull(v.getConstraint()); } }
@Test void testManualConfig() { ValidationContext vctx = new ValidationContext(); vctx.add(new Check("string", new MinLengthConstraint(2))); Vtor vtor = new Vtor(); vtor.validate(vctx, new Foo()); assertTrue(vtor.hasViolations()); List<Violation> vlist = vtor.getViolations(); assertFalse(vlist.isEmpty()); assertEquals(1, vlist.size()); Violation v = vlist.get(0); assertEquals("string", v.getName()); assertEquals("1", v.getInvalidValue()); assertEquals("string", v.getCheck().getName()); assertNull(v.getCheck().getMessage()); assertEquals(MinLengthConstraint.class, v.getConstraint().getClass()); // new context that contains previous ValidationContext vctx2 = new ValidationContext(); vctx2.add(new Check("foo", new AssertValidConstraint(vctx))); vtor = new Vtor(); vtor.validate(vctx2, new Boo()); vlist = vtor.getViolations(); assertFalse(vlist.isEmpty()); assertEquals(1, vlist.size()); v = vlist.get(0); assertEquals("foo.string", v.getName()); assertEquals("1", v.getInvalidValue()); assertEquals("string", v.getCheck().getName()); assertEquals(MinLengthConstraint.class, v.getConstraint().getClass()); }
/** * Returns JSON violations string. Contains javascript array with elements that contain: * <ul> * <li>name - violation name</li> * <li>msg - message code i.e. constraint class name</li> * </ul> */ public static String createViolationsJsonString(final HttpServletRequest request, final List<Violation> violations) { if (violations == null) { return StringPool.EMPTY; } StringBuilder sb = new StringBuilder().append('['); for (int i = 0, violationsSize = violations.size(); i < violationsSize; i++) { Violation violation = violations.get(i); if (i != 0) { sb.append(','); } sb.append('{'); sb.append("\"name\":\"").append(violation.getName()).append('"').append(','); sb.append("\"msg\":\"").append(resolveValidationMessage(request, violation)).append('"'); sb.append('}'); } sb.append(']'); return sb.toString(); }
/** * Prepares validation messages. * Key is either validation constraint class name or violation name. */ public static String resolveValidationMessage(final HttpServletRequest request, final Violation violation) { ValidationConstraint vc = violation.getConstraint(); String key = vc != null ? vc.getClass().getName() : violation.getName(); String msg = LocalizationUtil.findMessage(request, key); if (msg != null) { return beanTemplateParser.parseWithBean(msg, violation); } return null; }