Author: tchemit Date: 2009-01-23 14:12:00 +0000 (Fri, 23 Jan 2009) New Revision: 1179 Modified: jaxx/trunk/jaxx-runtime-validator/src/main/java/jaxx/runtime/validator/field/CollectionUniqueKeyValidator.java jaxx/trunk/jaxx-runtime-validator/src/test/java/jaxx/runtime/validator/field/CollectionUniqueKeyValidatorTest.java jaxx/trunk/jaxx-runtime-validator/src/test/java/jaxx/runtime/validator/field/ValidatorBean.java jaxx/trunk/jaxx-runtime-validator/src/test/resources/jaxx/runtime/validator/field/ValidatorBean-validation.xml Log: ajout d'un validateur pour tester l'unicit?\195?\169 d'une clef dans une collection Modified: jaxx/trunk/jaxx-runtime-validator/src/main/java/jaxx/runtime/validator/field/CollectionUniqueKeyValidator.java =================================================================== --- jaxx/trunk/jaxx-runtime-validator/src/main/java/jaxx/runtime/validator/field/CollectionUniqueKeyValidator.java 2009-01-23 12:27:43 UTC (rev 1178) +++ jaxx/trunk/jaxx-runtime-validator/src/main/java/jaxx/runtime/validator/field/CollectionUniqueKeyValidator.java 2009-01-23 14:12:00 UTC (rev 1179) @@ -41,7 +41,11 @@ } public void setKeys(String[] keys) { - this.keys = keys; + if (keys != null && keys.length == 1 && keys[0].indexOf(",") != -1) { + this.keys = keys[0].split(","); + } else { + this.keys = keys; + } } @Override Modified: jaxx/trunk/jaxx-runtime-validator/src/test/java/jaxx/runtime/validator/field/CollectionUniqueKeyValidatorTest.java =================================================================== --- jaxx/trunk/jaxx-runtime-validator/src/test/java/jaxx/runtime/validator/field/CollectionUniqueKeyValidatorTest.java 2009-01-23 12:27:43 UTC (rev 1178) +++ jaxx/trunk/jaxx-runtime-validator/src/test/java/jaxx/runtime/validator/field/CollectionUniqueKeyValidatorTest.java 2009-01-23 14:12:00 UTC (rev 1179) @@ -9,6 +9,7 @@ static protected ValidatorBeanEntry beanEntry = new ValidatorBeanEntry(0, "stringValue"); static protected ValidatorBeanEntry beanEntry2 = new ValidatorBeanEntry(0, "fake"); + static protected ValidatorBeanEntry beanEntry3 = new ValidatorBeanEntry(0, "stringValue", "stringValue2"); @org.junit.Test @Override @@ -19,6 +20,7 @@ assertFieldInError("entries", "collectionUniqueKey.one.failed", false); assertFieldInError("entries", "collectionUniqueKey.two.failed", false); assertFieldInError("entries", "collectionUniqueKey.three.failed", false); + assertFieldInError("entries", "collectionUniqueKey.four.failed", false); // add a entry bean.setEntries(Arrays.asList(beanEntry)); @@ -26,6 +28,7 @@ assertFieldInError("entries", "collectionUniqueKey.one.failed", false); assertFieldInError("entries", "collectionUniqueKey.two.failed", false); assertFieldInError("entries", "collectionUniqueKey.three.failed", false); + assertFieldInError("entries", "collectionUniqueKey.four.failed", false); // two entries with same key bean.setEntries(Arrays.asList(beanEntry, beanEntry)); @@ -33,6 +36,7 @@ assertFieldInError("entries", "collectionUniqueKey.one.failed", true); assertFieldInError("entries", "collectionUniqueKey.two.failed", true); assertFieldInError("entries", "collectionUniqueKey.three.failed", true); + assertFieldInError("entries", "collectionUniqueKey.four.failed", true); // add a entry bean.setEntries(Arrays.asList(beanEntry2)); @@ -40,6 +44,7 @@ assertFieldInError("entries", "collectionUniqueKey.one.failed", false); assertFieldInError("entries", "collectionUniqueKey.two.failed", false); assertFieldInError("entries", "collectionUniqueKey.three.failed", false); + assertFieldInError("entries", "collectionUniqueKey.four.failed", false); // add two entries (will violated unique key on intValue) bean.setEntries(Arrays.asList(beanEntry2, beanEntry)); @@ -47,6 +52,24 @@ assertFieldInError("entries", "collectionUniqueKey.one.failed", true); assertFieldInError("entries", "collectionUniqueKey.two.failed", false); assertFieldInError("entries", "collectionUniqueKey.three.failed", false); + assertFieldInError("entries", "collectionUniqueKey.four.failed", false); + + // two entries with same key (except validator four) + bean.setEntries(Arrays.asList(beanEntry, beanEntry3)); + assertFieldInError("entries", "collectionUniqueKey.one.failed", true); + assertFieldInError("entries", "collectionUniqueKey.two.failed", true); + assertFieldInError("entries", "collectionUniqueKey.three.failed", true); + assertFieldInError("entries", "collectionUniqueKey.four.failed", false); + + beanEntry.setStringValue2("stringValue2"); + // two entries with same key + bean.setEntries(Arrays.asList(beanEntry, beanEntry3)); + assertFieldInError("entries", "collectionUniqueKey.one.failed", true); + assertFieldInError("entries", "collectionUniqueKey.two.failed", true); + assertFieldInError("entries", "collectionUniqueKey.three.failed", true); + assertFieldInError("entries", "collectionUniqueKey.four.failed", true); + + } } \ No newline at end of file Modified: jaxx/trunk/jaxx-runtime-validator/src/test/java/jaxx/runtime/validator/field/ValidatorBean.java =================================================================== --- jaxx/trunk/jaxx-runtime-validator/src/test/java/jaxx/runtime/validator/field/ValidatorBean.java 2009-01-23 12:27:43 UTC (rev 1178) +++ jaxx/trunk/jaxx-runtime-validator/src/test/java/jaxx/runtime/validator/field/ValidatorBean.java 2009-01-23 14:12:00 UTC (rev 1179) @@ -11,12 +11,19 @@ protected int intValue; protected String stringValue; + protected String stringValue2; public ValidatorBeanEntry(int intValue, String stringValue) { this.intValue = intValue; this.stringValue = stringValue; } + public ValidatorBeanEntry(int intValue, String stringValue, String stringValue2) { + this.intValue = intValue; + this.stringValue = stringValue; + this.stringValue2 = stringValue2; + } + public int getIntValue() { return intValue; } @@ -32,6 +39,14 @@ public void setStringValue(String stringValue) { this.stringValue = stringValue; } + + public String getStringValue2() { + return stringValue2; + } + + public void setStringValue2(String stringValue2) { + this.stringValue2 = stringValue2; + } } protected File existingFile; @@ -110,8 +125,10 @@ } public void setEntries(Collection<ValidatorBeanEntry> entries) { - Collection<ValidatorBeanEntry> old = this.entries; this.entries = entries; - p.firePropertyChange("entries", old, entries); + // set null oldValue to always fire event + // otherwise it could been not sent... + p.firePropertyChange("entries", null, entries); } + } \ No newline at end of file Modified: jaxx/trunk/jaxx-runtime-validator/src/test/resources/jaxx/runtime/validator/field/ValidatorBean-validation.xml =================================================================== --- jaxx/trunk/jaxx-runtime-validator/src/test/resources/jaxx/runtime/validator/field/ValidatorBean-validation.xml 2009-01-23 12:27:43 UTC (rev 1178) +++ jaxx/trunk/jaxx-runtime-validator/src/test/resources/jaxx/runtime/validator/field/ValidatorBean-validation.xml 2009-01-23 14:12:00 UTC (rev 1179) @@ -75,6 +75,10 @@ <param name="keys">intValue,stringValue</param> <message>collectionUniqueKey.three.failed</message> </field-validator> + <field-validator type="collectionUniqueKey"> + <param name="keys">intValue,stringValue,stringValue2</param> + <message>collectionUniqueKey.four.failed</message> + </field-validator> </field> </validators> \ No newline at end of file