mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-02 06:45:59 +01:00
SMACK-425 Few changes based on review http://fisheye.igniterealtime.org/cru/SMACK-4
git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/branches/smack_3_3_1@13759 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
parent
6a4827c846
commit
25012a6744
8 changed files with 27 additions and 203 deletions
|
@ -23,9 +23,7 @@ package org.jivesoftware.smack;
|
||||||
import org.jivesoftware.smack.Connection.ListenerWrapper;
|
import org.jivesoftware.smack.Connection.ListenerWrapper;
|
||||||
import org.jivesoftware.smack.packet.*;
|
import org.jivesoftware.smack.packet.*;
|
||||||
import org.jivesoftware.smack.parsing.ParsingExceptionCallback;
|
import org.jivesoftware.smack.parsing.ParsingExceptionCallback;
|
||||||
import org.jivesoftware.smack.parsing.UnparsedIQ;
|
import org.jivesoftware.smack.parsing.UnparsablePacket;
|
||||||
import org.jivesoftware.smack.parsing.UnparsedMessage;
|
|
||||||
import org.jivesoftware.smack.parsing.UnparsedPresence;
|
|
||||||
import org.jivesoftware.smack.sasl.SASLMechanism.Challenge;
|
import org.jivesoftware.smack.sasl.SASLMechanism.Challenge;
|
||||||
import org.jivesoftware.smack.sasl.SASLMechanism.Failure;
|
import org.jivesoftware.smack.sasl.SASLMechanism.Failure;
|
||||||
import org.jivesoftware.smack.sasl.SASLMechanism.Success;
|
import org.jivesoftware.smack.sasl.SASLMechanism.Success;
|
||||||
|
@ -188,9 +186,9 @@ class PacketReader {
|
||||||
packet = PacketParserUtils.parseMessage(parser);
|
packet = PacketParserUtils.parseMessage(parser);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String content = PacketParserUtils.parseContentDepth(parser, parserDepth);
|
String content = PacketParserUtils.parseContentDepth(parser, parserDepth);
|
||||||
UnparsedMessage message = new UnparsedMessage(content, e);
|
UnparsablePacket message = new UnparsablePacket(content, e);
|
||||||
if (callback != null) {
|
if (callback != null) {
|
||||||
callback.messageParsingException(e, message);
|
callback.handleUnparsablePacket(message);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -202,9 +200,9 @@ class PacketReader {
|
||||||
iq = PacketParserUtils.parseIQ(parser, connection);
|
iq = PacketParserUtils.parseIQ(parser, connection);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String content = PacketParserUtils.parseContentDepth(parser, parserDepth);
|
String content = PacketParserUtils.parseContentDepth(parser, parserDepth);
|
||||||
UnparsedIQ uniq = new UnparsedIQ(content, e);
|
UnparsablePacket message = new UnparsablePacket(content, e);
|
||||||
if (callback != null) {
|
if (callback != null) {
|
||||||
callback.iqParsingException(e, uniq);
|
callback.handleUnparsablePacket(message);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -216,9 +214,9 @@ class PacketReader {
|
||||||
presence = PacketParserUtils.parsePresence(parser);
|
presence = PacketParserUtils.parsePresence(parser);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String content = PacketParserUtils.parseContentDepth(parser, parserDepth);
|
String content = PacketParserUtils.parseContentDepth(parser, parserDepth);
|
||||||
UnparsedPresence unpresence = new UnparsedPresence(content, e);
|
UnparsablePacket message = new UnparsablePacket(content, e);
|
||||||
if (callback != null) {
|
if (callback != null) {
|
||||||
callback.presenceParsingException(e, unpresence);
|
callback.handleUnparsablePacket(message);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ import java.util.List;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import org.jivesoftware.smack.parsing.ParsingExceptionCallback;
|
import org.jivesoftware.smack.parsing.ParsingExceptionCallback;
|
||||||
import org.jivesoftware.smack.parsing.ThrowException;
|
import org.jivesoftware.smack.parsing.ExceptionThrowingCallback;
|
||||||
import org.xmlpull.mxp1.MXParser;
|
import org.xmlpull.mxp1.MXParser;
|
||||||
import org.xmlpull.v1.XmlPullParser;
|
import org.xmlpull.v1.XmlPullParser;
|
||||||
|
|
||||||
|
@ -61,10 +61,10 @@ public final class SmackConfiguration {
|
||||||
private static int packetCollectorSize = 5000;
|
private static int packetCollectorSize = 5000;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The default parsing exception callback is {@link ThrowException} which will
|
* The default parsing exception callback is {@link ExceptionThrowingCallback} which will
|
||||||
* throw an exception and therefore disconnect the active connection.
|
* throw an exception and therefore disconnect the active connection.
|
||||||
*/
|
*/
|
||||||
private static ParsingExceptionCallback defaultCallback = new ThrowException();
|
private static ParsingExceptionCallback defaultCallback = new ExceptionThrowingCallback();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This automatically enables EntityCaps for new connections if it is set to true
|
* This automatically enables EntityCaps for new connections if it is set to true
|
||||||
|
|
|
@ -20,43 +20,18 @@
|
||||||
|
|
||||||
package org.jivesoftware.smack.parsing;
|
package org.jivesoftware.smack.parsing;
|
||||||
|
|
||||||
import org.jivesoftware.smack.packet.IQ;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Representation of an unparsed IQ stanza.
|
* Simple parsing exception callback that only logs the encountered parsing exception to stderr.
|
||||||
*
|
*
|
||||||
* @author Florian Schmaus
|
* @author Florian Schmaus
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class UnparsedIQ extends IQ {
|
public class ExceptionLoggingCallback extends ParsingExceptionCallback {
|
||||||
private final String content;
|
|
||||||
private final Exception e;
|
|
||||||
|
|
||||||
public UnparsedIQ(final String content, final Exception e) {
|
|
||||||
this.content = content;
|
|
||||||
this.e = e;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @return the exception that caused the parser to fail
|
|
||||||
*/
|
|
||||||
public Exception getException() {
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve the raw stanza data
|
|
||||||
*
|
|
||||||
* @return the raw stanza data
|
|
||||||
*/
|
|
||||||
public String getContent() {
|
|
||||||
return content;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getChildElementXML() {
|
public void handleUnparsablePacket(UnparsablePacket unparsed) throws Exception {
|
||||||
return null;
|
System.err.print("Smack message parsing exception: " + unparsed.getParsingException().getMessage());
|
||||||
|
unparsed.getParsingException().printStackTrace();
|
||||||
|
System.err.println("Unparsed content: " + unparsed.getContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -29,20 +29,10 @@ import org.jivesoftware.smack.ConnectionListener;
|
||||||
* @author Florian Schmaus
|
* @author Florian Schmaus
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class ThrowException extends ParsingExceptionCallback {
|
public class ExceptionThrowingCallback extends ParsingExceptionCallback {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void messageParsingException(Exception e, UnparsedMessage message) throws Exception {
|
public void handleUnparsablePacket(UnparsablePacket packetData) throws Exception {
|
||||||
throw e;
|
throw packetData.getParsingException();
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void iqParsingException(Exception e, UnparsedIQ iq) throws Exception {
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void presenceParsingException(Exception e, UnparsedPresence presence) throws Exception {
|
|
||||||
throw e;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,51 +0,0 @@
|
||||||
/**
|
|
||||||
* $RCSfile$
|
|
||||||
* $Revision$
|
|
||||||
* $Date$
|
|
||||||
*
|
|
||||||
* Copyright 2013 Florian Schmaus.
|
|
||||||
*
|
|
||||||
* All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jivesoftware.smack.parsing;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Simple parsing exception callback that only logs the encountered parsing exception to stderr.
|
|
||||||
*
|
|
||||||
* @author Florian Schmaus
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class LogException extends ParsingExceptionCallback {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void messageParsingException(Exception e, UnparsedMessage message) throws Exception {
|
|
||||||
System.err.print("Smack message parsing exception: " + e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
System.err.println("Unparsed content: " + message.getContent());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void iqParsingException(Exception e, UnparsedIQ iq) throws Exception {
|
|
||||||
System.err.print("Smack iq parsing exception: " + e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
System.err.println("Unparsed content: " + iq.getContent());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void presenceParsingException(Exception e, UnparsedPresence presence) throws Exception {
|
|
||||||
System.err.print("Smack presence parsing exception: " + e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
System.err.println("Unparsed content: " + presence.getContent());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -31,7 +31,7 @@ package org.jivesoftware.smack.parsing;
|
||||||
* stanza that caused the parsing error by using the getContent() (for example {@link UnparsedIQ#getContent()})
|
* stanza that caused the parsing error by using the getContent() (for example {@link UnparsedIQ#getContent()})
|
||||||
* method.
|
* method.
|
||||||
*
|
*
|
||||||
* Smack provides 2 predefined ParsingExceptionCallback's: {@link LogException} and {@link ThrowException}.
|
* Smack provides 2 predefined ParsingExceptionCallback's: {@link ExceptionLoggingCallback} and {@link ExceptionThrowingCallback}.
|
||||||
*
|
*
|
||||||
* @author Florian Schmaus
|
* @author Florian Schmaus
|
||||||
*
|
*
|
||||||
|
@ -41,36 +41,10 @@ public abstract class ParsingExceptionCallback {
|
||||||
/**
|
/**
|
||||||
* Called when parsing an message stanza caused an exception.
|
* Called when parsing an message stanza caused an exception.
|
||||||
*
|
*
|
||||||
* @param e
|
* @param stanzaData
|
||||||
* the exception thrown while parsing the message stanza
|
|
||||||
* @param message
|
|
||||||
* the raw message stanza data that caused the exception
|
* the raw message stanza data that caused the exception
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public void messageParsingException(Exception e, UnparsedMessage message) throws Exception {
|
public void handleUnparsablePacket(UnparsablePacket stanzaData) throws Exception {
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when parsing an IQ stanza caused an exception.
|
|
||||||
*
|
|
||||||
* @param e
|
|
||||||
* the exception thrown while parsing the iq stanza
|
|
||||||
* @param iq
|
|
||||||
* the raw iq stanza data that caused the exception
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public void iqParsingException(Exception e, UnparsedIQ iq) throws Exception {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when parsing a presence stanza caused an exception.
|
|
||||||
*
|
|
||||||
* @param e
|
|
||||||
* the exception thrown while parsing the presence stanza
|
|
||||||
* @param presence
|
|
||||||
* the raw presence stanza data that caused the exception
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public void presenceParsingException(Exception e, UnparsedPresence presence) throws Exception {
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,19 +20,18 @@
|
||||||
|
|
||||||
package org.jivesoftware.smack.parsing;
|
package org.jivesoftware.smack.parsing;
|
||||||
|
|
||||||
import org.jivesoftware.smack.packet.Message;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Representation of an unparsed IQ stanza.
|
* Representation of an unparsable packet.
|
||||||
*
|
*
|
||||||
* @author Florian Schmaus
|
* @author Florian Schmaus
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class UnparsedMessage extends Message {
|
public class UnparsablePacket {
|
||||||
private final String content;
|
private final String content;
|
||||||
private final Exception e;
|
private final Exception e;
|
||||||
|
|
||||||
public UnparsedMessage(final String content, final Exception e) {
|
public UnparsablePacket(final String content, final Exception e) {
|
||||||
this.content = content;
|
this.content = content;
|
||||||
this.e = e;
|
this.e = e;
|
||||||
}
|
}
|
||||||
|
@ -41,7 +40,7 @@ public class UnparsedMessage extends Message {
|
||||||
*
|
*
|
||||||
* @return the exception that caused the parser to fail
|
* @return the exception that caused the parser to fail
|
||||||
*/
|
*/
|
||||||
public Exception getException() {
|
public Exception getParsingException() {
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,61 +0,0 @@
|
||||||
/**
|
|
||||||
* $RCSfile$
|
|
||||||
* $Revision$
|
|
||||||
* $Date$
|
|
||||||
*
|
|
||||||
* Copyright 2013 Florian Schmaus.
|
|
||||||
*
|
|
||||||
* All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jivesoftware.smack.parsing;
|
|
||||||
|
|
||||||
import org.jivesoftware.smack.packet.Presence;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Representation of an unparsed IQ stanza.
|
|
||||||
*
|
|
||||||
* @author Florian Schmaus
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class UnparsedPresence extends Presence {
|
|
||||||
private String content;
|
|
||||||
private Exception e;
|
|
||||||
|
|
||||||
public UnparsedPresence(Type type) {
|
|
||||||
super(type);
|
|
||||||
}
|
|
||||||
|
|
||||||
public UnparsedPresence(final String content, final Exception e) {
|
|
||||||
super(Presence.Type.error);
|
|
||||||
this.content = content;
|
|
||||||
this.e = e;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @return the exception that caused the parser to fail
|
|
||||||
*/
|
|
||||||
public Exception getException() {
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve the raw stanza data
|
|
||||||
*
|
|
||||||
* @return the raw stanza data
|
|
||||||
*/
|
|
||||||
public String getContent() {
|
|
||||||
return content;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue