Search in sources :

Example 1 with ReferenceElement

use of org.jivesoftware.smackx.reference.element.ReferenceElement in project Smack by igniterealtime.

the class ReferenceProvider method parse.

@Override
public ReferenceElement parse(XmlPullParser parser, int initialDepth, XmlEnvironment xmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException {
    Integer begin = ParserUtils.getIntegerAttribute(parser, ReferenceElement.ATTR_BEGIN);
    Integer end = ParserUtils.getIntegerAttribute(parser, ReferenceElement.ATTR_END);
    String typeString = parser.getAttributeValue(null, ReferenceElement.ATTR_TYPE);
    ReferenceElement.Type type = ReferenceElement.Type.valueOf(typeString);
    String anchor = parser.getAttributeValue(null, ReferenceElement.ATTR_ANCHOR);
    String uriString = parser.getAttributeValue(null, ReferenceElement.ATTR_URI);
    URI uri;
    try {
        uri = uriString != null ? new URI(uriString) : null;
    } catch (URISyntaxException e) {
        // TODO: Should be SmackParseException and probably be factored into ParserUtils.
        throw new IOException(e);
    }
    XmlElement child = null;
    outerloop: while (true) {
        XmlPullParser.Event eventType = parser.next();
        if (eventType == XmlPullParser.Event.START_ELEMENT) {
            String elementName = parser.getName();
            String namespace = parser.getNamespace();
            ExtensionElementProvider<?> provider = ProviderManager.getExtensionProvider(elementName, namespace);
            if (provider != null) {
                child = provider.parse(parser);
            }
        } else if (eventType == XmlPullParser.Event.END_ELEMENT) {
            break outerloop;
        }
    }
    return new ReferenceElement(begin, end, type, anchor, uri, child);
}
Also used : ExtensionElementProvider(org.jivesoftware.smack.provider.ExtensionElementProvider) ReferenceElement(org.jivesoftware.smackx.reference.element.ReferenceElement) XmlElement(org.jivesoftware.smack.packet.XmlElement) URISyntaxException(java.net.URISyntaxException) IOException(java.io.IOException) URI(java.net.URI)

Example 2 with ReferenceElement

use of org.jivesoftware.smackx.reference.element.ReferenceElement in project Smack by igniterealtime.

the class ReferenceTest method providerMentionTest.

@Test
public void providerMentionTest() throws Exception {
    String xml = "<reference xmlns='urn:xmpp:reference:0' " + "begin='72' " + "end='78' " + "type='mention' " + "uri='xmpp:juliet@capulet.lit' />";
    URI uri = new URI("xmpp:juliet@capulet.lit");
    ReferenceElement element = new ReferenceElement(72, 78, ReferenceElement.Type.mention, null, uri);
    assertXmlSimilar(xml, element.toXML().toString());
    assertEquals(72, (int) element.getBegin());
    assertEquals(78, (int) element.getEnd());
    assertEquals(ReferenceElement.Type.mention, element.getType());
    assertNull(element.getAnchor());
    assertEquals(uri, element.getUri());
    ReferenceElement parsed = ReferenceProvider.TEST_PROVIDER.parse(TestUtils.getParser(xml));
    assertXmlSimilar(xml, parsed.toXML().toString());
}
Also used : ReferenceElement(org.jivesoftware.smackx.reference.element.ReferenceElement) URI(java.net.URI) Test(org.junit.jupiter.api.Test)

Example 3 with ReferenceElement

use of org.jivesoftware.smackx.reference.element.ReferenceElement in project Smack by igniterealtime.

the class ReferenceTest method providerDataTest.

/**
 * TODO: The uri might not be following the XMPP schema.
 * That shouldn't matter though.
 * @throws Exception if an exception occurs.
 */
@Test
public void providerDataTest() throws Exception {
    String xml = "<reference xmlns='urn:xmpp:reference:0' " + "type='data' " + "uri='xmpp:fdp.shakespeare.lit?;node=fdp/submitted/stan.isode.net/accidentreport;item=ndina872be' />";
    URI uri = new URI("xmpp:fdp.shakespeare.lit?;node=fdp/submitted/stan.isode.net/accidentreport;item=ndina872be");
    ReferenceElement element = new ReferenceElement(null, null, ReferenceElement.Type.data, null, uri);
    assertXmlSimilar(xml, element.toXML().toString());
    assertNull(element.getBegin());
    assertNull(element.getEnd());
    assertNull(element.getAnchor());
    assertEquals(ReferenceElement.Type.data, element.getType());
    assertEquals(uri, element.getUri());
    ReferenceElement parsed = ReferenceProvider.TEST_PROVIDER.parse(TestUtils.getParser(xml));
    assertXmlSimilar(xml, parsed.toXML().toString());
}
Also used : ReferenceElement(org.jivesoftware.smackx.reference.element.ReferenceElement) URI(java.net.URI) Test(org.junit.jupiter.api.Test)

Aggregations

URI (java.net.URI)3 ReferenceElement (org.jivesoftware.smackx.reference.element.ReferenceElement)3 Test (org.junit.jupiter.api.Test)2 IOException (java.io.IOException)1 URISyntaxException (java.net.URISyntaxException)1 XmlElement (org.jivesoftware.smack.packet.XmlElement)1 ExtensionElementProvider (org.jivesoftware.smack.provider.ExtensionElementProvider)1