diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransport.java index a70b5d9a6..8845d122d 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransport.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransport.java @@ -133,19 +133,19 @@ public class JingleS5BTransport extends JingleContentTransport { } public Builder setCandidateUsed(String candidateId) { - return setTransportInfo(JingleS5BTransportInfo.CandidateUsed(candidateId)); + return setTransportInfo(new JingleS5BTransportInfo.CandidateUsed(candidateId)); } public Builder setCandidateActivated(String candidateId) { - return setTransportInfo(JingleS5BTransportInfo.CandidateActivated(candidateId)); + return setTransportInfo(new JingleS5BTransportInfo.CandidateActivated(candidateId)); } public Builder setCandidateError() { - return setTransportInfo(JingleS5BTransportInfo.CandidateError()); + return setTransportInfo(JingleS5BTransportInfo.CandidateError.INSTANCE); } public Builder setProxyError() { - return setTransportInfo(JingleS5BTransportInfo.ProxyError()); + return setTransportInfo(JingleS5BTransportInfo.ProxyError.INSTANCE); } public JingleS5BTransport build() { diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportInfo.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportInfo.java index 1cfc7ee42..167b3a8f1 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportInfo.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportInfo.java @@ -24,116 +24,76 @@ import org.jivesoftware.smackx.jingle.element.JingleContentTransportInfo; */ public abstract class JingleS5BTransportInfo extends JingleContentTransportInfo { - private static CandidateError CEI; - private static ProxyError PEI; - - public static CandidateUsed CandidateUsed(String candidateId) { - return new CandidateUsed(candidateId); - } - - public static CandidateActivated CandidateActivated(String candidateId) { - return new CandidateActivated(candidateId); - } - - public static CandidateError CandidateError() { - if (CEI == null) { - CEI = new CandidateError(); - } - return CEI; - } - - public static ProxyError ProxyError() { - if (PEI == null) { - PEI = new ProxyError(); - } - return PEI; - } - - public static final class CandidateActivated extends JingleS5BTransportInfo { - public static final String ELEMENT = "candidate-activated"; + public static abstract class JingleS5BCandidateTransportInfo extends JingleS5BTransportInfo { public static final String ATTR_CID = "cid"; private final String candidateId; + protected JingleS5BCandidateTransportInfo(String candidateId) { + this.candidateId = candidateId; + } + + public final String getCandidateId() { + return candidateId; + } + + @Override + public final XmlStringBuilder toXML() { + XmlStringBuilder xml = new XmlStringBuilder(); + xml.halfOpenElement(this); + xml.attribute(ATTR_CID, getCandidateId()); + xml.closeEmptyElement(); + return xml; + } + + @Override + public final boolean equals(Object other) { + if (!(other instanceof JingleS5BCandidateTransportInfo)) { + return false; + } + + JingleS5BCandidateTransportInfo otherCandidateTransportInfo = (JingleS5BCandidateTransportInfo) other; + return toXML().equals(otherCandidateTransportInfo.toXML()); + } + + @Override + public final int hashCode() { + return getCandidateId().hashCode(); + } + } + + public static final class CandidateActivated extends JingleS5BCandidateTransportInfo { + public static final String ELEMENT = "candidate-activated"; + public CandidateActivated(String candidateId) { - this.candidateId = candidateId; - } - - public String getCandidateId() { - return candidateId; + super(candidateId); } @Override public String getElementName() { return ELEMENT; } - - @Override - public CharSequence toXML() { - XmlStringBuilder xml = new XmlStringBuilder(); - xml.halfOpenElement(this); - xml.attribute(ATTR_CID, candidateId); - xml.closeEmptyElement(); - return xml; - } - - @Override - public boolean equals(Object other) { - return other instanceof CandidateActivated && - ((CandidateActivated) other).getCandidateId().equals(candidateId); - } - - @Override - public int hashCode() { - return toXML().toString().hashCode(); - } } - public static final class CandidateUsed extends JingleS5BTransportInfo { + public static final class CandidateUsed extends JingleS5BCandidateTransportInfo { public static final String ELEMENT = "candidate-used"; - public static final String ATTR_CID = "cid"; - - private final String candidateId; public CandidateUsed(String candidateId) { - this.candidateId = candidateId; - } - - public String getCandidateId() { - return candidateId; + super(candidateId); } @Override public String getElementName() { return ELEMENT; } - - @Override - public CharSequence toXML() { - XmlStringBuilder xml = new XmlStringBuilder(); - xml.halfOpenElement(this); - xml.attribute(ATTR_CID, candidateId); - xml.closeEmptyElement(); - return xml; - } - - @Override - public boolean equals(Object other) { - return other instanceof CandidateUsed && - ((CandidateUsed) other).getCandidateId().equals(candidateId); - } - - @Override - public int hashCode() { - return toXML().toString().hashCode(); - } } public static final class CandidateError extends JingleS5BTransportInfo { + public static final CandidateError INSTANCE = new CandidateError(); + public static final String ELEMENT = "candidate-error"; private CandidateError() { - } @Override @@ -142,7 +102,7 @@ public abstract class JingleS5BTransportInfo extends JingleContentTransportInfo } @Override - public CharSequence toXML() { + public XmlStringBuilder toXML() { XmlStringBuilder xml = new XmlStringBuilder(); xml.halfOpenElement(this); xml.closeEmptyElement(); @@ -151,7 +111,7 @@ public abstract class JingleS5BTransportInfo extends JingleContentTransportInfo @Override public boolean equals(Object other) { - return other instanceof CandidateError; + return other == INSTANCE; } @Override @@ -161,10 +121,11 @@ public abstract class JingleS5BTransportInfo extends JingleContentTransportInfo } public static final class ProxyError extends JingleS5BTransportInfo { + public static final ProxyError INSTANCE = new ProxyError(); + public static final String ELEMENT = "proxy-error"; private ProxyError() { - } @Override @@ -182,7 +143,7 @@ public abstract class JingleS5BTransportInfo extends JingleContentTransportInfo @Override public boolean equals(Object other) { - return other instanceof ProxyError; + return other == INSTANCE; } @Override diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/provider/JingleS5BTransportProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/provider/JingleS5BTransportProvider.java index 60324e8c2..ad681e9e7 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/provider/JingleS5BTransportProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/provider/JingleS5BTransportProvider.java @@ -32,6 +32,7 @@ import org.jivesoftware.smackx.jingle.provider.JingleContentTransportProvider; import org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransport; import org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransportCandidate; import org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransportInfo; +import org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransportInfo.JingleS5BCandidateTransportInfo; import org.xmlpull.v1.XmlPullParser; @@ -83,23 +84,23 @@ public class JingleS5BTransportProvider extends JingleContentTransportProvider