Search in sources :

Example 1 with ListRange

use of org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.ListRange in project Smack by igniterealtime.

the class DataValidationTest method testRange.

@Test
public void testRange() throws XmlPullParserException, IOException {
    ValidateElement dv = new RangeValidateElement("xs:string", "min-val", "max-val");
    ListRange listRange = new ListRange(111L, 999L);
    dv.setListRange(listRange);
    assertNotNull(dv.toXML());
    String output = dv.toXML().toString();
    assertEquals(TEST_OUTPUT_RANGE, output);
    XmlPullParser parser = getParser(output);
    dv = DataValidationProvider.parse(parser);
    assertNotNull(dv);
    assertEquals("xs:string", dv.getDatatype());
    assertTrue(dv instanceof RangeValidateElement);
    RangeValidateElement rdv = (RangeValidateElement) dv;
    assertEquals("min-val", rdv.getMin());
    assertEquals("max-val", rdv.getMax());
    assertNotNull(rdv.getListRange());
    assertEquals(Long.valueOf(111), rdv.getListRange().getMin());
    assertEquals(999, rdv.getListRange().getMax().intValue());
    assertNotNull(dv.toXML());
    output = dv.toXML().toString();
    assertEquals(TEST_OUTPUT_RANGE, output);
}
Also used : RangeValidateElement(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.RangeValidateElement) ListRange(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.ListRange) RangeValidateElement(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.RangeValidateElement) BasicValidateElement(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.BasicValidateElement) ValidateElement(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement) XmlPullParser(org.xmlpull.v1.XmlPullParser) Test(org.junit.Test)

Example 2 with ListRange

use of org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.ListRange in project Smack by igniterealtime.

the class DataValidationHelperTest method testCheckConsistencyFormFieldBasicValidateElement.

@Test
public void testCheckConsistencyFormFieldBasicValidateElement() {
    FormField field = new FormField("var");
    field.setType(FormField.Type.jid_single);
    BasicValidateElement element = new BasicValidateElement(null);
    try {
        element.checkConsistency(field);
        fail("No correct check on consistency");
    } catch (ValidationConsistencyException e) {
        assertEquals("Field type 'jid-single' is not consistent with validation method 'basic'.", e.getMessage());
    }
    try {
        new ListRange(-1L, 1L);
        fail("No correct check on consistency");
    } catch (IllegalArgumentException e) {
        assertEquals("unsigned 32-bit integers can't be negative", e.getMessage());
    }
    element.setListRange(new ListRange(10L, 100L));
    try {
        element.checkConsistency(field);
        fail("No correct check on consistency");
    } catch (ValidationConsistencyException e) {
        assertEquals("Field type is not of type 'list-multi' while a 'list-range' is defined.", e.getMessage());
    }
    field.setType(FormField.Type.list_multi);
    try {
        element.checkConsistency(field);
    } catch (ValidationConsistencyException e) {
        fail("No correct check on consistency");
    }
}
Also used : ListRange(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.ListRange) FormField(org.jivesoftware.smackx.xdata.FormField) BasicValidateElement(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.BasicValidateElement) Test(org.junit.Test)

Example 3 with ListRange

use of org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.ListRange in project Smack by igniterealtime.

the class DataValidationProvider method parse.

public static ValidateElement parse(XmlPullParser parser) throws XmlPullParserException, IOException {
    final int initialDepth = parser.getDepth();
    final String dataType = parser.getAttributeValue("", "datatype");
    ValidateElement dataValidation = null;
    ListRange listRange = null;
    outerloop: while (true) {
        int eventType = parser.next();
        switch(eventType) {
            case XmlPullParser.START_TAG:
                switch(parser.getName()) {
                    case OpenValidateElement.METHOD:
                        dataValidation = new OpenValidateElement(dataType);
                        break;
                    case BasicValidateElement.METHOD:
                        dataValidation = new BasicValidateElement(dataType);
                        break;
                    case RangeValidateElement.METHOD:
                        dataValidation = new RangeValidateElement(dataType, parser.getAttributeValue("", "min"), parser.getAttributeValue("", "max"));
                        break;
                    case RegexValidateElement.METHOD:
                        dataValidation = new RegexValidateElement(dataType, parser.nextText());
                        break;
                    case ListRange.ELEMENT:
                        Long min = ParserUtils.getLongAttribute(parser, "min");
                        Long max = ParserUtils.getLongAttribute(parser, "max");
                        if (min != null || max != null) {
                            listRange = new ListRange(min, max);
                        } else {
                            LOGGER.fine("Ignoring list-range element without min or max attribute");
                        }
                        break;
                    default:
                        break;
                }
                break;
            case XmlPullParser.END_TAG:
                if (parser.getDepth() == initialDepth) {
                    if (dataValidation == null) {
                        // XEP-122 ยง 3.2 states that "If no validation method is specified,
                        // form processors MUST assume <basic/> validation."
                        dataValidation = new BasicValidateElement(dataType);
                    }
                    dataValidation.setListRange(listRange);
                    break outerloop;
                }
                break;
        }
    }
    return dataValidation;
}
Also used : ListRange(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.ListRange) RangeValidateElement(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.RangeValidateElement) OpenValidateElement(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.OpenValidateElement) RegexValidateElement(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.RegexValidateElement) RangeValidateElement(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.RangeValidateElement) BasicValidateElement(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.BasicValidateElement) OpenValidateElement(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.OpenValidateElement) ValidateElement(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement) RegexValidateElement(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.RegexValidateElement) BasicValidateElement(org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.BasicValidateElement)

Aggregations

BasicValidateElement (org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.BasicValidateElement)3 ListRange (org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.ListRange)3 ValidateElement (org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement)2 RangeValidateElement (org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.RangeValidateElement)2 Test (org.junit.Test)2 FormField (org.jivesoftware.smackx.xdata.FormField)1 OpenValidateElement (org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.OpenValidateElement)1 RegexValidateElement (org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.RegexValidateElement)1 XmlPullParser (org.xmlpull.v1.XmlPullParser)1