From 2be5fc6e0397b53173aa21298142d5fa66877fa5 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Mon, 6 Feb 2017 12:14:29 +0300 Subject: juick-xmpp: ConnectionRouter uses babbler now --- .../com/juick/components/s2s/ConnectionIn.java | 37 +++++++++++++++------- 1 file changed, 25 insertions(+), 12 deletions(-) (limited to 'juick-xmpp/src/main/java/com/juick/components/s2s/ConnectionIn.java') diff --git a/juick-xmpp/src/main/java/com/juick/components/s2s/ConnectionIn.java b/juick-xmpp/src/main/java/com/juick/components/s2s/ConnectionIn.java index 1cd914c9..7bb02fa5 100644 --- a/juick-xmpp/src/main/java/com/juick/components/s2s/ConnectionIn.java +++ b/juick-xmpp/src/main/java/com/juick/components/s2s/ConnectionIn.java @@ -2,17 +2,20 @@ package com.juick.components.s2s; import com.juick.components.XMPPServer; import com.juick.xmpp.Iq; -import com.juick.xmpp.Message; -import com.juick.xmpp.Presence; import com.juick.xmpp.extensions.StreamError; import com.juick.xmpp.utils.XmlUtils; import org.xmlpull.v1.XmlPullParser; import rocks.xmpp.addr.Jid; +import rocks.xmpp.core.session.XmppSessionConfiguration; +import rocks.xmpp.core.stanza.model.Stanza; import javax.net.ssl.SSLException; import javax.net.ssl.SSLSocket; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; import java.io.EOFException; import java.io.IOException; +import java.io.StringReader; import java.net.Socket; import java.net.SocketException; import java.util.ArrayList; @@ -27,6 +30,7 @@ public class ConnectionIn extends Connection implements Runnable { final public List from = new ArrayList<>(); public long tsRemoteData = 0; public long packetsRemote = 0; + XmppSessionConfiguration configuration; public ConnectionIn(XMPPServer xmpp, Socket socket) throws Exception { super(xmpp); @@ -34,6 +38,16 @@ public class ConnectionIn extends Connection implements Runnable { restartParser(); } + protected Stanza parse(String xml) { + try { + Unmarshaller unmarshaller = xmpp.getSession().createUnmarshaller(); + return (Stanza)unmarshaller.unmarshal(new StringReader(xml)); + } catch (JAXBException e) { + logger.error("JAXB exception", e); + } + return null; + } + @Override public void run() { try { @@ -103,23 +117,22 @@ public class ConnectionIn extends Connection implements Runnable { logger.warn("stream from {} {} dialback verify invalid", vfrom, streamID); } } else if (tag.equals("presence") && checkFromTo(parser)) { - Presence p = Presence.parse(parser, null); - logger.info("stream {}: {}", streamID, p); - xmpp.onStanzaReceived("presence", p); + String xml = XmlUtils.parseToString(parser, false); + logger.info("stream {} presence: {}", streamID, xml); + xmpp.onStanzaReceived(parse(xml)); } else if (tag.equals("message") && checkFromTo(parser)) { updateTsRemoteData(); - Message msg = Message.parse(parser, xmpp.childParsers); - if (msg != null && (msg.type == null || !msg.type.equals(Message.Type.error))) { - logger.info("stream {}: {}", streamID, msg); - xmpp.onStanzaReceived("message", msg); - } + String xml = XmlUtils.parseToString(parser, false); + logger.info("stream {} message: {}", streamID, xml); + xmpp.onStanzaReceived(parse(xml)); + } else if (tag.equals("iq") && checkFromTo(parser)) { updateTsRemoteData(); String type = parser.getAttributeValue(null, "type"); - String xml = XmlUtils.parseToString(parser, true); + String xml = XmlUtils.parseToString(parser, false); if (type == null || !type.equals(Iq.Type.error)) { logger.info("stream {}: {}", streamID, xml); - xmpp.getRouter().sendStanza(xml); + xmpp.getRouter().sendStanza(parse(xml)); } } else if (sc != null && !isSecured() && tag.equals("starttls")) { logger.info("stream {} securing", streamID); -- cgit v1.2.3