summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/isode/stroke/parser/XMPPParser.java')
-rw-r--r--src/com/isode/stroke/parser/XMPPParser.java109
1 files changed, 47 insertions, 62 deletions
diff --git a/src/com/isode/stroke/parser/XMPPParser.java b/src/com/isode/stroke/parser/XMPPParser.java
index 0e9b202..c2c25e9 100644
--- a/src/com/isode/stroke/parser/XMPPParser.java
+++ b/src/com/isode/stroke/parser/XMPPParser.java
@@ -11,23 +11,23 @@ package com.isode.stroke.parser;
import com.isode.stroke.elements.ProtocolHeader;
import java.util.logging.Logger;
-
public class XMPPParser implements XMLParserClient {
-
- private final XMLParser xmlParser_ ;
+
+ private final XMLParser xmlParser_;
private final XMPPParserClient client_;
private final PayloadParserFactoryCollection payloadParserFactories_;
private int currentDepth_ = 0;
private ElementParser currentElementParser_ = null;
private boolean parseErrorOccurred_ = false;
private Logger logger_ = Logger.getLogger(this.getClass().getName());
-
- public XMPPParser(XMPPParserClient parserClient, PayloadParserFactoryCollection payloadParserFactories) {
+
+ public XMPPParser(XMPPParserClient parserClient,
+ PayloadParserFactoryCollection payloadParserFactories) {
client_ = parserClient;
payloadParserFactories_ = payloadParserFactories;
xmlParser_ = PlatformXMLParserFactory.createXMLParser(this);
}
-
+
public boolean parse(String data) {
parseErrorOccurred_ = false;
boolean xmlParseResult = false;
@@ -38,20 +38,20 @@ public class XMPPParser implements XMLParserClient {
logger_.warning("Data " + data + " caused:\n" + e.getMessage());
}
if (parseErrorOccurred_ || !xmlParseResult) {
- logger_.warning(String.format("When parsing, %b and %b", parseErrorOccurred_, xmlParseResult));
- if(data !=null) {
- logger_.warning("xml that caused failure: " + data);
+ logger_.warning(String.format("When parsing, %b and %b",
+ parseErrorOccurred_, xmlParseResult));
+ if (data != null) {
+ logger_.warning("xml that caused failure: " + data);
}
}
return xmlParseResult && !parseErrorOccurred_;
}
-
- public void handleStartElement(
- String element,
- String ns,
+
+ public void handleStartElement(String element, String ns,
AttributeMap attributes) {
if (!inStream()) {
- if (element.equals("stream") && ns.equals("http://etherx.jabber.org/streams")) {
+ if (element.equals("stream")
+ && ns.equals("http://etherx.jabber.org/streams")) {
ProtocolHeader header = new ProtocolHeader();
header.setFrom(attributes.getAttribute("from"));
header.setTo(attributes.getAttribute("to"));
@@ -70,7 +70,7 @@ public class XMPPParser implements XMLParserClient {
}
++currentDepth_;
}
-
+
public void handleEndElement(String element, String ns) {
assert (inStream());
if (inElement()) {
@@ -87,89 +87,74 @@ public class XMPPParser implements XMLParserClient {
client_.handleStreamEnd();
}
}
-
+
public void handleCharacterData(String data) {
if (currentElementParser_ != null) {
currentElementParser_.handleCharacterData(data);
}
}
-
+
private boolean inStream() {
return currentDepth_ > 0;
}
-
+
private boolean inElement() {
return currentDepth_ > 1;
}
-
+
private ElementParser createElementParser(String element, String xmlns) {
if (element.equals("presence")) {
return new PresenceParser(payloadParserFactories_);
- }
- else if (element.equals("iq")) {
+ } else if (element.equals("iq")) {
return new IQParser(payloadParserFactories_);
- }
- else if (element.equals("message")) {
+ } else if (element.equals("message")) {
return new MessageParser(payloadParserFactories_);
- }
- else if (element.equals("features") && xmlns.equals("http://etherx.jabber.org/streams")) {
+ } else if (element.equals("features")
+ && xmlns.equals("http://etherx.jabber.org/streams")) {
return new StreamFeaturesParser();
- }
- else if (element.equals("auth")) {
+ } else if (element.equals("auth")) {
return new AuthRequestParser();
- }
- else if (element.equals("success")) {
+ } else if (element.equals("success")) {
return new AuthSuccessParser();
- }
- else if (element.equals("failure") && xmlns.equals("urn:ietf:params:xml:ns:xmpp-sasl")) {
+ } else if (element.equals("failure")
+ && xmlns.equals("urn:ietf:params:xml:ns:xmpp-sasl")) {
return new AuthFailureParser();
- }
- else if (element.equals("challenge") && xmlns.equals("urn:ietf:params:xml:ns:xmpp-sasl")) {
+ } else if (element.equals("challenge")
+ && xmlns.equals("urn:ietf:params:xml:ns:xmpp-sasl")) {
return new AuthChallengeParser();
- }
- else if (element.equals("response") && xmlns.equals("urn:ietf:params:xml:ns:xmpp-sasl")) {
+ } else if (element.equals("response")
+ && xmlns.equals("urn:ietf:params:xml:ns:xmpp-sasl")) {
return new AuthResponseParser();
- }
- else if (element.equals("starttls")) {
+ } else if (element.equals("starttls")) {
return new StartTLSParser();
- }
- else if (element.equals("failure") && xmlns.equals("urn:ietf:params:xml:ns:xmpp-tls")) {
+ } else if (element.equals("failure")
+ && xmlns.equals("urn:ietf:params:xml:ns:xmpp-tls")) {
return new StartTLSFailureParser();
- }
- else if (element.equals("compress")) {
+ } else if (element.equals("compress")) {
return new CompressParser();
- }
- else if (element.equals("compressed")) {
+ } else if (element.equals("compressed")) {
return new CompressedParser();
- }
- else if (element.equals("failure") && xmlns.equals("http://jabber.org/protocol/compress")) {
+ } else if (element.equals("failure")
+ && xmlns.equals("http://jabber.org/protocol/compress")) {
return new CompressFailureParser();
- }
- else if (element.equals("proceed")) {
+ } else if (element.equals("proceed")) {
return new TLSProceedParser();
- }
- else if (element.equals("enable") && xmlns.equals("urn:xmpp:sm:2")) {
+ } else if (element.equals("enable") && xmlns.equals("urn:xmpp:sm:2")) {
return new EnableStreamManagementParser();
- }
- else if (element.equals("enabled") && xmlns.equals("urn:xmpp:sm:2")) {
+ } else if (element.equals("enabled") && xmlns.equals("urn:xmpp:sm:2")) {
return new StreamManagementEnabledParser();
- }
- else if (element.equals("failed") && xmlns.equals("urn:xmpp:sm:2")) {
+ } else if (element.equals("failed") && xmlns.equals("urn:xmpp:sm:2")) {
return new StreamManagementFailedParser();
- }
- else if (element.equals("resume") && xmlns.equals("urn:xmpp:sm:2")) {
+ } else if (element.equals("resume") && xmlns.equals("urn:xmpp:sm:2")) {
return new StreamResumeParser();
- }
- else if (element.equals("resumed") && xmlns.equals("urn:xmpp:sm:2")) {
+ } else if (element.equals("resumed") && xmlns.equals("urn:xmpp:sm:2")) {
return new StreamResumedParser();
- }
- else if (element.equals("a") && xmlns.equals("urn:xmpp:sm:2")) {
+ } else if (element.equals("a") && xmlns.equals("urn:xmpp:sm:2")) {
return new StanzaAckParser();
- }
- else if (element.equals("r") && xmlns.equals("urn:xmpp:sm:2")) {
+ } else if (element.equals("r") && xmlns.equals("urn:xmpp:sm:2")) {
return new StanzaAckRequestParser();
}
return new UnknownElementParser();
-
+
}
}