mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-11-22 20:12:07 +01:00
[jingle] Make Jingle.Builder extend IqBuilder
This makes Jingle.Builder to follow the new IqBuilder pattern, allowing to construct Jingle IQs with a given stanza ID (mostly useful for unit tests).
This commit is contained in:
parent
a3840659aa
commit
453ca6aeb0
5 changed files with 67 additions and 27 deletions
|
@ -51,7 +51,7 @@ public class JingleUtil {
|
||||||
JingleContentDescription description,
|
JingleContentDescription description,
|
||||||
JingleContentTransport transport) {
|
JingleContentTransport transport) {
|
||||||
|
|
||||||
Jingle.Builder jb = Jingle.getBuilder();
|
Jingle.Builder jb = Jingle.builder(connection);
|
||||||
jb.setAction(JingleAction.session_initiate)
|
jb.setAction(JingleAction.session_initiate)
|
||||||
.setSessionId(sessionId)
|
.setSessionId(sessionId)
|
||||||
.setInitiator(connection.getUser());
|
.setInitiator(connection.getUser());
|
||||||
|
@ -116,7 +116,7 @@ public class JingleUtil {
|
||||||
JingleContentDescription description,
|
JingleContentDescription description,
|
||||||
JingleContentTransport transport) {
|
JingleContentTransport transport) {
|
||||||
|
|
||||||
Jingle.Builder jb = Jingle.getBuilder();
|
Jingle.Builder jb = Jingle.builder(connection);
|
||||||
jb.setResponder(connection.getUser())
|
jb.setResponder(connection.getUser())
|
||||||
.setAction(JingleAction.session_accept)
|
.setAction(JingleAction.session_accept)
|
||||||
.setSessionId(sessionId);
|
.setSessionId(sessionId);
|
||||||
|
@ -151,7 +151,7 @@ public class JingleUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Jingle createSessionTerminate(FullJid recipient, String sessionId, JingleReason reason) {
|
public Jingle createSessionTerminate(FullJid recipient, String sessionId, JingleReason reason) {
|
||||||
Jingle.Builder jb = Jingle.getBuilder();
|
Jingle.Builder jb = Jingle.builder(connection);
|
||||||
jb.setAction(JingleAction.session_terminate)
|
jb.setAction(JingleAction.session_terminate)
|
||||||
.setSessionId(sessionId)
|
.setSessionId(sessionId)
|
||||||
.setReason(reason);
|
.setReason(reason);
|
||||||
|
@ -230,7 +230,7 @@ public class JingleUtil {
|
||||||
|
|
||||||
public Jingle createSessionTerminateContentCancel(FullJid recipient, String sessionId,
|
public Jingle createSessionTerminateContentCancel(FullJid recipient, String sessionId,
|
||||||
JingleContent.Creator contentCreator, String contentName) {
|
JingleContent.Creator contentCreator, String contentName) {
|
||||||
Jingle.Builder jb = Jingle.getBuilder();
|
Jingle.Builder jb = Jingle.builder(connection);
|
||||||
jb.setAction(JingleAction.session_terminate)
|
jb.setAction(JingleAction.session_terminate)
|
||||||
.setSessionId(sessionId);
|
.setSessionId(sessionId);
|
||||||
|
|
||||||
|
@ -312,7 +312,7 @@ public class JingleUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Jingle createSessionPing(FullJid recipient, String sessionId) {
|
public Jingle createSessionPing(FullJid recipient, String sessionId) {
|
||||||
Jingle.Builder jb = Jingle.getBuilder();
|
Jingle.Builder jb = Jingle.builder(connection);
|
||||||
jb.setSessionId(sessionId)
|
jb.setSessionId(sessionId)
|
||||||
.setAction(JingleAction.session_info);
|
.setAction(JingleAction.session_info);
|
||||||
|
|
||||||
|
@ -341,7 +341,7 @@ public class JingleUtil {
|
||||||
public Jingle createTransportReplace(FullJid recipient, FullJid initiator, String sessionId,
|
public Jingle createTransportReplace(FullJid recipient, FullJid initiator, String sessionId,
|
||||||
JingleContent.Creator contentCreator, String contentName,
|
JingleContent.Creator contentCreator, String contentName,
|
||||||
JingleContentTransport transport) {
|
JingleContentTransport transport) {
|
||||||
Jingle.Builder jb = Jingle.getBuilder();
|
Jingle.Builder jb = Jingle.builder(connection);
|
||||||
jb.setInitiator(initiator)
|
jb.setInitiator(initiator)
|
||||||
.setSessionId(sessionId)
|
.setSessionId(sessionId)
|
||||||
.setAction(JingleAction.transport_replace);
|
.setAction(JingleAction.transport_replace);
|
||||||
|
@ -368,7 +368,7 @@ public class JingleUtil {
|
||||||
public Jingle createTransportAccept(FullJid recipient, FullJid initiator, String sessionId,
|
public Jingle createTransportAccept(FullJid recipient, FullJid initiator, String sessionId,
|
||||||
JingleContent.Creator contentCreator, String contentName,
|
JingleContent.Creator contentCreator, String contentName,
|
||||||
JingleContentTransport transport) {
|
JingleContentTransport transport) {
|
||||||
Jingle.Builder jb = Jingle.getBuilder();
|
Jingle.Builder jb = Jingle.builder(connection);
|
||||||
jb.setAction(JingleAction.transport_accept)
|
jb.setAction(JingleAction.transport_accept)
|
||||||
.setInitiator(initiator)
|
.setInitiator(initiator)
|
||||||
.setSessionId(sessionId);
|
.setSessionId(sessionId);
|
||||||
|
@ -395,7 +395,7 @@ public class JingleUtil {
|
||||||
public Jingle createTransportReject(FullJid recipient, FullJid initiator, String sessionId,
|
public Jingle createTransportReject(FullJid recipient, FullJid initiator, String sessionId,
|
||||||
JingleContent.Creator contentCreator, String contentName,
|
JingleContent.Creator contentCreator, String contentName,
|
||||||
JingleContentTransport transport) {
|
JingleContentTransport transport) {
|
||||||
Jingle.Builder jb = Jingle.getBuilder();
|
Jingle.Builder jb = Jingle.builder(connection);
|
||||||
jb.setAction(JingleAction.transport_reject)
|
jb.setAction(JingleAction.transport_reject)
|
||||||
.setInitiator(initiator)
|
.setInitiator(initiator)
|
||||||
.setSessionId(sessionId);
|
.setSessionId(sessionId);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Copyright 2003-2007 Jive Software, 2014-2017 Florian Schmaus
|
* Copyright 2003-2007 Jive Software, 2014-2021 Florian Schmaus
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -21,7 +21,11 @@ import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.jivesoftware.smack.XMPPConnection;
|
||||||
import org.jivesoftware.smack.packet.IQ;
|
import org.jivesoftware.smack.packet.IQ;
|
||||||
|
import org.jivesoftware.smack.packet.IqBuilder;
|
||||||
|
import org.jivesoftware.smack.packet.IqData;
|
||||||
|
import org.jivesoftware.smack.packet.id.StandardStanzaIdSource;
|
||||||
import org.jivesoftware.smack.util.Objects;
|
import org.jivesoftware.smack.util.Objects;
|
||||||
import org.jivesoftware.smack.util.StringUtils;
|
import org.jivesoftware.smack.util.StringUtils;
|
||||||
|
|
||||||
|
@ -65,9 +69,9 @@ public final class Jingle extends IQ {
|
||||||
|
|
||||||
private final List<JingleContent> contents;
|
private final List<JingleContent> contents;
|
||||||
|
|
||||||
private Jingle(String sessionId, JingleAction action, FullJid initiator, FullJid responder, JingleReason reason,
|
private Jingle(Builder builder, String sessionId, JingleAction action, FullJid initiator, FullJid responder, JingleReason reason,
|
||||||
List<JingleContent> contents) {
|
List<JingleContent> contents) {
|
||||||
super(ELEMENT, NAMESPACE);
|
super(builder, ELEMENT, NAMESPACE);
|
||||||
this.sessionId = StringUtils.requireNotNullNorEmpty(sessionId, "Jingle session ID must not be null");
|
this.sessionId = StringUtils.requireNotNullNorEmpty(sessionId, "Jingle session ID must not be null");
|
||||||
this.action = Objects.requireNonNull(action, "Jingle action must not be null");
|
this.action = Objects.requireNonNull(action, "Jingle action must not be null");
|
||||||
this.initiator = initiator;
|
this.initiator = initiator;
|
||||||
|
@ -169,11 +173,31 @@ public final class Jingle extends IQ {
|
||||||
return xml;
|
return xml;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deprecated, do not use.
|
||||||
|
*
|
||||||
|
* @return a builder.
|
||||||
|
* @deprecated use {@link #builder(XMPPConnection)} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
// TODO: Remove in Smack 4.6.
|
||||||
public static Builder getBuilder() {
|
public static Builder getBuilder() {
|
||||||
return new Builder();
|
return builder(StandardStanzaIdSource.DEFAULT.getNewStanzaId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class Builder {
|
public static Builder builder(XMPPConnection connection) {
|
||||||
|
return new Builder(connection);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Builder builder(IqData iqData) {
|
||||||
|
return new Builder(iqData);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Builder builder(String stanzaId) {
|
||||||
|
return new Builder(stanzaId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final class Builder extends IqBuilder<Builder, Jingle> {
|
||||||
private String sid;
|
private String sid;
|
||||||
|
|
||||||
private JingleAction action;
|
private JingleAction action;
|
||||||
|
@ -186,7 +210,16 @@ public final class Jingle extends IQ {
|
||||||
|
|
||||||
private List<JingleContent> contents;
|
private List<JingleContent> contents;
|
||||||
|
|
||||||
private Builder() {
|
Builder(IqData iqCommon) {
|
||||||
|
super(iqCommon);
|
||||||
|
}
|
||||||
|
|
||||||
|
Builder(XMPPConnection connection) {
|
||||||
|
super(connection);
|
||||||
|
}
|
||||||
|
|
||||||
|
Builder(String stanzaId) {
|
||||||
|
super(stanzaId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder setSessionId(String sessionId) {
|
public Builder setSessionId(String sessionId) {
|
||||||
|
@ -228,8 +261,14 @@ public final class Jingle extends IQ {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Jingle build() {
|
public Jingle build() {
|
||||||
return new Jingle(sid, action, initiator, responder, reason, contents);
|
return new Jingle(this, sid, action, initiator, responder, reason, contents);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Builder getThis() {
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Copyright 2017-2019 Florian Schmaus
|
* Copyright 2017-2021 Florian Schmaus
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -19,11 +19,12 @@ package org.jivesoftware.smackx.jingle.provider;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import org.jivesoftware.smack.packet.IqData;
|
||||||
import org.jivesoftware.smack.packet.StandardExtensionElement;
|
import org.jivesoftware.smack.packet.StandardExtensionElement;
|
||||||
import org.jivesoftware.smack.packet.XmlEnvironment;
|
import org.jivesoftware.smack.packet.XmlEnvironment;
|
||||||
import org.jivesoftware.smack.parsing.SmackParsingException;
|
import org.jivesoftware.smack.parsing.SmackParsingException;
|
||||||
import org.jivesoftware.smack.parsing.StandardExtensionElementProvider;
|
import org.jivesoftware.smack.parsing.StandardExtensionElementProvider;
|
||||||
import org.jivesoftware.smack.provider.IQProvider;
|
import org.jivesoftware.smack.provider.IqProvider;
|
||||||
import org.jivesoftware.smack.util.ParserUtils;
|
import org.jivesoftware.smack.util.ParserUtils;
|
||||||
import org.jivesoftware.smack.xml.XmlPullParser;
|
import org.jivesoftware.smack.xml.XmlPullParser;
|
||||||
import org.jivesoftware.smack.xml.XmlPullParserException;
|
import org.jivesoftware.smack.xml.XmlPullParserException;
|
||||||
|
@ -40,13 +41,13 @@ import org.jivesoftware.smackx.jingle.element.UnknownJingleContentTransport;
|
||||||
|
|
||||||
import org.jxmpp.jid.FullJid;
|
import org.jxmpp.jid.FullJid;
|
||||||
|
|
||||||
public class JingleProvider extends IQProvider<Jingle> {
|
public class JingleProvider extends IqProvider<Jingle> {
|
||||||
|
|
||||||
private static final Logger LOGGER = Logger.getLogger(JingleProvider.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(JingleProvider.class.getName());
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Jingle parse(XmlPullParser parser, int initialDepth, XmlEnvironment xmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException {
|
public Jingle parse(XmlPullParser parser, int initialDepth, IqData iqData, XmlEnvironment xmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException {
|
||||||
Jingle.Builder builder = Jingle.getBuilder();
|
Jingle.Builder builder = Jingle.builder(iqData);
|
||||||
|
|
||||||
String actionString = parser.getAttributeValue("", Jingle.ACTION_ATTRIBUTE_NAME);
|
String actionString = parser.getAttributeValue("", Jingle.ACTION_ATTRIBUTE_NAME);
|
||||||
if (actionString != null) {
|
if (actionString != null) {
|
||||||
|
|
|
@ -148,7 +148,7 @@ public final class JingleS5BTransportManager extends JingleTransportManager<Jing
|
||||||
public Jingle createCandidateUsed(FullJid recipient, FullJid initiator, String sessionId, JingleContent.Senders contentSenders,
|
public Jingle createCandidateUsed(FullJid recipient, FullJid initiator, String sessionId, JingleContent.Senders contentSenders,
|
||||||
JingleContent.Creator contentCreator, String contentName, String streamId,
|
JingleContent.Creator contentCreator, String contentName, String streamId,
|
||||||
String candidateId) {
|
String candidateId) {
|
||||||
Jingle.Builder jb = Jingle.getBuilder();
|
Jingle.Builder jb = Jingle.builder(connection());
|
||||||
jb.setSessionId(sessionId).setInitiator(initiator).setAction(JingleAction.transport_info);
|
jb.setSessionId(sessionId).setInitiator(initiator).setAction(JingleAction.transport_info);
|
||||||
|
|
||||||
JingleContent.Builder cb = JingleContent.getBuilder();
|
JingleContent.Builder cb = JingleContent.getBuilder();
|
||||||
|
@ -165,7 +165,7 @@ public final class JingleS5BTransportManager extends JingleTransportManager<Jing
|
||||||
}
|
}
|
||||||
|
|
||||||
public Jingle createCandidateError(FullJid remote, FullJid initiator, String sessionId, JingleContent.Senders senders, JingleContent.Creator creator, String name, String streamId) {
|
public Jingle createCandidateError(FullJid remote, FullJid initiator, String sessionId, JingleContent.Senders senders, JingleContent.Creator creator, String name, String streamId) {
|
||||||
Jingle.Builder jb = Jingle.getBuilder();
|
Jingle.Builder jb = Jingle.builder(connection());
|
||||||
jb.setSessionId(sessionId).setInitiator(initiator).setAction(JingleAction.transport_info);
|
jb.setSessionId(sessionId).setInitiator(initiator).setAction(JingleAction.transport_info);
|
||||||
|
|
||||||
JingleContent.Builder cb = JingleContent.getBuilder();
|
JingleContent.Builder cb = JingleContent.getBuilder();
|
||||||
|
@ -184,7 +184,7 @@ public final class JingleS5BTransportManager extends JingleTransportManager<Jing
|
||||||
public Jingle createProxyError(FullJid remote, FullJid initiator, String sessionId,
|
public Jingle createProxyError(FullJid remote, FullJid initiator, String sessionId,
|
||||||
JingleContent.Senders senders, JingleContent.Creator creator,
|
JingleContent.Senders senders, JingleContent.Creator creator,
|
||||||
String name, String streamId) {
|
String name, String streamId) {
|
||||||
Jingle.Builder jb = Jingle.getBuilder();
|
Jingle.Builder jb = Jingle.builder(connection());
|
||||||
jb.setSessionId(sessionId).setAction(JingleAction.transport_info).setInitiator(initiator);
|
jb.setSessionId(sessionId).setAction(JingleAction.transport_info).setInitiator(initiator);
|
||||||
|
|
||||||
JingleContent.Builder cb = JingleContent.getBuilder();
|
JingleContent.Builder cb = JingleContent.getBuilder();
|
||||||
|
@ -202,7 +202,7 @@ public final class JingleS5BTransportManager extends JingleTransportManager<Jing
|
||||||
public Jingle createCandidateActivated(FullJid remote, FullJid initiator, String sessionId,
|
public Jingle createCandidateActivated(FullJid remote, FullJid initiator, String sessionId,
|
||||||
JingleContent.Senders senders, JingleContent.Creator creator,
|
JingleContent.Senders senders, JingleContent.Creator creator,
|
||||||
String name, String streamId, String candidateId) {
|
String name, String streamId, String candidateId) {
|
||||||
Jingle.Builder jb = Jingle.getBuilder();
|
Jingle.Builder jb = Jingle.builder(connection());
|
||||||
jb.setInitiator(initiator).setSessionId(sessionId).setAction(JingleAction.transport_info);
|
jb.setInitiator(initiator).setSessionId(sessionId).setAction(JingleAction.transport_info);
|
||||||
|
|
||||||
JingleContent.Builder cb = JingleContent.getBuilder();
|
JingleContent.Builder cb = JingleContent.getBuilder();
|
||||||
|
|
|
@ -38,7 +38,7 @@ public class JingleTest extends SmackTestSuite {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void emptyBuilderTest() {
|
public void emptyBuilderTest() {
|
||||||
Jingle.Builder builder = Jingle.getBuilder();
|
Jingle.Builder builder = Jingle.builder("id");
|
||||||
assertThrows(IllegalArgumentException.class, () -> {
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
builder.build();
|
builder.build();
|
||||||
});
|
});
|
||||||
|
@ -48,7 +48,7 @@ public class JingleTest extends SmackTestSuite {
|
||||||
public void onlySessionIdBuilderTest() {
|
public void onlySessionIdBuilderTest() {
|
||||||
String sessionId = "testSessionId";
|
String sessionId = "testSessionId";
|
||||||
|
|
||||||
Jingle.Builder builder = Jingle.getBuilder();
|
Jingle.Builder builder = Jingle.builder("id");
|
||||||
builder.setSessionId(sessionId);
|
builder.setSessionId(sessionId);
|
||||||
assertThrows(IllegalArgumentException.class, () -> {
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
builder.build();
|
builder.build();
|
||||||
|
@ -59,7 +59,7 @@ public class JingleTest extends SmackTestSuite {
|
||||||
public void parserTest() throws XmppStringprepException {
|
public void parserTest() throws XmppStringprepException {
|
||||||
String sessionId = "testSessionId";
|
String sessionId = "testSessionId";
|
||||||
|
|
||||||
Jingle.Builder builder = Jingle.getBuilder();
|
Jingle.Builder builder = Jingle.builder("id");
|
||||||
builder.setSessionId(sessionId);
|
builder.setSessionId(sessionId);
|
||||||
builder.setAction(JingleAction.session_initiate);
|
builder.setAction(JingleAction.session_initiate);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue