diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/ParserUtils.java b/smack-core/src/main/java/org/jivesoftware/smack/util/ParserUtils.java index 14a003a21..e795a83e0 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/util/ParserUtils.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/ParserUtils.java @@ -57,7 +57,7 @@ public class ParserUtils { } public static void forwardToEndTagOfDepth(XmlPullParser parser, int depth) - throws XmlPullParserException, IOException { + throws XmlPullParserException, IOException { int event = parser.getEventType(); while (!(event == XmlPullParser.END_TAG && parser.getDepth() == depth)) { event = parser.next(); @@ -107,7 +107,9 @@ public class ParserUtils { } Jid jid = JidCreate.from(jidString); - if (!jid.hasLocalpart()) return null; + if (!jid.hasLocalpart()) { + return null; + } EntityFullJid fullJid = jid.asEntityFullJidIfPossible(); if (fullJid != null) { @@ -128,32 +130,32 @@ public class ParserUtils { /** * Get the boolean value of an argument. - * + * * @param parser * @param name * @return the boolean value or null of no argument of the given name exists */ public static Boolean getBooleanAttribute(XmlPullParser parser, String name) { String valueString = parser.getAttributeValue("", name); - if (valueString == null) + if (valueString == null) { return null; + } + valueString = valueString.toLowerCase(Locale.US); if (valueString.equals("true") || valueString.equals("0")) { return true; - } else { - return false; } + + return false; } public static boolean getBooleanAttribute(XmlPullParser parser, String name, - boolean defaultValue) { + boolean defaultValue) { Boolean bool = getBooleanAttribute(parser, name); if (bool == null) { return defaultValue; } - else { - return bool; - } + return bool; } public static int getIntegerAttributeOrThrow(XmlPullParser parser, String name, String throwMessage) throws SmackException { @@ -166,8 +168,9 @@ public class ParserUtils { public static Integer getIntegerAttribute(XmlPullParser parser, String name) { String valueString = parser.getAttributeValue("", name); - if (valueString == null) + if (valueString == null) { return null; + } return Integer.valueOf(valueString); } @@ -176,9 +179,7 @@ public class ParserUtils { if (integer == null) { return defaultValue; } - else { - return integer; - } + return integer; } public static int getIntegerFromNextText(XmlPullParser parser) throws XmlPullParserException, IOException { @@ -188,8 +189,9 @@ public class ParserUtils { public static Long getLongAttribute(XmlPullParser parser, String name) { String valueString = parser.getAttributeValue("", name); - if (valueString == null) + if (valueString == null) { return null; + } return Long.valueOf(valueString); } @@ -198,9 +200,7 @@ public class ParserUtils { if (l == null) { return defaultValue; } - else { - return l; - } + return l; } public static double getDoubleFromNextText(XmlPullParser parser) throws XmlPullParserException, IOException { @@ -210,8 +210,9 @@ public class ParserUtils { public static Double getDoubleAttribute(XmlPullParser parser, String name) { String valueString = parser.getAttributeValue("", name); - if (valueString == null) + if (valueString == null) { return null; + } return Double.valueOf(valueString); } @@ -220,9 +221,23 @@ public class ParserUtils { if (d == null) { return defaultValue; } - else { - return d; + return d; + } + + public static Short getShortAttribute(XmlPullParser parser, String name) { + String valueString = parser.getAttributeValue("", name); + if (valueString == null) { + return null; } + return Short.valueOf(valueString); + } + + public static short getShortAttribute(XmlPullParser parser, String name, short defaultValue) { + Short s = getShortAttribute(parser, name); + if (s == null) { + return defaultValue; + } + return s; } public static Date getDateFromNextText(XmlPullParser parser) throws XmlPullParserException, IOException, ParseException { diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/JetManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/JetManager.java index 6438e5734..841be920d 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/JetManager.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/JetManager.java @@ -37,9 +37,9 @@ import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smackx.jet.element.JetSecurityElement; import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.JingleUtil; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleContent; -import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionChildElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentDescriptionChildElement; import org.jivesoftware.smackx.jingle_filetransfer.OutgoingJingleFileOffer; import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransfer; import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransferChild; @@ -150,15 +150,15 @@ public final class JetManager extends Manager { JingleFileTransferChild fileTransferChild = JingleFileTransferChild.getBuilder().setFile(file).build(); JingleFileTransfer fileTransfer = new JingleFileTransfer(Collections.singletonList(fileTransferChild)); - JingleContent content = JingleContent.getBuilder() - .setCreator(JingleContent.Creator.initiator) + JingleContentElement content = JingleContentElement.getBuilder() + .setCreator(JingleContentElement.Creator.initiator) .setName(contentName) .setTransport(offer.getTransportSession().createTransport()) .setSecurity(securityElement) .setDescription(fileTransfer) .build(); - Jingle initiate = jutil.createSessionInitiate(recipient, JingleManager.randomId(), content); + JingleElement initiate = jutil.createSessionInitiate(recipient, JingleManager.randomId(), content); return offer; } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/element/JetSecurityElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/element/JetSecurityElement.java index 9ec99913f..96d14c6b5 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/element/JetSecurityElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/element/JetSecurityElement.java @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.jet.element; import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smackx.jet.JetManager; -import org.jivesoftware.smackx.jingle.element.JingleContentSecurity; +import org.jivesoftware.smackx.jingle3.element.JingleContentSecurityElement; /** * Implementation of the Jingle security element as specified in XEP-XXXX (Jingle Encrypted Transfers). @@ -31,7 +31,7 @@ import org.jivesoftware.smackx.jingle.element.JingleContentSecurity; * * */ -public class JetSecurityElement extends JingleContentSecurity { +public class JetSecurityElement extends JingleContentSecurityElement { public static final String ATTR_NAME = "name"; public static final String ATTR_TYPE = "type"; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/IncomingJingleFileOffer.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/IncomingJingleFileOffer.java index 18d5ed7f7..24cfe3f98 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/IncomingJingleFileOffer.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/IncomingJingleFileOffer.java @@ -29,9 +29,9 @@ import org.jivesoftware.smackx.bytestreams.BytestreamSession; import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.JingleTransportMethodManager; import org.jivesoftware.smackx.jingle.Role; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleContent; -import org.jivesoftware.smackx.jingle.element.JingleReason; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleReasonElement; import org.jivesoftware.smackx.jingle.transports.JingleTransportInitiationCallback; import org.jivesoftware.smackx.jingle.transports.JingleTransportManager; import org.jivesoftware.smackx.jingle_filetransfer.callback.IncomingFileOfferCallback; @@ -45,7 +45,7 @@ import org.jxmpp.jid.FullJid; */ public class IncomingJingleFileOffer extends JingleFileTransferSession implements IncomingFileOfferCallback { private static final Logger LOGGER = Logger.getLogger(IncomingJingleFileOffer.class.getName()); - private Jingle pendingSessionInitiate = null; + private JingleElement pendingSessionInitiate = null; private ReceiveTask receivingThread; private File target; @@ -58,7 +58,7 @@ public class IncomingJingleFileOffer extends JingleFileTransferSession implement queued.remove(task); } - notifyEndedListeners(JingleReason.Reason.cancel); + notifyEndedListeners(JingleReasonElement.Reason.cancel); } } @@ -77,12 +77,12 @@ public class IncomingJingleFileOffer extends JingleFileTransferSession implement state = State.fresh; } - public IncomingJingleFileOffer(XMPPConnection connection, Jingle request) { + public IncomingJingleFileOffer(XMPPConnection connection, JingleElement request) { this(connection, request.getInitiator(), request.getSid()); } @Override - public IQ handleSessionInitiate(final Jingle initiate) + public IQ handleSessionInitiate(final JingleElement initiate) throws InterruptedException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, SmackException.NoResponseException { JingleTransportMethodManager tm = JingleTransportMethodManager.getInstanceFor(connection); @@ -130,7 +130,7 @@ public class IncomingJingleFileOffer extends JingleFileTransferSession implement } @Override - public IQ handleTransportReplace(final Jingle transportReplace) + public IQ handleTransportReplace(final JingleElement transportReplace) throws InterruptedException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, SmackException.NoResponseException { final JingleTransportManager replacementManager = JingleTransportMethodManager.getInstanceFor(connection) @@ -179,7 +179,7 @@ public class IncomingJingleFileOffer extends JingleFileTransferSession implement } @Override - public IQ handleTransportAccept(Jingle transportAccept) { + public IQ handleTransportAccept(JingleElement transportAccept) { LOGGER.log(Level.INFO, "Received transport-accept."); if (state != State.sent_transport_replace) { LOGGER.log(Level.WARNING, "Session is in state " + state + ", so the transport-accept is out of order."); @@ -199,7 +199,7 @@ public class IncomingJingleFileOffer extends JingleFileTransferSession implement } @Override - public FileTransferHandler acceptIncomingFileOffer(final Jingle request, final File target) { + public FileTransferHandler acceptIncomingFileOffer(final JingleElement request, final File target) { this.target = target; LOGGER.log(Level.INFO, "Client accepted incoming file offer. Try to start receiving."); if (transportSession == null) { @@ -218,7 +218,7 @@ public class IncomingJingleFileOffer extends JingleFileTransferSession implement try { jutil.sendSessionAccept(getInitiator(), sid, getContents().get(0).getCreator(), - getContents().get(0).getName(), JingleContent.Senders.initiator, file, + getContents().get(0).getName(), JingleContentElement.Senders.initiator, file, transportSession.createTransport()); } catch (SmackException.NotConnectedException | SmackException.NoResponseException | XMPPException.XMPPErrorException | InterruptedException e) { @@ -245,7 +245,7 @@ public class IncomingJingleFileOffer extends JingleFileTransferSession implement } @Override - public void declineIncomingFileOffer(Jingle request) { + public void declineIncomingFileOffer(JingleElement request) { state = State.terminated; try { jutil.sendSessionTerminateDecline(request.getInitiator(), request.getSid()); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileRequest.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileRequest.java index bdb4414d9..2ee1ec897 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileRequest.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileRequest.java @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.jingle_filetransfer; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.Role; -import org.jivesoftware.smackx.jingle.element.Jingle; +import org.jivesoftware.smackx.jingle3.element.JingleElement; import org.jxmpp.jid.FullJid; @@ -37,7 +37,7 @@ public class JingleFileRequest extends JingleFileTransferSession { JingleManager.randomId()); } - public static JingleFileRequest createIncomingFileRequest(XMPPConnection connection, Jingle request) { + public static JingleFileRequest createIncomingFileRequest(XMPPConnection connection, JingleElement request) { return new JingleFileRequest(connection, request.getInitiator(), connection.getUser().asFullJidOrThrow(), Role.responder, request.getSid()); } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManager.java index 91c4d2c6a..2e8fe81ac 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManager.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManager.java @@ -32,11 +32,11 @@ import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; import org.jivesoftware.smackx.jingle.JingleHandler; import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.JingleUtil; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleAction; -import org.jivesoftware.smackx.jingle.element.JingleContent; -import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionChildElement; -import org.jivesoftware.smackx.jingle.provider.JingleContentProviderManager; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleAction; +import org.jivesoftware.smackx.jingle3.element.JingleContentDescriptionChildElement; +import org.jivesoftware.smackx.jingle3.provider.JingleContentProviderManager; import org.jivesoftware.smackx.jingle_filetransfer.callback.IncomingFileOfferCallback; import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransfer; import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransferChild; @@ -85,7 +85,7 @@ public final class JingleFileTransferManager extends Manager implements JingleHa } @Override - public IQ handleJingleRequest(Jingle jingle) { + public IQ handleJingleRequest(JingleElement jingle) { FullJid fullJid = jingle.getFrom().asFullJidOrThrow(); String sid = jingle.getSid(); @@ -107,18 +107,18 @@ public final class JingleFileTransferManager extends Manager implements JingleHa * @param request * @return */ - private JingleFileTransferSession createSessionHandler(Jingle request) { + private JingleFileTransferSession createSessionHandler(JingleElement request) { if (request.getAction() != JingleAction.session_initiate) { LOGGER.log(Level.WARNING, "First received action must be session-initiate."); throw new IllegalArgumentException("Requests action MUST be session-initiate."); } - JingleContent content = request.getContents().get(0); + JingleContentElement content = request.getContents().get(0); //File Offer - if (content.getSenders() == JingleContent.Senders.initiator) { + if (content.getSenders() == JingleContentElement.Senders.initiator) { return new IncomingJingleFileOffer(connection(), request); } //File Request - else if (content.getSenders() == JingleContent.Senders.responder) { + else if (content.getSenders() == JingleContentElement.Senders.responder) { return JingleFileRequest.createIncomingFileRequest(connection(), request); } else { @@ -129,7 +129,7 @@ public final class JingleFileTransferManager extends Manager implements JingleHa } } - public void notifyIncomingFileOffer(Jingle initiate, IncomingFileOfferCallback callback) { + public void notifyIncomingFileOffer(JingleElement initiate, IncomingFileOfferCallback callback) { for (JingleFileTransferOfferListener l : jingleFileTransferOfferListeners) { l.onFileOffer(initiate, callback); } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferSession.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferSession.java index 7e3a4498d..7586d786a 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferSession.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferSession.java @@ -22,7 +22,7 @@ import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smackx.jingle.JingleSession; import org.jivesoftware.smackx.jingle.JingleUtil; import org.jivesoftware.smackx.jingle.Role; -import org.jivesoftware.smackx.jingle.element.JingleReason; +import org.jivesoftware.smackx.jingle3.element.JingleReasonElement; import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransfer; import org.jivesoftware.smackx.jingle_filetransfer.handler.FileTransferHandler; @@ -99,7 +99,7 @@ public abstract class JingleFileTransferSession extends JingleSession implements } @Override - public void notifyEndedListeners(JingleReason.Reason reason) { + public void notifyEndedListeners(JingleReasonElement.Reason reason) { ended = true; for (EndedListener e : endedListeners) { e.onEnded(reason); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/OutgoingJingleFileOffer.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/OutgoingJingleFileOffer.java index 5a225a4f8..dc7e1da00 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/OutgoingJingleFileOffer.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/OutgoingJingleFileOffer.java @@ -31,9 +31,9 @@ import org.jivesoftware.smackx.bytestreams.BytestreamSession; import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.JingleTransportMethodManager; import org.jivesoftware.smackx.jingle.Role; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleContent; -import org.jivesoftware.smackx.jingle.element.JingleReason; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleReasonElement; import org.jivesoftware.smackx.jingle.transports.JingleTransportInitiationCallback; import org.jivesoftware.smackx.jingle.transports.JingleTransportManager; import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransfer; @@ -65,7 +65,7 @@ public class OutgoingJingleFileOffer extends JingleFileTransferSession { } jutil.sendSessionTerminateCancel(getRemote(), getSessionId()); - notifyEndedListeners(JingleReason.Reason.cancel); + notifyEndedListeners(JingleReasonElement.Reason.cancel); } public enum State { @@ -96,7 +96,7 @@ public class OutgoingJingleFileOffer extends JingleFileTransferSession { String contentName = JingleManager.randomId(); JingleFileTransfer transfer = JingleFileTransferManager.fileTransferFromFile(file); - initiateFileOffer(transfer, JingleContent.Creator.initiator, contentName); + initiateFileOffer(transfer, JingleContentElement.Creator.initiator, contentName); } public SmackFuture sendAsync(File file) { @@ -106,7 +106,7 @@ public class OutgoingJingleFileOffer extends JingleFileTransferSession { return null; //TODO } - public void initiateFileOffer(JingleFileTransfer file, JingleContent.Creator creator, String name) throws InterruptedException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, SmackException.NoResponseException { + public void initiateFileOffer(JingleFileTransfer file, JingleContentElement.Creator creator, String name) throws InterruptedException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, SmackException.NoResponseException { if (state != State.fresh) { throw new IllegalStateException("This session is not fresh."); } @@ -122,14 +122,14 @@ public class OutgoingJingleFileOffer extends JingleFileTransferSession { state = State.pending; - Jingle initiate = jutil.createSessionInitiateFileOffer(getResponder(), getSessionId(), creator, name, file, transportSession.createTransport(), null); + JingleElement initiate = jutil.createSessionInitiateFileOffer(getResponder(), getSessionId(), creator, name, file, transportSession.createTransport(), null); this.contents.addAll(initiate.getContents()); connection.sendStanza(initiate); } @Override - public IQ handleSessionAccept(Jingle sessionAccept) throws SmackException.NotConnectedException, InterruptedException { + public IQ handleSessionAccept(JingleElement sessionAccept) throws SmackException.NotConnectedException, InterruptedException { // Out of order? if (state != State.pending) { LOGGER.log(Level.WARNING, "Session state is " + state + ", so session-accept is out of order."); @@ -158,13 +158,13 @@ public class OutgoingJingleFileOffer extends JingleFileTransferSession { } @Override - public IQ handleSessionTerminate(Jingle sessionTerminate) { + public IQ handleSessionTerminate(JingleElement sessionTerminate) { state = State.terminated; return jutil.createAck(sessionTerminate); } @Override - public IQ handleTransportReplace(final Jingle transportReplace) + public IQ handleTransportReplace(final JingleElement transportReplace) throws InterruptedException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, SmackException.NoResponseException { final JingleTransportManager replacementManager = JingleTransportMethodManager.getInstanceFor(connection) @@ -196,7 +196,7 @@ public class OutgoingJingleFileOffer extends JingleFileTransferSession { } @Override - public IQ handleTransportAccept(Jingle transportAccept) + public IQ handleTransportAccept(JingleElement transportAccept) throws SmackException.NotConnectedException, InterruptedException { return handleSessionAccept(transportAccept); @@ -205,7 +205,7 @@ public class OutgoingJingleFileOffer extends JingleFileTransferSession { @Override public void onTransportMethodFailed(String namespace) { state = State.pending; - JingleContent content = contents.get(0); + JingleContentElement content = contents.get(0); failedTransportMethods.add(namespace); JingleTransportMethodManager tm = JingleTransportMethodManager.getInstanceFor(getConnection()); JingleTransportManager next = tm.getBestAvailableTransportManager(failedTransportMethods); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/ReceiveTask.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/ReceiveTask.java index 0cc697a65..30b40b700 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/ReceiveTask.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/ReceiveTask.java @@ -24,7 +24,7 @@ import java.util.logging.Level; import java.util.logging.Logger; import org.jivesoftware.smackx.bytestreams.BytestreamSession; -import org.jivesoftware.smackx.jingle.element.JingleReason; +import org.jivesoftware.smackx.jingle3.element.JingleReasonElement; import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransfer; import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransferChild; @@ -90,7 +90,7 @@ public class ReceiveTask implements Runnable { } } - session.notifyEndedListeners(JingleReason.Reason.success); + session.notifyEndedListeners(JingleReasonElement.Reason.success); } } } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/SendTask.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/SendTask.java index 4843f3c30..e457900cd 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/SendTask.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/SendTask.java @@ -25,7 +25,7 @@ import java.util.logging.Level; import java.util.logging.Logger; import org.jivesoftware.smackx.bytestreams.BytestreamSession; -import org.jivesoftware.smackx.jingle.element.JingleReason; +import org.jivesoftware.smackx.jingle3.element.JingleReasonElement; /** * Created by vanitas on 21.06.17. @@ -78,7 +78,7 @@ public class SendTask implements Runnable { LOGGER.log(Level.SEVERE, "Could not close session.", e); } - session.notifyEndedListeners(JingleReason.Reason.success); + session.notifyEndedListeners(JingleReasonElement.Reason.success); } } } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/callback/IncomingFileOfferCallback.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/callback/IncomingFileOfferCallback.java index be3661f38..ca8020af1 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/callback/IncomingFileOfferCallback.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/callback/IncomingFileOfferCallback.java @@ -18,7 +18,7 @@ package org.jivesoftware.smackx.jingle_filetransfer.callback; import java.io.File; -import org.jivesoftware.smackx.jingle.element.Jingle; +import org.jivesoftware.smackx.jingle3.element.JingleElement; import org.jivesoftware.smackx.jingle_filetransfer.handler.FileTransferHandler; /** @@ -26,7 +26,7 @@ import org.jivesoftware.smackx.jingle_filetransfer.handler.FileTransferHandler; */ public interface IncomingFileOfferCallback { - FileTransferHandler acceptIncomingFileOffer(Jingle request, File target); + FileTransferHandler acceptIncomingFileOffer(JingleElement request, File target); - void declineIncomingFileOffer(Jingle request); + void declineIncomingFileOffer(JingleElement request); } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/callback/IncomingFileRequestCallback.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/callback/IncomingFileRequestCallback.java index 0b4deea86..85803a92f 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/callback/IncomingFileRequestCallback.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/callback/IncomingFileRequestCallback.java @@ -18,14 +18,14 @@ package org.jivesoftware.smackx.jingle_filetransfer.callback; import java.io.File; -import org.jivesoftware.smackx.jingle.element.Jingle; +import org.jivesoftware.smackx.jingle3.element.JingleElement; /** * Callback used to accept/decline file requests. */ public interface IncomingFileRequestCallback { - void acceptIncomingFileRequest(Jingle request, File source); + void acceptIncomingFileRequest(JingleElement request, File source); - void declineIncomingFileRequest(Jingle request); + void declineIncomingFileRequest(JingleElement request); } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Checksum.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Checksum.java index a841c8ae7..8c8bc2e9e 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Checksum.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Checksum.java @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.jingle_filetransfer.element; import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.XmlStringBuilder; -import org.jivesoftware.smackx.jingle.element.JingleContent; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; /** * Checksum element. @@ -29,11 +29,11 @@ public class Checksum implements ExtensionElement { public static final String ATTR_CREATOR = "creator"; public static final String ATTR_NAME = "name"; - private final JingleContent.Creator creator; + private final JingleContentElement.Creator creator; private final String name; private final JingleFileTransferChild file; - public Checksum(JingleContent.Creator creator, String name, JingleFileTransferChild file) { + public Checksum(JingleContentElement.Creator creator, String name, JingleFileTransferChild file) { this.creator = creator; this.name = name; this.file = Objects.requireNonNull(file, "file MUST NOT be null."); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransfer.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransfer.java index 40dc1aaa2..e8bdc2921 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransfer.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransfer.java @@ -18,13 +18,13 @@ package org.jivesoftware.smackx.jingle_filetransfer.element; import java.util.List; -import org.jivesoftware.smackx.jingle.element.JingleContentDescription; -import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionChildElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentDescriptionElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentDescriptionChildElement; /** * File element. */ -public class JingleFileTransfer extends JingleContentDescription { +public class JingleFileTransfer extends JingleContentDescriptionElement { public static final String NAMESPACE_V5 = "urn:xmpp:jingle:apps:file-transfer:5"; public JingleFileTransfer(List payloads) { diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransferChild.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransferChild.java index ed20b38d8..08d5084bb 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransferChild.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransferChild.java @@ -21,7 +21,7 @@ import java.util.Date; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smackx.hashes.element.HashElement; -import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionChildElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentDescriptionChildElement; /** * Content of type File. diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/handler/FileTransferHandler.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/handler/FileTransferHandler.java index 338f270fe..274036580 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/handler/FileTransferHandler.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/handler/FileTransferHandler.java @@ -18,7 +18,7 @@ package org.jivesoftware.smackx.jingle_filetransfer.handler; import org.jivesoftware.smack.SmackException; import org.jivesoftware.smack.XMPPException; -import org.jivesoftware.smackx.jingle.element.JingleReason; +import org.jivesoftware.smackx.jingle3.element.JingleReasonElement; /** * Handler that provides some control over the JingleFileOffer session. @@ -57,7 +57,7 @@ public interface FileTransferHandler { /** * Notify all registered FinishedListeners that the file transfer has ended. */ - void notifyEndedListeners(JingleReason.Reason reason); + void notifyEndedListeners(JingleReasonElement.Reason reason); /** * Notify all registered AcceptedListeners that the file transfer session has been accepted by the remote user. @@ -68,7 +68,7 @@ public interface FileTransferHandler { * A FinishedListener will be notified by the SendFileHandler when the corresponding file transfer is ended. */ interface EndedListener { - void onEnded(JingleReason.Reason reason); + void onEnded(JingleReasonElement.Reason reason); } /** diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/listener/JingleFileTransferOfferListener.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/listener/JingleFileTransferOfferListener.java index 39927ed91..6ad36b705 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/listener/JingleFileTransferOfferListener.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/listener/JingleFileTransferOfferListener.java @@ -16,7 +16,7 @@ */ package org.jivesoftware.smackx.jingle_filetransfer.listener; -import org.jivesoftware.smackx.jingle.element.Jingle; +import org.jivesoftware.smackx.jingle3.element.JingleElement; import org.jivesoftware.smackx.jingle_filetransfer.callback.IncomingFileOfferCallback; /** @@ -24,5 +24,5 @@ import org.jivesoftware.smackx.jingle_filetransfer.callback.IncomingFileOfferCal */ public interface JingleFileTransferOfferListener { - void onFileOffer(Jingle request, IncomingFileOfferCallback callback); + void onFileOffer(JingleElement request, IncomingFileOfferCallback callback); } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/provider/ChecksumProvider.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/provider/ChecksumProvider.java index 73899e585..ace17ca99 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/provider/ChecksumProvider.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/provider/ChecksumProvider.java @@ -23,7 +23,7 @@ import org.jivesoftware.smack.provider.ExtensionElementProvider; import org.jivesoftware.smack.util.ParserUtils; import org.jivesoftware.smackx.hashes.element.HashElement; import org.jivesoftware.smackx.hashes.provider.HashElementProvider; -import org.jivesoftware.smackx.jingle.element.JingleContent; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; import org.jivesoftware.smackx.jingle_filetransfer.element.Checksum; import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransferChild; import org.jivesoftware.smackx.jingle_filetransfer.element.Range; @@ -36,10 +36,10 @@ import org.xmlpull.v1.XmlPullParser; public class ChecksumProvider extends ExtensionElementProvider { @Override public Checksum parse(XmlPullParser parser, int initialDepth) throws Exception { - JingleContent.Creator creator = null; + JingleContentElement.Creator creator = null; String creatorString = parser.getAttributeValue(null, Checksum.ATTR_CREATOR); if (creatorString != null) { - creator = JingleContent.Creator.valueOf(creatorString); + creator = JingleContentElement.Creator.valueOf(creatorString); } String name = parser.getAttributeValue(null, Checksum.ATTR_NAME); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/provider/JingleFileTransferProvider.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/provider/JingleFileTransferProvider.java index 9b4883ae0..59ba02f0a 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/provider/JingleFileTransferProvider.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/provider/JingleFileTransferProvider.java @@ -24,8 +24,8 @@ import java.util.ArrayList; import org.jivesoftware.smack.util.ParserUtils; import org.jivesoftware.smackx.hashes.element.HashElement; import org.jivesoftware.smackx.hashes.provider.HashElementProvider; -import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionChildElement; -import org.jivesoftware.smackx.jingle.provider.JingleContentDescriptionProvider; +import org.jivesoftware.smackx.jingle3.element.JingleContentDescriptionChildElement; +import org.jivesoftware.smackx.jingle3.provider.JingleContentDescriptionProvider; import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransfer; import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransferChild; import org.jivesoftware.smackx.jingle_filetransfer.element.Range; diff --git a/smack-experimental/src/test/java/org/jivesoftware/smackx/jingle_filetransfer/ChecksumTest.java b/smack-experimental/src/test/java/org/jivesoftware/smackx/jingle_filetransfer/ChecksumTest.java index 50414fc7d..08d1bae92 100644 --- a/smack-experimental/src/test/java/org/jivesoftware/smackx/jingle_filetransfer/ChecksumTest.java +++ b/smack-experimental/src/test/java/org/jivesoftware/smackx/jingle_filetransfer/ChecksumTest.java @@ -22,7 +22,7 @@ import org.jivesoftware.smack.test.util.SmackTestSuite; import org.jivesoftware.smack.test.util.TestUtils; import org.jivesoftware.smackx.hashes.HashManager; import org.jivesoftware.smackx.hashes.element.HashElement; -import org.jivesoftware.smackx.jingle.element.JingleContent; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; import org.jivesoftware.smackx.jingle_filetransfer.element.Checksum; import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransferChild; import org.jivesoftware.smackx.jingle_filetransfer.element.Range; @@ -39,7 +39,7 @@ public class ChecksumTest extends SmackTestSuite { public void parserTest() throws Exception { HashElement hash = new HashElement(HashManager.ALGORITHM.SHA_256, "f4OxZX/x/FO5LcGBSKHWXfwtSx+j1ncoSt3SABJtkGk="); JingleFileTransferChild file = new JingleFileTransferChild(null, null, hash, null, null, -1, null); - Checksum checksum = new Checksum(JingleContent.Creator.initiator, "name", file); + Checksum checksum = new Checksum(JingleContentElement.Creator.initiator, "name", file); String xml = "" + "" + @@ -52,7 +52,7 @@ public class ChecksumTest extends SmackTestSuite { Range range = new Range(12L,34L); file = new JingleFileTransferChild(null, null, hash, null, null, -1, range); - checksum = new Checksum(JingleContent.Creator.initiator, "name", file); + checksum = new Checksum(JingleContentElement.Creator.initiator, "name", file); xml = "" + "" + diff --git a/smack-experimental/src/test/java/org/jivesoftware/smackx/jingle_filetransfer/JingleUtilFileTransferTest.java b/smack-experimental/src/test/java/org/jivesoftware/smackx/jingle_filetransfer/JingleUtilFileTransferTest.java index a9c71654d..16d88c0e6 100644 --- a/smack-experimental/src/test/java/org/jivesoftware/smackx/jingle_filetransfer/JingleUtilFileTransferTest.java +++ b/smack-experimental/src/test/java/org/jivesoftware/smackx/jingle_filetransfer/JingleUtilFileTransferTest.java @@ -32,10 +32,10 @@ import org.jivesoftware.smackx.hashes.element.HashElement; import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.JingleUtil; import org.jivesoftware.smackx.jingle.JingleUtilTest; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleAction; -import org.jivesoftware.smackx.jingle.element.JingleContent; -import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionChildElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleAction; +import org.jivesoftware.smackx.jingle3.element.JingleContentDescriptionChildElement; import org.jivesoftware.smackx.jingle.transports.jingle_ibb.element.JingleIBBTransport; import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransfer; import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransferChild; @@ -80,9 +80,9 @@ public class JingleUtilFileTransferTest extends SmackTestSuite { String contentName = "content"; - Jingle initiate = jutil.createSessionInitiate(juliet, "letsstart", JingleContent.Creator.initiator, contentName, JingleContent.Senders.initiator, description, transport); - Jingle accept = jutil.createSessionAccept(juliet, "acceptID", JingleContent.Creator.initiator, contentName, JingleContent.Senders.initiator, description, transport); - Jingle fileOffer = jutil.createSessionInitiateFileOffer(juliet, "fileOffer", JingleContent.Creator.initiator, contentName, description, transport); + JingleElement initiate = jutil.createSessionInitiate(juliet, "letsstart", JingleContentElement.Creator.initiator, contentName, JingleContentElement.Senders.initiator, description, transport); + JingleElement accept = jutil.createSessionAccept(juliet, "acceptID", JingleContentElement.Creator.initiator, contentName, JingleContentElement.Senders.initiator, description, transport); + JingleElement fileOffer = jutil.createSessionInitiateFileOffer(juliet, "fileOffer", JingleContentElement.Creator.initiator, contentName, description, transport); assertEquals(JingleAction.session_initiate, initiate.getAction()); assertEquals(JingleAction.session_accept, accept.getAction()); @@ -99,13 +99,13 @@ public class JingleUtilFileTransferTest extends SmackTestSuite { assertEquals(1, initiate.getContents().size()); assertEquals(1, accept.getContents().size()); - JingleContent content = initiate.getContents().get(0); + JingleContentElement content = initiate.getContents().get(0); assertEquals(content.toXML().toString(), initiate.getContents().get(0).toXML().toString()); assertEquals(content.toXML().toString(), accept.getContents().get(0).toXML().toString()); assertEquals("content", content.getName()); - assertEquals(JingleContent.Creator.initiator, content.getCreator()); - assertEquals(JingleContent.Senders.initiator, content.getSenders()); + assertEquals(JingleContentElement.Creator.initiator, content.getCreator()); + assertEquals(JingleContentElement.Senders.initiator, content.getSenders()); assertEquals(1, description.getJingleContentDescriptionChildren().size()); assertEquals(file, description.getJingleContentDescriptionChildren().get(0)); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleHandler.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleHandler.java index 2322a06ac..39e889391 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleHandler.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleHandler.java @@ -17,10 +17,10 @@ package org.jivesoftware.smackx.jingle; import org.jivesoftware.smack.packet.IQ; -import org.jivesoftware.smackx.jingle.element.Jingle; +import org.jivesoftware.smackx.jingle3.element.JingleElement; public interface JingleHandler { - IQ handleJingleRequest(Jingle jingle); + IQ handleJingleRequest(JingleElement jingle); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleManager.java index 552a018ef..4a745b74a 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleManager.java @@ -31,12 +31,12 @@ import org.jivesoftware.smack.iqrequest.IQRequestHandler.Mode; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.packet.IQ.Type; import org.jivesoftware.smack.util.StringUtils; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleAction; -import org.jivesoftware.smackx.jingle.element.JingleContent; -import org.jivesoftware.smackx.jingle.element.JingleContentDescription; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleAction; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentDescriptionElement; import org.jivesoftware.smackx.jingle.transports.jingle_ibb.JingleIBBTransportManager; -import org.jivesoftware.smackx.jingle.transports.jingle_s5b.JingleS5BTransportManager; +import org.jivesoftware.smackx.jingle3.transport.jingle_s5b.JingleS5BTransportManager; import org.jxmpp.jid.FullJid; @@ -73,10 +73,10 @@ public final class JingleManager extends Manager { jutil = new JingleUtil(connection); connection.registerIQRequestHandler( - new AbstractIqRequestHandler(Jingle.ELEMENT, Jingle.NAMESPACE, Type.set, Mode.async) { + new AbstractIqRequestHandler(JingleElement.ELEMENT, JingleElement.NAMESPACE, Type.set, Mode.async) { @Override public IQ handleIQRequest(IQ iqRequest) { - final Jingle jingle = (Jingle) iqRequest; + final JingleElement jingle = (JingleElement) iqRequest; FullJid fullFrom = jingle.getFrom().asFullJidOrThrow(); String sid = jingle.getSid(); @@ -90,8 +90,8 @@ public final class JingleManager extends Manager { if (jingle.getAction() == JingleAction.session_initiate) { - JingleContent content = jingle.getContents().get(0); - JingleContentDescription description = content.getDescription(); + JingleContentElement content = jingle.getContents().get(0); + JingleContentDescriptionElement description = content.getDescription(); JingleHandler jingleDescriptionHandler = descriptionHandlers.get( description.getNamespace()); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleSession.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleSession.java index 5644d87b9..618f9dbce 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleSession.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleSession.java @@ -27,8 +27,8 @@ import org.jivesoftware.smack.SmackException; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.packet.IQ; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleContent; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleElement; import org.jivesoftware.smackx.jingle.transports.JingleTransportSession; import org.jxmpp.jid.FullJid; @@ -45,7 +45,7 @@ public abstract class JingleSession implements JingleSessionHandler { protected final String sid; - protected final List contents = new ArrayList<>(); + protected final List contents = new ArrayList<>(); protected ArrayList> queued = new ArrayList<>(); protected JingleTransportSession transportSession; @@ -54,7 +54,7 @@ public abstract class JingleSession implements JingleSessionHandler { this(initiator, responder, role, sid, null); } - public JingleSession(FullJid initiator, FullJid responder, Role role, String sid, List contents) { + public JingleSession(FullJid initiator, FullJid responder, Role role, String sid, List contents) { if (role == Role.initiator) { this.local = initiator; this.remote = responder; @@ -102,7 +102,7 @@ public abstract class JingleSession implements JingleSessionHandler { return new FullJidAndSessionId(remote, sid); } - public List getContents() { + public List getContents() { return contents; } @@ -135,7 +135,7 @@ public abstract class JingleSession implements JingleSessionHandler { } @Override - public IQ handleJingleSessionRequest(Jingle jingle) { + public IQ handleJingleSessionRequest(JingleElement jingle) { try { switch (jingle.getAction()) { case content_accept: @@ -177,61 +177,61 @@ public abstract class JingleSession implements JingleSessionHandler { } } - protected IQ handleSessionInitiate(Jingle sessionInitiate) throws InterruptedException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, SmackException.NoResponseException { + protected IQ handleSessionInitiate(JingleElement sessionInitiate) throws InterruptedException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, SmackException.NoResponseException { return IQ.createResultIQ(sessionInitiate); } - protected IQ handleSessionTerminate(Jingle sessionTerminate) { + protected IQ handleSessionTerminate(JingleElement sessionTerminate) { return IQ.createResultIQ(sessionTerminate); } - protected IQ handleSessionInfo(Jingle sessionInfo) { + protected IQ handleSessionInfo(JingleElement sessionInfo) { return IQ.createResultIQ(sessionInfo); } - protected IQ handleSessionAccept(Jingle sessionAccept) throws SmackException.NotConnectedException, InterruptedException { + protected IQ handleSessionAccept(JingleElement sessionAccept) throws SmackException.NotConnectedException, InterruptedException { return IQ.createResultIQ(sessionAccept); } - protected IQ handleContentAdd(Jingle contentAdd) { + protected IQ handleContentAdd(JingleElement contentAdd) { return IQ.createResultIQ(contentAdd); } - protected IQ handleContentAccept(Jingle contentAccept) { + protected IQ handleContentAccept(JingleElement contentAccept) { return IQ.createResultIQ(contentAccept); } - protected IQ handleContentModify(Jingle contentModify) { + protected IQ handleContentModify(JingleElement contentModify) { return IQ.createResultIQ(contentModify); } - protected IQ handleContentReject(Jingle contentReject) { + protected IQ handleContentReject(JingleElement contentReject) { return IQ.createResultIQ(contentReject); } - protected IQ handleContentRemove(Jingle contentRemove) { + protected IQ handleContentRemove(JingleElement contentRemove) { return IQ.createResultIQ(contentRemove); } - protected IQ handleDescriptionInfo(Jingle descriptionInfo) { + protected IQ handleDescriptionInfo(JingleElement descriptionInfo) { return IQ.createResultIQ(descriptionInfo); } - protected IQ handleSecurityInfo(Jingle securityInfo) { + protected IQ handleSecurityInfo(JingleElement securityInfo) { return IQ.createResultIQ(securityInfo); } - protected IQ handleTransportAccept(Jingle transportAccept) throws SmackException.NotConnectedException, InterruptedException { + protected IQ handleTransportAccept(JingleElement transportAccept) throws SmackException.NotConnectedException, InterruptedException { return IQ.createResultIQ(transportAccept); } - protected IQ handleTransportReplace(Jingle transportReplace) + protected IQ handleTransportReplace(JingleElement transportReplace) throws InterruptedException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, SmackException.NoResponseException { return IQ.createResultIQ(transportReplace); } - protected IQ handleTransportReject(Jingle transportReject) { + protected IQ handleTransportReject(JingleElement transportReject) { return IQ.createResultIQ(transportReject); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleSessionHandler.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleSessionHandler.java index a57ede3ff..8947bf59b 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleSessionHandler.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleSessionHandler.java @@ -17,10 +17,10 @@ package org.jivesoftware.smackx.jingle; import org.jivesoftware.smack.packet.IQ; -import org.jivesoftware.smackx.jingle.element.Jingle; +import org.jivesoftware.smackx.jingle3.element.JingleElement; public interface JingleSessionHandler { - IQ handleJingleSessionRequest(Jingle jingle); + IQ handleJingleSessionRequest(JingleElement jingle); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleTransportMethodManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleTransportMethodManager.java index 5ffa6de29..a5f29e5b9 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleTransportMethodManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleTransportMethodManager.java @@ -23,12 +23,12 @@ import java.util.WeakHashMap; import org.jivesoftware.smack.Manager; import org.jivesoftware.smack.XMPPConnection; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleContent; -import org.jivesoftware.smackx.jingle.element.JingleContentTransport; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentTransportElement; import org.jivesoftware.smackx.jingle.transports.JingleTransportManager; import org.jivesoftware.smackx.jingle.transports.jingle_ibb.element.JingleIBBTransport; -import org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransport; +import org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransport; /** * Manager where TransportMethods are registered. @@ -73,17 +73,17 @@ public final class JingleTransportMethodManager extends Manager { return transportManagers.get(namespace); } - public static JingleTransportManager getTransportManager(XMPPConnection connection, Jingle request) { + public static JingleTransportManager getTransportManager(XMPPConnection connection, JingleElement request) { return getInstanceFor(connection).getTransportManager(request); } - public JingleTransportManager getTransportManager(Jingle request) { + public JingleTransportManager getTransportManager(JingleElement request) { - JingleContent content = request.getContents().get(0); + JingleContentElement content = request.getContents().get(0); if (content == null) { return null; } - JingleContentTransport transport = content.getTransport(); + JingleContentTransportElement transport = content.getTransport(); if (transport == null) { return null; } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleUtil.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleUtil.java index e3001601e..e114e4ac7 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleUtil.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleUtil.java @@ -22,13 +22,12 @@ import java.util.List; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.packet.XMPPError; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleAction; -import org.jivesoftware.smackx.jingle.element.JingleContent; -import org.jivesoftware.smackx.jingle.element.JingleContentDescription; -import org.jivesoftware.smackx.jingle.element.JingleContentTransport; -import org.jivesoftware.smackx.jingle.element.JingleError; -import org.jivesoftware.smackx.jingle.element.JingleReason; +import org.jivesoftware.smackx.jingle3.element.JingleAction; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentTransportElement; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleErrorElement; +import org.jivesoftware.smackx.jingle3.element.JingleReasonElement; import org.jxmpp.jid.FullJid; @@ -51,26 +50,26 @@ public class JingleUtil { * @param content content * @return session-initiate stanza. */ - public Jingle createSessionInitiate(FullJid recipient, - String sessionId, - JingleContent content) { + public JingleElement createSessionInitiate(FullJid recipient, + String sessionId, + JingleContentElement content) { return createSessionInitiate(recipient, sessionId, Collections.singletonList(content)); } - public Jingle createSessionInitiate(FullJid recipient, - String sessionId, - List contents) { + public JingleElement createSessionInitiate(FullJid recipient, + String sessionId, + List contents) { - Jingle.Builder builder = Jingle.getBuilder(); + JingleElement.Builder builder = JingleElement.getBuilder(); builder.setAction(JingleAction.session_initiate) .setSessionId(sessionId) .setInitiator(connection.getUser()); - for (JingleContent content : contents) { + for (JingleContentElement content : contents) { builder.addJingleContent(content); } - Jingle jingle = builder.build(); + JingleElement jingle = builder.build(); jingle.setFrom(connection.getUser()); jingle.setTo(recipient); @@ -85,120 +84,31 @@ public class JingleUtil { * @param content content * @return session-accept stanza. */ - public Jingle createSessionAccept(FullJid recipient, - String sessionId, - JingleContent content) { + public JingleElement createSessionAccept(FullJid recipient, + String sessionId, + JingleContentElement content) { return createSessionAccept(recipient, sessionId, Collections.singletonList(content)); } - public Jingle createSessionAccept(FullJid recipient, - String sessionId, - List contents) { - Jingle.Builder jb = Jingle.getBuilder(); + public JingleElement createSessionAccept(FullJid recipient, + String sessionId, + List contents) { + JingleElement.Builder jb = JingleElement.getBuilder(); jb.setResponder(connection.getUser()) .setAction(JingleAction.session_accept) .setSessionId(sessionId); - for (JingleContent content : contents) { + for (JingleContentElement content : contents) { jb.addJingleContent(content); } - Jingle jingle = jb.build(); + JingleElement jingle = jb.build(); jingle.setTo(recipient); jingle.setFrom(connection.getUser()); return jingle; } - /** - * Create a session-terminate stanza. - * XEP-0166 §6.7. - * @param recipient recipient of the stanza. - * @param sessionId sessionId. - * @param reason reason of termination. - * @return session-terminate stanza. - */ - public Jingle createSessionTerminate(FullJid recipient, String sessionId, JingleReason reason) { - Jingle.Builder jb = Jingle.getBuilder(); - jb.setAction(JingleAction.session_terminate) - .setSessionId(sessionId) - .setReason(reason); - - Jingle jingle = jb.build(); - jingle.setFrom(connection.getUser()); - jingle.setTo(recipient); - - return jingle; - } - - /** - * Create a session-terminate stanza. - * XEP-0166 §6.7. - * @param recipient recipient of the stanza. - * @param sessionId sessionId. - * @param reason reason of termination. - * @return session-terminate stanza. - */ - public Jingle createSessionTerminate(FullJid recipient, String sessionId, JingleReason.Reason reason) { - return createSessionTerminate(recipient, sessionId, new JingleReason(reason)); - } - - /** - * Terminate the session by declining. - * XEP-0166 Example 21. - * @param recipient recipient of the stanza. - * @param sessionId sessionId. - * @return session-terminate stanza. - */ - public Jingle createSessionTerminateDecline(FullJid recipient, String sessionId) { - return createSessionTerminate(recipient, sessionId, JingleReason.Reason.decline); - } - - /** - * Terminate the session due to success. - * XEP-0166 Example 19. - * @param recipient recipient of the stanza. - * @param sessionId sessionId. - * @return session-terminate stanza. - */ - public Jingle createSessionTerminateSuccess(FullJid recipient, String sessionId) { - return createSessionTerminate(recipient, sessionId, JingleReason.Reason.success); - } - - /** - * Terminate the session due to being busy. - * XEP-0166 Example 20. - * @param recipient recipient of the stanza. - * @param sessionId sessionId. - * @return session-terminate stanza. - */ - public Jingle createSessionTerminateBusy(FullJid recipient, String sessionId) { - return createSessionTerminate(recipient, sessionId, JingleReason.Reason.busy); - } - - /** - * Terminate the session due to the existence of an alternative session. - * XEP-0166 Example 22. - * @param recipient recipient of the stanza. - * @param sessionId sessionId. - * @param altSessionId id of the alternative session. - * @return session-terminate stanza. - */ - public Jingle createSessionTerminateAlternativeSession(FullJid recipient, String sessionId, String altSessionId) { - return createSessionTerminate(recipient, sessionId, JingleReason.AlternativeSession(altSessionId)); - } - - /** - * Cancel all active transfers of the session. - * XEP-0234 Example 9. - * @param recipient recipient of the stanza. - * @param sessionId sessionId. - * @return session-terminate stanza. - */ - public Jingle createSessionTerminateCancel(FullJid recipient, String sessionId) { - return createSessionTerminate(recipient, sessionId, JingleReason.Reason.cancel); - } - /** * Cancel a single contents transfer. * XEP-0234 Example 10. @@ -208,81 +118,22 @@ public class JingleUtil { * @param contentName name of the content. * @return session-terminate stanza. */ - public Jingle createSessionTerminateContentCancel(FullJid recipient, String sessionId, - JingleContent.Creator contentCreator, String contentName) { - Jingle.Builder jb = Jingle.getBuilder(); + public JingleElement createSessionTerminateContentCancel(FullJid recipient, String sessionId, + JingleContentElement.Creator contentCreator, String contentName) { + JingleElement.Builder jb = JingleElement.getBuilder(); jb.setAction(JingleAction.session_terminate) - .setSessionId(sessionId).setReason(JingleReason.Reason.cancel); + .setSessionId(sessionId).setReason(JingleReasonElement.Reason.cancel); - JingleContent.Builder cb = JingleContent.getBuilder(); + JingleContentElement.Builder cb = JingleContentElement.getBuilder(); cb.setCreator(contentCreator).setName(contentName); - Jingle jingle = jb.addJingleContent(cb.build()).build(); + JingleElement jingle = jb.addJingleContent(cb.build()).build(); jingle.setFrom(connection.getUser()); jingle.setTo(recipient); return jingle; } - /** - * Terminate the session due to unsupported transport methods. - * XEP-0166 Example 23. - * @param recipient recipient of the stanza. - * @param sessionId sessionId. - * @return session-terminate stanza. - */ - public Jingle createSessionTerminateUnsupportedTransports(FullJid recipient, String sessionId) { - return createSessionTerminate(recipient, sessionId, JingleReason.Reason.unsupported_transports); - } - - /** - * Terminate the session due to failed transports. - * XEP-0166 Example 24. - * @param recipient recipient of the stanza. - * @param sessionId sessionId. - * @return session-terminate stanza. - */ - public Jingle createSessionTerminateFailedTransport(FullJid recipient, String sessionId) { - return createSessionTerminate(recipient, sessionId, JingleReason.Reason.failed_transport); - } - - /** - * Terminate the session due to unsupported applications. - * XEP-0166 Example 25. - * @param recipient recipient of the stanza. - * @param sessionId sessionId. - * @return session-terminate stanza. - */ - public Jingle createSessionTerminateUnsupportedApplications(FullJid recipient, String sessionId) { - return createSessionTerminate(recipient, sessionId, JingleReason.Reason.unsupported_applications); - } - - /** - * Terminate the session due to failed application. - * XEP-0166 Example 26. - * @param recipient recipient of the stanza. - * @param sessionId sessionId. - * @return session-terminate stanza. - */ - public Jingle createSessionTerminateFailedApplication(FullJid recipient, String sessionId) { - return createSessionTerminate(recipient, sessionId, JingleReason.Reason.failed_application); - } - - /** - * Terminate session due to incompatible parameters. - * XEP-0166 Example 27. - * @param recipient recipient of the stanza - * @param sessionId sessionId - * @return session-terminate stanza - */ - public Jingle createSessionTerminateIncompatibleParameters(FullJid recipient, String sessionId) { - return createSessionTerminate(recipient, sessionId, JingleReason.Reason.incompatible_parameters); - } - - public IQ sendContentRejectFileNotAvailable(FullJid recipient, String sessionId, JingleContentDescription description) { - return null; //TODO Later - } - /** * Create a session ping stanza. * XEP-0166 Example 32. @@ -290,12 +141,12 @@ public class JingleUtil { * @param sessionId id of the session * @return ping stanza */ - public Jingle createSessionPing(FullJid recipient, String sessionId) { - Jingle.Builder jb = Jingle.getBuilder(); + public JingleElement createSessionPing(FullJid recipient, String sessionId) { + JingleElement.Builder jb = JingleElement.getBuilder(); jb.setSessionId(sessionId) .setAction(JingleAction.session_info); - Jingle jingle = jb.build(); + JingleElement jingle = jb.build(); jingle.setFrom(connection.getUser()); jingle.setTo(recipient); @@ -308,7 +159,7 @@ public class JingleUtil { * @param jingle stanza that was received * @return acknowledgement */ - public IQ createAck(Jingle jingle) { + public IQ createAck(JingleElement jingle) { return IQ.createResultIQ(jingle); } @@ -323,17 +174,17 @@ public class JingleUtil { * @param transport proposed transport * @return transport-replace stanza */ - public Jingle createTransportReplace(FullJid recipient, FullJid initiator, String sessionId, - JingleContent.Creator contentCreator, String contentName, - JingleContentTransport transport) { - Jingle.Builder jb = Jingle.getBuilder(); + public JingleElement createTransportReplace(FullJid recipient, FullJid initiator, String sessionId, + JingleContentElement.Creator contentCreator, String contentName, + JingleContentTransportElement transport) { + JingleElement.Builder jb = JingleElement.getBuilder(); jb.setInitiator(initiator) .setSessionId(sessionId) .setAction(JingleAction.transport_replace); - JingleContent.Builder cb = JingleContent.getBuilder(); + JingleContentElement.Builder cb = JingleContentElement.getBuilder(); cb.setName(contentName).setCreator(contentCreator).setTransport(transport); - Jingle jingle = jb.addJingleContent(cb.build()).build(); + JingleElement jingle = jb.addJingleContent(cb.build()).build(); jingle.setTo(recipient); jingle.setFrom(connection.getUser()); @@ -352,18 +203,18 @@ public class JingleUtil { * @param transport transport to accept * @return transport-accept stanza */ - public Jingle createTransportAccept(FullJid recipient, FullJid initiator, String sessionId, - JingleContent.Creator contentCreator, String contentName, - JingleContentTransport transport) { - Jingle.Builder jb = Jingle.getBuilder(); + public JingleElement createTransportAccept(FullJid recipient, FullJid initiator, String sessionId, + JingleContentElement.Creator contentCreator, String contentName, + JingleContentTransportElement transport) { + JingleElement.Builder jb = JingleElement.getBuilder(); jb.setAction(JingleAction.transport_accept) .setInitiator(initiator) .setSessionId(sessionId); - JingleContent.Builder cb = JingleContent.getBuilder(); + JingleContentElement.Builder cb = JingleContentElement.getBuilder(); cb.setCreator(contentCreator).setName(contentName).setTransport(transport); - Jingle jingle = jb.addJingleContent(cb.build()).build(); + JingleElement jingle = jb.addJingleContent(cb.build()).build(); jingle.setTo(recipient); jingle.setFrom(connection.getUser()); @@ -381,18 +232,18 @@ public class JingleUtil { * @param transport transport to reject * @return transport-reject stanza */ - public Jingle createTransportReject(FullJid recipient, FullJid initiator, String sessionId, - JingleContent.Creator contentCreator, String contentName, - JingleContentTransport transport) { - Jingle.Builder jb = Jingle.getBuilder(); + public JingleElement createTransportReject(FullJid recipient, FullJid initiator, String sessionId, + JingleContentElement.Creator contentCreator, String contentName, + JingleContentTransportElement transport) { + JingleElement.Builder jb = JingleElement.getBuilder(); jb.setAction(JingleAction.transport_reject) .setInitiator(initiator) .setSessionId(sessionId); - JingleContent.Builder cb = JingleContent.getBuilder(); + JingleContentElement.Builder cb = JingleContentElement.getBuilder(); cb.setCreator(contentCreator).setName(contentName).setTransport(transport); - Jingle jingle = jb.addJingleContent(cb.build()).build(); + JingleElement jingle = jb.addJingleContent(cb.build()).build(); jingle.setTo(recipient); jingle.setFrom(connection.getUser()); @@ -409,10 +260,10 @@ public class JingleUtil { * @param request request with unknown sessionId. * @return error stanza. */ - public IQ createErrorUnknownSession(Jingle request) { + public IQ createErrorUnknownSession(JingleElement request) { XMPPError.Builder error = XMPPError.getBuilder(); error.setCondition(XMPPError.Condition.item_not_found) - .addExtension(JingleError.UNKNOWN_SESSION); + .addExtension(JingleErrorElement.UNKNOWN_SESSION); return IQ.createErrorResponse(request, error); } @@ -422,7 +273,7 @@ public class JingleUtil { * @param request request from unknown initiator. * @return error stanza. */ - public IQ createErrorUnknownInitiator(Jingle request) { + public IQ createErrorUnknownInitiator(JingleElement request) { XMPPError.Builder b = XMPPError.getBuilder().setType(XMPPError.Type.CANCEL).setCondition(XMPPError.Condition.service_unavailable); return IQ.createErrorResponse(request, b); } @@ -433,10 +284,10 @@ public class JingleUtil { * @param request request with unsupported info. * @return error stanza. */ - public IQ createErrorUnsupportedInfo(Jingle request) { + public IQ createErrorUnsupportedInfo(JingleElement request) { XMPPError.Builder error = XMPPError.getBuilder(); error.setCondition(XMPPError.Condition.feature_not_implemented) - .addExtension(JingleError.UNSUPPORTED_INFO).setType(XMPPError.Type.MODIFY); + .addExtension(JingleErrorElement.UNSUPPORTED_INFO).setType(XMPPError.Type.MODIFY); return IQ.createErrorResponse(request, error); } @@ -446,10 +297,10 @@ public class JingleUtil { * @param request tie-breaking request * @return error stanza */ - public IQ createErrorTieBreak(Jingle request) { + public IQ createErrorTieBreak(JingleElement request) { XMPPError.Builder error = XMPPError.getBuilder(); error.setCondition(XMPPError.Condition.conflict) - .addExtension(JingleError.TIE_BREAK); + .addExtension(JingleErrorElement.TIE_BREAK); return IQ.createErrorResponse(request, error); } @@ -459,10 +310,10 @@ public class JingleUtil { * @param request request out of order. * @return error stanza. */ - public IQ createErrorOutOfOrder(Jingle request) { + public IQ createErrorOutOfOrder(JingleElement request) { XMPPError.Builder error = XMPPError.getBuilder(); error.setCondition(XMPPError.Condition.unexpected_request) - .addExtension(JingleError.OUT_OF_ORDER); + .addExtension(JingleErrorElement.OUT_OF_ORDER); return IQ.createErrorResponse(request, error); } @@ -472,7 +323,7 @@ public class JingleUtil { * @param request malformed request * @return error stanza. */ - public IQ createErrorMalformedRequest(Jingle request) { + public IQ createErrorMalformedRequest(JingleElement request) { XMPPError.Builder error = XMPPError.getBuilder(); error.setType(XMPPError.Type.CANCEL); error.setCondition(XMPPError.Condition.bad_request); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/Jingle.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/Jingle.java deleted file mode 100644 index 3106563d8..000000000 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/Jingle.java +++ /dev/null @@ -1,215 +0,0 @@ -/** - * - * Copyright 2003-2007 Jive Software, 2014-2017 Florian Schmaus - * - * 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.smackx.jingle.element; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.jivesoftware.smack.packet.IQ; -import org.jivesoftware.smack.util.Objects; -import org.jivesoftware.smack.util.StringUtils; - -import org.jxmpp.jid.FullJid; - -/** - * The Jingle element. - * - * @author Florian Schmaus - */ -public final class Jingle extends IQ { - - public static final String NAMESPACE = "urn:xmpp:jingle:1"; - - public static final String ACTION_ATTRIBUTE_NAME = "action"; - - public static final String INITIATOR_ATTRIBUTE_NAME = "initiator"; - - public static final String RESPONDER_ATTRIBUTE_NAME = "responder"; - - public static final String SESSION_ID_ATTRIBUTE_NAME = "sid"; - - public static final String ELEMENT = "jingle"; - - /** - * The session ID related to this session. The session ID is a unique identifier generated by the initiator. This - * should match the XML Nmtoken production so that XML character escaping is not needed for characters such as &. - */ - private final String sessionId; - - /** - * The jingle action. This attribute is required. - */ - private final JingleAction action; - - private final FullJid initiator; - - private final FullJid responder; - - private final JingleReason reason; - - private final List contents; - - private Jingle(String sessionId, JingleAction action, FullJid initiator, FullJid responder, JingleReason reason, - List contents) { - super(ELEMENT, NAMESPACE); - this.sessionId = StringUtils.requireNotNullOrEmpty(sessionId, "Jingle session ID must not be null"); - this.action = Objects.requireNonNull(action, "Jingle action must not be null"); - this.initiator = initiator; - this.responder = responder; - this.reason = reason; - if (contents != null) { - this.contents = Collections.unmodifiableList(contents); - } - else { - this.contents = Collections.emptyList(); - } - setType(Type.set); - } - - /** - * Get the initiator. The initiator will be the full JID of the entity that has initiated the flow (which may be - * different to the "from" address in the IQ) - * - * @return the initiator - */ - public FullJid getInitiator() { - return initiator; - } - - /** - * Get the responder. The responder is the full JID of the entity that has replied to the initiation (which may be - * different to the "to" addresss in the IQ). - * - * @return the responder - */ - public FullJid getResponder() { - return responder; - } - - /** - * Returns the session ID related to the session. The session ID is a unique identifier generated by the initiator. - * This should match the XML Nmtoken production so that XML character escaping is not needed for characters such as - * &. - * - * @return Returns the session ID related to the session. - */ - public String getSid() { - return sessionId; - } - - /** - * Get the action specified in the jingle IQ. - * - * @return the action. - */ - public JingleAction getAction() { - return action; - } - - public JingleReason getReason() { - return reason; - } - - /** - * Get a List of the contents. - * - * @return the contents. - */ - public List getContents() { - return contents; - } - - @Override - protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) { - xml.optAttribute(INITIATOR_ATTRIBUTE_NAME, getInitiator()); - xml.optAttribute(RESPONDER_ATTRIBUTE_NAME, getResponder()); - xml.optAttribute(ACTION_ATTRIBUTE_NAME, getAction()); - xml.optAttribute(SESSION_ID_ATTRIBUTE_NAME, getSid()); - xml.rightAngleBracket(); - - xml.optElement(reason); - - xml.append(contents); - - return xml; - } - - public static Builder getBuilder() { - return new Builder(); - } - - public static final class Builder { - private String sid; - - private JingleAction action; - - private FullJid initiator; - - private FullJid responder; - - private JingleReason reason; - - private List contents; - - private Builder() { - } - - public Builder setSessionId(String sessionId) { - this.sid = sessionId; - return this; - } - - public Builder setAction(JingleAction action) { - this.action = action; - return this; - } - - public Builder setInitiator(FullJid initator) { - this.initiator = initator; - return this; - } - - public Builder setResponder(FullJid responder) { - this.responder = responder; - return this; - } - - public Builder addJingleContent(JingleContent content) { - if (contents == null) { - contents = new ArrayList<>(1); - } - contents.add(content); - return this; - } - - public Builder setReason(JingleReason.Reason reason) { - this.reason = new JingleReason(reason); - return this; - } - - public Builder setReason(JingleReason reason) { - this.reason = reason; - return this; - } - - public Jingle build() { - return new Jingle(sid, action, initiator, responder, reason, contents); - } - } -} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/JingleTransportInitiationCallback.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/JingleTransportInitiationCallback.java deleted file mode 100644 index 79932c1e0..000000000 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/JingleTransportInitiationCallback.java +++ /dev/null @@ -1,30 +0,0 @@ -/** - * - * Copyright 2017 Paul Schaub - * - * 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.smackx.jingle.transports; - -import org.jivesoftware.smackx.bytestreams.BytestreamSession; - -/** - * Callback for bytestream session creation of TransportManagers. - */ -public interface JingleTransportInitiationCallback { - - void onSessionInitiated(BytestreamSession bytestreamSession); - - void onException(Exception e); - -} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/JingleTransportInitiationException.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/JingleTransportInitiationException.java deleted file mode 100644 index 8971d2821..000000000 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/JingleTransportInitiationException.java +++ /dev/null @@ -1,33 +0,0 @@ -/** - * - * Copyright 2017 Paul Schaub - * - * 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.smackx.jingle.transports; - -/** - * Created by vanitas on 25.06.17. - */ -public abstract class JingleTransportInitiationException extends Exception { - private static final long serialVersionUID = 1L; - - - public static class ProxyError extends JingleTransportInitiationException { - private static final long serialVersionUID = 1L; - } - - public static class CandidateError extends JingleTransportInitiationException { - private static final long serialVersionUID = 1L; - } -} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/JingleTransportManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/JingleTransportManager.java deleted file mode 100644 index 75d8797b0..000000000 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/JingleTransportManager.java +++ /dev/null @@ -1,74 +0,0 @@ -/** - * - * Copyright 2017 Paul Schaub - * - * 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.smackx.jingle.transports; - -import org.jivesoftware.smack.ConnectionListener; -import org.jivesoftware.smack.XMPPConnection; -import org.jivesoftware.smackx.jingle.JingleSession; -import org.jivesoftware.smackx.jingle.element.JingleContentTransport; - -/** - * Manager for a JingleTransport method. - * @param JingleContentTransport. - */ -public abstract class JingleTransportManager implements ConnectionListener { - - private final XMPPConnection connection; - - public JingleTransportManager(XMPPConnection connection) { - this.connection = connection; - connection.addConnectionListener(this); - } - - public XMPPConnection getConnection() { - return connection; - } - - public abstract String getNamespace(); - - public abstract JingleTransportSession transportSession(JingleSession jingleSession); - - - @Override - public void connected(XMPPConnection connection) { - } - - @Override - public void connectionClosed() { - - } - - @Override - public void connectionClosedOnError(Exception e) { - - } - - @Override - public void reconnectionSuccessful() { - - } - - @Override - public void reconnectingIn(int seconds) { - - } - - @Override - public void reconnectionFailed(Exception e) { - - } -} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/JingleTransportSession.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/JingleTransportSession.java deleted file mode 100644 index 0776bc6b2..000000000 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/JingleTransportSession.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * - * Copyright 2017 Paul Schaub - * - * 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.smackx.jingle.transports; - -import org.jivesoftware.smack.packet.IQ; -import org.jivesoftware.smackx.jingle.JingleSession; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleContent; -import org.jivesoftware.smackx.jingle.element.JingleContentTransport; - -/** - * Created by vanitas on 20.06.17. - */ -public abstract class JingleTransportSession { - protected final JingleSession jingleSession; - protected T ourProposal, theirProposal; - - public JingleTransportSession(JingleSession session) { - this.jingleSession = session; - } - - public abstract T createTransport(); - - public void processJingle(Jingle jingle) { - if (jingle.getContents().size() == 0) { - return; - } - - JingleContent content = jingle.getContents().get(0); - JingleContentTransport t = content.getTransport(); - - if (t != null && t.getNamespace().equals(getNamespace())) { - setTheirProposal(t); - } - } - - public abstract void setTheirProposal(JingleContentTransport transport); - - public abstract void initiateOutgoingSession(JingleTransportInitiationCallback callback); - - public abstract void initiateIncomingSession(JingleTransportInitiationCallback callback); - - public abstract String getNamespace(); - - public abstract IQ handleTransportInfo(Jingle transportInfo); - - public abstract JingleTransportManager transportManager(); -} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/Callback.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/Callback.java new file mode 100644 index 000000000..1dc635a15 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/Callback.java @@ -0,0 +1,15 @@ +package org.jivesoftware.smackx.jingle3; + +import org.jivesoftware.smackx.jingle3.internal.Content; + +/** + * Created by vanitas on 18.07.17. + */ +public abstract class Callback { + + private final Content content; + + public Callback(Content content) { + this.content = content; + } +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleDescriptionManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleDescriptionManager.java new file mode 100644 index 000000000..7a9615b7d --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleDescriptionManager.java @@ -0,0 +1,15 @@ +package org.jivesoftware.smackx.jingle3; + +import org.jivesoftware.smackx.jingle3.callbacks.ContentAddCallback; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.internal.Content; + +/** + * Created by vanitas on 19.07.17. + */ +public interface JingleDescriptionManager { + + String getNamespace(); + + JingleElement notifyContentListeners(Content content, ContentAddCallback callback); +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleExtensionManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleExtensionManager.java new file mode 100644 index 000000000..92ecb8e1d --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleExtensionManager.java @@ -0,0 +1,119 @@ +package org.jivesoftware.smackx.jingle3; + +import java.util.WeakHashMap; + +import org.jivesoftware.smack.Manager; +import org.jivesoftware.smack.XMPPConnection; +import org.jivesoftware.smackx.jingle3.adapter.JingleDescriptionAdapter; +import org.jivesoftware.smackx.jingle3.adapter.JingleSecurityAdapter; +import org.jivesoftware.smackx.jingle3.adapter.JingleTransportAdapter; +import org.jivesoftware.smackx.jingle3.provider.JingleContentDescriptionProvider; +import org.jivesoftware.smackx.jingle3.provider.JingleContentSecurityProvider; +import org.jivesoftware.smackx.jingle3.provider.JingleContentTransportProvider; + +/** + * Created by vanitas on 18.07.17. + */ +public final class JingleExtensionManager extends Manager { + + private static final WeakHashMap INSTANCES = new WeakHashMap<>(); + + private static final WeakHashMap> descriptionProviders = new WeakHashMap<>(); + private static final WeakHashMap> transportProviders = new WeakHashMap<>(); + private static final WeakHashMap> securityProviders = new WeakHashMap<>(); + + private static final WeakHashMap> descriptionAdapters = new WeakHashMap<>(); + private static final WeakHashMap> transportAdapters = new WeakHashMap<>(); + private static final WeakHashMap> securityAdapters = new WeakHashMap<>(); + + public final WeakHashMap descriptionManagers = new WeakHashMap<>(); + public final WeakHashMap transportManagers = new WeakHashMap<>(); + public final WeakHashMap securityManagers = new WeakHashMap<>(); + + private JingleExtensionManager(XMPPConnection connection) { + super(connection); + } + + public static JingleExtensionManager getInstanceFor(XMPPConnection connection) { + JingleExtensionManager manager = INSTANCES.get(connection); + + if (manager == null) { + manager = new JingleExtensionManager(connection); + INSTANCES.put(connection, manager); + } + + return manager; + } + + public static void registerDescriptionProvider(JingleContentDescriptionProvider provider) { + descriptionProviders.put(provider.getNamespace(), provider); + } + + public static JingleContentDescriptionProvider getDescriptionProvider(String namespace) { + return descriptionProviders.get(namespace); + } + + public static void registerTransportProvider(JingleContentTransportProvider provider) { + transportProviders.put(provider.getNamespace(), provider); + } + + public static JingleContentTransportProvider getTransportProvider(String namespace) { + return transportProviders.get(namespace); + } + + public static void registerSecurityProvider(JingleContentSecurityProvider provider) { + securityProviders.put(provider.getNamespace(), provider); + } + + public static JingleContentSecurityProvider getSecurityProvider(String namespace) { + return securityProviders.get(namespace); + } + + public static void addJingleDescriptionAdapter(JingleDescriptionAdapter adapter) { + descriptionAdapters.put(adapter.getNamespace(), adapter); + } + + public static void addJingleTransportAdapter(JingleTransportAdapter adapter) { + transportAdapters.put(adapter.getNamespace(), adapter); + } + + public static void addJingleSecurityAdapter(JingleSecurityAdapter adapter) { + securityAdapters.put(adapter.getNamespace(), adapter); + } + + public static JingleDescriptionAdapter getJingleDescriptionAdapter(String namespace) { + return descriptionAdapters.get(namespace); + } + + public static JingleTransportAdapter getJingleTransportAdapter(String namespace) { + return transportAdapters.get(namespace); + } + + public static JingleSecurityAdapter getJingleSecurityAdapter(String namespace) { + return securityAdapters.get(namespace); + } + + public void addJingleDescriptionManager(JingleDescriptionManager manager) { + descriptionManagers.put(manager.getNamespace(), manager); + } + + public JingleDescriptionManager getDescriptionManager(String namespace) { + return descriptionManagers.get(namespace); + } + + public void addJingleTransportManager(JingleTransportManager manager) { + transportManagers.put(manager.getNamespace(), manager); + } + + public JingleTransportManager getTransportManager(String namespace) { + return transportManagers.get(namespace); + } + + public void addJingleSecurityManager(JingleSecurityManager manager) { + securityManagers.put(manager.getNamespace(), manager); + } + + public JingleSecurityManager getSecurityManager(String namespace) { + return securityManagers.get(namespace); + } +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleManager.java new file mode 100644 index 000000000..ed18f50f8 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleManager.java @@ -0,0 +1,88 @@ +package org.jivesoftware.smackx.jingle3; + +import java.util.WeakHashMap; +import java.util.concurrent.ConcurrentHashMap; + +import org.jivesoftware.smack.Manager; +import org.jivesoftware.smack.XMPPConnection; +import org.jivesoftware.smack.iqrequest.AbstractIqRequestHandler; +import org.jivesoftware.smack.iqrequest.IQRequestHandler; +import org.jivesoftware.smack.packet.IQ; +import org.jivesoftware.smackx.jingle.FullJidAndSessionId; +import org.jivesoftware.smackx.jingle3.element.JingleAction; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleReasonElement; +import org.jivesoftware.smackx.jingle3.exception.UnsupportedDescriptionException; +import org.jivesoftware.smackx.jingle3.exception.UnsupportedSecurityException; +import org.jivesoftware.smackx.jingle3.exception.UnsupportedTransportException; +import org.jivesoftware.smackx.jingle3.internal.Session; + +import org.jxmpp.jid.FullJid; + +/** + * Created by vanitas on 18.07.17. + */ +public class JingleManager extends Manager { + private static final WeakHashMap INSTANCES = new WeakHashMap<>(); + + private final ConcurrentHashMap jingleSessions = new ConcurrentHashMap<>(); + + private JingleManager(XMPPConnection connection) { + super(connection); + + connection.registerIQRequestHandler( + new AbstractIqRequestHandler(JingleElement.ELEMENT, JingleElement.NAMESPACE, IQ.Type.set, IQRequestHandler.Mode.async) { + @Override + public IQ handleIQRequest(IQ iqRequest) { + final JingleElement jingle = (JingleElement) iqRequest; + + FullJid fullFrom = jingle.getFrom().asFullJidOrThrow(); + String sid = jingle.getSid(); + FullJidAndSessionId fullJidAndSessionId = new FullJidAndSessionId(fullFrom, sid); + + Session session = jingleSessions.get(fullJidAndSessionId); + + // We have not seen this session before. + // Either it is fresh, or unknown. + if (session == null) { + + if (jingle.getAction() == JingleAction.session_initiate) { + //fresh. phew! + try { + session = Session.fromSessionInitiate(JingleManager.this, jingle); + } catch (UnsupportedDescriptionException e) { + return JingleElement.createSessionTerminate(jingle.getFrom().asFullJidOrThrow(), + jingle.getSid(), JingleReasonElement.Reason.unsupported_applications); + } catch (UnsupportedTransportException e) { + return JingleElement.createSessionTerminate(jingle.getFrom().asFullJidOrThrow(), + jingle.getSid(), JingleReasonElement.Reason.unsupported_transports); + } catch (UnsupportedSecurityException e) { + e.printStackTrace(); + } + + } else { + // Unknown session. Error! + return JingleElement.createJingleErrorUnknownSession(jingle); + } + } + + return session.handleJingleRequest(jingle); + } + }); + } + + public static JingleManager getInstanceFor(XMPPConnection connection) { + JingleManager manager = INSTANCES.get(connection); + + if (manager == null) { + manager = new JingleManager(connection); + INSTANCES.put(connection, manager); + } + + return manager; + } + + public XMPPConnection getConnection() { + return connection(); + } +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleSecurityManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleSecurityManager.java new file mode 100644 index 000000000..79177cd08 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleSecurityManager.java @@ -0,0 +1,9 @@ +package org.jivesoftware.smackx.jingle3; + +/** + * Created by vanitas on 19.07.17. + */ +public interface JingleSecurityManager { + + String getNamespace(); +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleSession.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleSession.java deleted file mode 100644 index 664bc492d..000000000 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleSession.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.jivesoftware.smackx.jingle3; - -import java.util.ArrayList; - -import org.jivesoftware.smackx.jingle.element.JingleContent; - -/** - * Created by vanitas on 17.07.17. - */ -public class JingleSession { - - private final ArrayList contents -} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleSessionContent.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleSessionContent.java deleted file mode 100644 index 0791c0bf2..000000000 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleSessionContent.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.jivesoftware.smackx.jingle3; - -import org.jivesoftware.smackx.jingle.element.JingleContent; -import org.jivesoftware.smackx.jingle.element.JingleContentDescription; -import org.jivesoftware.smackx.jingle.element.JingleContentSecurity; -import org.jivesoftware.smackx.jingle.element.JingleContentTransport; - -/** - * Internal class that holds the state of a content in a modifiable form. - */ -public class JingleSessionContent { - private JingleContent.Creator creator; - private String name; - private JingleContent.Senders senders; - private JingleContentDescription description; - private JingleContentTransport transport; - private JingleContentSecurity security; - - public JingleContent.Creator getCreator() { - return creator; - } - - public String getName() { - return name; - } - - public JingleContent.Senders getSenders() { - return senders; - } - - public JingleContentDescription getDescription() { - return description; - } - - public JingleContentTransport getTransport() { - return transport; - } - - public JingleContentSecurity getSecurity() { - return security; - } -} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleTransportManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleTransportManager.java new file mode 100644 index 000000000..8a27ad81c --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/JingleTransportManager.java @@ -0,0 +1,9 @@ +package org.jivesoftware.smackx.jingle3; + +/** + * Created by vanitas on 19.07.17. + */ +public interface JingleTransportManager { + + String getNamespace(); +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/package-info.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/Role.java similarity index 77% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/package-info.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/Role.java index 9cfe634a5..908a22efc 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/package-info.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/Role.java @@ -14,8 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +package org.jivesoftware.smackx.jingle3; -/** - * Smack's API for XEP-0261: Jingle In-Band Bytestreams. - */ -package org.jivesoftware.smackx.jingle.transports; +public enum Role { + initiator, + responder, + ; +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/adapter/JingleDescriptionAdapter.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/adapter/JingleDescriptionAdapter.java new file mode 100644 index 000000000..3cab18247 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/adapter/JingleDescriptionAdapter.java @@ -0,0 +1,14 @@ +package org.jivesoftware.smackx.jingle3.adapter; + +import org.jivesoftware.smackx.jingle3.element.JingleContentDescriptionElement; +import org.jivesoftware.smackx.jingle3.internal.Description; + +/** + * Created by vanitas on 18.07.17. + */ +public interface JingleDescriptionAdapter> { + + D descriptionFromElement(JingleContentDescriptionElement element); + + String getNamespace(); +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/adapter/JingleSecurityAdapter.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/adapter/JingleSecurityAdapter.java new file mode 100644 index 000000000..84ad49fe8 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/adapter/JingleSecurityAdapter.java @@ -0,0 +1,14 @@ +package org.jivesoftware.smackx.jingle3.adapter; + +import org.jivesoftware.smackx.jingle3.element.JingleContentSecurityElement; +import org.jivesoftware.smackx.jingle3.internal.Security; + +/** + * Created by vanitas on 18.07.17. + */ +public interface JingleSecurityAdapter> { + + S securityFromElement(JingleContentSecurityElement element); + + String getNamespace(); +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/adapter/JingleTransportAdapter.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/adapter/JingleTransportAdapter.java new file mode 100644 index 000000000..39a692fde --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/adapter/JingleTransportAdapter.java @@ -0,0 +1,14 @@ +package org.jivesoftware.smackx.jingle3.adapter; + +import org.jivesoftware.smackx.jingle3.element.JingleContentTransportElement; +import org.jivesoftware.smackx.jingle3.internal.Transport; + +/** + * Created by vanitas on 18.07.17. + */ +public interface JingleTransportAdapter> { + + T transportFromElement(JingleContentTransportElement xml); + + String getNamespace(); +} \ No newline at end of file diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/callbacks/ContentAddCallback.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/callbacks/ContentAddCallback.java new file mode 100644 index 000000000..fb4759174 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/callbacks/ContentAddCallback.java @@ -0,0 +1,11 @@ +package org.jivesoftware.smackx.jingle3.callbacks; + +/** + * Created by vanitas on 19.07.17. + */ +public interface ContentAddCallback { + + void acceptContentAdd(); + + void rejectContentAdd(); +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleAction.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleAction.java similarity index 97% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleAction.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleAction.java index edd2e8033..d8be701b9 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleAction.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleAction.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.element; +package org.jivesoftware.smackx.jingle3.element; import java.util.HashMap; import java.util.Map; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescriptionChildElement.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentDescriptionChildElement.java similarity index 95% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescriptionChildElement.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentDescriptionChildElement.java index 9a262b72c..3fa7ddd06 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescriptionChildElement.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentDescriptionChildElement.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.element; +package org.jivesoftware.smackx.jingle3.element; import org.jivesoftware.smack.packet.NamedElement; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescription.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentDescriptionElement.java similarity index 88% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescription.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentDescriptionElement.java index ce50498b5..2eeb89edb 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescription.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentDescriptionElement.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.element; +package org.jivesoftware.smackx.jingle3.element; import java.util.Collections; import java.util.List; @@ -33,13 +33,13 @@ import org.jivesoftware.smack.util.XmlStringBuilder; * * */ -public abstract class JingleContentDescription implements ExtensionElement { +public abstract class JingleContentDescriptionElement implements ExtensionElement { public static final String ELEMENT = "description"; private final List payloads; - protected JingleContentDescription(List payloads) { + protected JingleContentDescriptionElement(List payloads) { if (payloads != null) { this.payloads = Collections.unmodifiableList(payloads); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContent.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentElement.java similarity index 78% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContent.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentElement.java index 9f45e2bce..bedfce5eb 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContent.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentElement.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.element; +package org.jivesoftware.smackx.jingle3.element; import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.Objects; @@ -29,7 +29,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder; * * */ -public final class JingleContent implements NamedElement { +public final class JingleContentElement implements NamedElement { public static final String ELEMENT = "content"; @@ -69,17 +69,17 @@ public final class JingleContent implements NamedElement { */ private final Senders senders; - private final JingleContentDescription description; + private final JingleContentDescriptionElement description; - private final JingleContentTransport transport; + private final JingleContentTransportElement transport; - private final JingleContentSecurity security; + private final JingleContentSecurityElement security; /** * Creates a content description.. */ - private JingleContent(Creator creator, String disposition, String name, Senders senders, - JingleContentDescription description, JingleContentTransport transport, JingleContentSecurity security) { + private JingleContentElement(Creator creator, String disposition, String name, Senders senders, + JingleContentDescriptionElement description, JingleContentTransportElement transport, JingleContentSecurityElement security) { this.creator = Objects.requireNonNull(creator, "Jingle content creator must not be null"); this.disposition = disposition; this.name = StringUtils.requireNotNullOrEmpty(name, "Jingle content name must not be null or empty"); @@ -110,7 +110,7 @@ public final class JingleContent implements NamedElement { * * @return The description. */ - public JingleContentDescription getDescription() { + public JingleContentDescriptionElement getDescription() { return description; } @@ -119,11 +119,11 @@ public final class JingleContent implements NamedElement { * * @return an Iterator for the JingleTransports in the packet. */ - public JingleContentTransport getTransport() { + public JingleContentTransportElement getTransport() { return transport; } - public JingleContentSecurity getSecurity() { + public JingleContentSecurityElement getSecurity() { return security; } @@ -162,11 +162,11 @@ public final class JingleContent implements NamedElement { private Senders senders; - private JingleContentDescription description; + private JingleContentDescriptionElement description; - private JingleContentTransport transport; + private JingleContentTransportElement transport; - private JingleContentSecurity security; + private JingleContentSecurityElement security; private Builder() { } @@ -191,7 +191,7 @@ public final class JingleContent implements NamedElement { return this; } - public Builder setDescription(JingleContentDescription description) { + public Builder setDescription(JingleContentDescriptionElement description) { if (this.description != null) { throw new IllegalStateException("Jingle content description already set"); } @@ -199,18 +199,18 @@ public final class JingleContent implements NamedElement { return this; } - public Builder setTransport(JingleContentTransport transport) { + public Builder setTransport(JingleContentTransportElement transport) { this.transport = transport; return this; } - public Builder setSecurity(JingleContentSecurity element) { + public Builder setSecurity(JingleContentSecurityElement element) { this.security = element; return this; } - public JingleContent build() { - return new JingleContent(creator, disposition, name, senders, description, transport, security); + public JingleContentElement build() { + return new JingleContentElement(creator, disposition, name, senders, description, transport, security); } } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentSecurity.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentSecurityElement.java similarity index 77% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentSecurity.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentSecurityElement.java index e952a7cb1..711f8372a 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentSecurity.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentSecurityElement.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.element; +package org.jivesoftware.smackx.jingle3.element; import org.jivesoftware.smack.packet.ExtensionElement; @@ -28,13 +28,17 @@ import org.jivesoftware.smack.packet.ExtensionElement; * * */ -public abstract class JingleContentSecurity implements ExtensionElement { +public abstract class JingleContentSecurityElement implements ExtensionElement { public static final String ELEMENT = "security"; + private JingleContentSecurityInfoElement securityInfo; @Override public String getElementName() { return ELEMENT; } + public JingleContentSecurityInfoElement getSecurityInfo() { + return securityInfo; + } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentSecurityInfoElement.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentSecurityInfoElement.java new file mode 100644 index 000000000..241f69a71 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentSecurityInfoElement.java @@ -0,0 +1,10 @@ +package org.jivesoftware.smackx.jingle3.element; + +import org.jivesoftware.smack.packet.NamedElement; + +/** + * Created by vanitas on 19.07.17. + */ +public abstract class JingleContentSecurityInfoElement implements NamedElement { + +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportCandidate.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentTransportCandidateElement.java similarity index 88% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportCandidate.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentTransportCandidateElement.java index 6b3349afc..0d1b4e322 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportCandidate.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentTransportCandidateElement.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.element; +package org.jivesoftware.smackx.jingle3.element; import org.jivesoftware.smack.packet.NamedElement; @@ -31,7 +31,7 @@ import org.jivesoftware.smack.packet.NamedElement; * * */ -public abstract class JingleContentTransportCandidate implements NamedElement { +public abstract class JingleContentTransportCandidateElement implements NamedElement { public static final String ELEMENT = "candidate"; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentTransportElement.java similarity index 75% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransport.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentTransportElement.java index 4ede32809..ff30e40d3 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransport.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentTransportElement.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.element; +package org.jivesoftware.smackx.jingle3.element; import java.util.Collections; import java.util.List; @@ -33,18 +33,18 @@ import org.jivesoftware.smack.util.XmlStringBuilder; * * */ -public abstract class JingleContentTransport implements ExtensionElement { +public abstract class JingleContentTransportElement implements ExtensionElement { public static final String ELEMENT = "transport"; - protected final List candidates; - protected final JingleContentTransportInfo info; + protected final List candidates; + protected final JingleContentTransportInfoElement info; - protected JingleContentTransport(List candidates) { + protected JingleContentTransportElement(List candidates) { this(candidates, null); } - protected JingleContentTransport(List candidates, JingleContentTransportInfo info) { + protected JingleContentTransportElement(List candidates, JingleContentTransportInfoElement info) { if (candidates != null) { this.candidates = Collections.unmodifiableList(candidates); } @@ -55,11 +55,11 @@ public abstract class JingleContentTransport implements ExtensionElement { this.info = info; } - public List getCandidates() { + public List getCandidates() { return candidates; } - public JingleContentTransportInfo getInfo() { + public JingleContentTransportInfoElement getInfo() { return info; } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportInfo.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentTransportInfoElement.java similarity index 89% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportInfo.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentTransportInfoElement.java index 2994e270a..37d3ccc22 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportInfo.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleContentTransportInfoElement.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.element; +package org.jivesoftware.smackx.jingle3.element; import org.jivesoftware.smack.packet.NamedElement; @@ -32,6 +32,6 @@ import org.jivesoftware.smack.packet.NamedElement; * * */ -public abstract class JingleContentTransportInfo implements NamedElement { +public abstract class JingleContentTransportInfoElement implements NamedElement { } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleElement.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleElement.java new file mode 100644 index 000000000..1590a9e56 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleElement.java @@ -0,0 +1,371 @@ +/** + * + * Copyright 2003-2007 Jive Software, 2014-2017 Florian Schmaus + * + * 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.smackx.jingle3.element; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.jivesoftware.smack.packet.IQ; +import org.jivesoftware.smack.packet.XMPPError; +import org.jivesoftware.smack.util.Objects; +import org.jivesoftware.smack.util.StringUtils; + +import org.jxmpp.jid.FullJid; + +/** + * The Jingle element. + * + * @author Florian Schmaus + */ +public final class JingleElement extends IQ { + + public static final String NAMESPACE = "urn:xmpp:jingle:1"; + + public static final String ACTION_ATTRIBUTE_NAME = "action"; + + public static final String INITIATOR_ATTRIBUTE_NAME = "initiator"; + + public static final String RESPONDER_ATTRIBUTE_NAME = "responder"; + + public static final String SESSION_ID_ATTRIBUTE_NAME = "sid"; + + public static final String ELEMENT = "jingle"; + + /** + * The session ID related to this session. The session ID is a unique identifier generated by the initiator. This + * should match the XML Nmtoken production so that XML character escaping is not needed for characters such as &. + */ + private final String sessionId; + + /** + * The jingle action. This attribute is required. + */ + private final JingleAction action; + + private final FullJid initiator; + + private final FullJid responder; + + private final JingleReasonElement reason; + + private final List contents; + + private JingleElement(String sessionId, JingleAction action, FullJid initiator, FullJid responder, JingleReasonElement reason, + List contents) { + super(ELEMENT, NAMESPACE); + this.sessionId = StringUtils.requireNotNullOrEmpty(sessionId, "Jingle session ID must not be null"); + this.action = Objects.requireNonNull(action, "Jingle action must not be null"); + this.initiator = initiator; + this.responder = responder; + this.reason = reason; + if (contents != null) { + this.contents = Collections.unmodifiableList(contents); + } + else { + this.contents = Collections.emptyList(); + } + setType(Type.set); + } + + /** + * Get the initiator. The initiator will be the full JID of the entity that has initiated the flow (which may be + * different to the "from" address in the IQ) + * + * @return the initiator + */ + public FullJid getInitiator() { + return initiator; + } + + /** + * Get the responder. The responder is the full JID of the entity that has replied to the initiation (which may be + * different to the "to" addresss in the IQ). + * + * @return the responder + */ + public FullJid getResponder() { + return responder; + } + + /** + * Returns the session ID related to the session. The session ID is a unique identifier generated by the initiator. + * This should match the XML Nmtoken production so that XML character escaping is not needed for characters such as + * &. + * + * @return Returns the session ID related to the session. + */ + public String getSid() { + return sessionId; + } + + /** + * Get the action specified in the jingle IQ. + * + * @return the action. + */ + public JingleAction getAction() { + return action; + } + + public JingleReasonElement getReason() { + return reason; + } + + /** + * Get a List of the contents. + * + * @return the contents. + */ + public List getContents() { + return contents; + } + + @Override + protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) { + xml.optAttribute(INITIATOR_ATTRIBUTE_NAME, getInitiator()); + xml.optAttribute(RESPONDER_ATTRIBUTE_NAME, getResponder()); + xml.optAttribute(ACTION_ATTRIBUTE_NAME, getAction()); + xml.optAttribute(SESSION_ID_ATTRIBUTE_NAME, getSid()); + xml.rightAngleBracket(); + + xml.optElement(reason); + + xml.append(contents); + + return xml; + } + + public static Builder getBuilder() { + return new Builder(); + } + + public static final class Builder { + private String sid; + + private JingleAction action; + + private FullJid initiator; + + private FullJid responder; + + private JingleReasonElement reason; + + private List contents; + + private Builder() { + } + + public Builder setSessionId(String sessionId) { + this.sid = sessionId; + return this; + } + + public Builder setAction(JingleAction action) { + this.action = action; + return this; + } + + public Builder setInitiator(FullJid initator) { + this.initiator = initator; + return this; + } + + public Builder setResponder(FullJid responder) { + this.responder = responder; + return this; + } + + public Builder addJingleContent(JingleContentElement content) { + if (contents == null) { + contents = new ArrayList<>(1); + } + contents.add(content); + return this; + } + + public Builder setReason(JingleReasonElement.Reason reason) { + this.reason = new JingleReasonElement(reason); + return this; + } + + public Builder setReason(JingleReasonElement reason) { + this.reason = reason; + return this; + } + + public JingleElement build() { + return new JingleElement(sid, action, initiator, responder, reason, contents); + } + } + + public static JingleElement createContentAccept(FullJid recipient, String sessionId, List contents) { + JingleElement.Builder builder = JingleElement.getBuilder().setAction(JingleAction.content_accept).setSessionId(sessionId); + + for (JingleContentElement element : contents) { + builder.addJingleContent(element); + } + + JingleElement jingleElement = builder.build(); + jingleElement.setTo(recipient); + + return jingleElement; + } + + /** + * Create a session-terminate stanza. + * XEP-0166 §6.7. + * @param recipient recipient of the stanza. + * @param sessionId sessionId. + * @param reason reason of termination. + * @return session-terminate stanza. + */ + public static JingleElement createSessionTerminate(FullJid recipient, String sessionId, JingleReasonElement reason) { + JingleElement.Builder jb = JingleElement.getBuilder(); + jb.setAction(JingleAction.session_terminate) + .setSessionId(sessionId) + .setReason(reason); + + JingleElement jingle = jb.build(); + jingle.setTo(recipient); + + return jingle; + } + + /** + * Create a session-terminate stanza. + * XEP-0166 §6.7. + * @param recipient recipient of the stanza. + * @param sessionId sessionId. + * @param reason reason of termination. + * @return session-terminate stanza. + */ + public static JingleElement createSessionTerminate(FullJid recipient, String sessionId, JingleReasonElement.Reason reason) { + return createSessionTerminate(recipient, sessionId, new JingleReasonElement(reason)); + } + + public static JingleElement createTransportAccept(FullJid initiator, FullJid recipient, String sessionId, + JingleContentElement.Creator contentCreator, + String contentName, JingleContentTransportElement transport) { + JingleElement.Builder jb = JingleElement.getBuilder(); + jb.setAction(JingleAction.transport_accept) + .setInitiator(initiator) + .setSessionId(sessionId); + + JingleContentElement.Builder cb = JingleContentElement.getBuilder(); + cb.setCreator(contentCreator).setName(contentName).setTransport(transport); + + JingleElement jingle = jb.addJingleContent(cb.build()).build(); + jingle.setTo(recipient); + + return jingle; + } + + public static JingleElement createTransportReject(FullJid initiator, FullJid recipient, String sessionId, + JingleContentElement.Creator contentCreator, + String contentName, JingleContentTransportElement transport) { + JingleElement.Builder jb = JingleElement.getBuilder(); + jb.setAction(JingleAction.transport_reject) + .setInitiator(initiator) + .setSessionId(sessionId); + + JingleContentElement.Builder cb = JingleContentElement.getBuilder(); + cb.setCreator(contentCreator).setName(contentName).setTransport(transport); + + JingleElement jingle = jb.addJingleContent(cb.build()).build(); + jingle.setTo(recipient); + + return jingle; + } + + /** + * Create an error response to a request with an unknown session id. + * XEP-0166 Example 29. + * @param request request with unknown sessionId. + * @return error stanza. + */ + public static IQ createJingleErrorUnknownSession(JingleElement request) { + XMPPError.Builder error = XMPPError.getBuilder(); + error.setCondition(XMPPError.Condition.item_not_found) + .addExtension(JingleErrorElement.UNKNOWN_SESSION); + return IQ.createErrorResponse(request, error); + } + + /** + * Create an error response to a request coming from a unknown initiator. + * XEP-0166 Example 12. + * @param request request from unknown initiator. + * @return error stanza. + */ + public static IQ createJingleErrorUnknownInitiator(JingleElement request) { + XMPPError.Builder b = XMPPError.getBuilder().setType(XMPPError.Type.CANCEL).setCondition(XMPPError.Condition.service_unavailable); + return IQ.createErrorResponse(request, b); + } + + /** + * Create an error response to a request with an unsupported info. + * XEP-0166 Example 31. + * @param request request with unsupported info. + * @return error stanza. + */ + public static IQ createJingleErrorUnsupportedInfo(JingleElement request) { + XMPPError.Builder error = XMPPError.getBuilder(); + error.setCondition(XMPPError.Condition.feature_not_implemented) + .addExtension(JingleErrorElement.UNSUPPORTED_INFO).setType(XMPPError.Type.MODIFY); + return IQ.createErrorResponse(request, error); + } + + /** + * Create an error response to a tie-breaking request. + * XEP-0166 Example 34. + * @param request tie-breaking request + * @return error stanza + */ + public static IQ createJingleErrorTieBreak(JingleElement request) { + XMPPError.Builder error = XMPPError.getBuilder(); + error.setCondition(XMPPError.Condition.conflict) + .addExtension(JingleErrorElement.TIE_BREAK); + return IQ.createErrorResponse(request, error); + } + + /** + * Create an error response to a request that was out of order. + * TODO: Find example. + * @param request request out of order. + * @return error stanza. + */ + public static IQ createJingleErrorOutOfOrder(JingleElement request) { + XMPPError.Builder error = XMPPError.getBuilder(); + error.setCondition(XMPPError.Condition.unexpected_request) + .addExtension(JingleErrorElement.OUT_OF_ORDER); + return IQ.createErrorResponse(request, error); + } + + /** + * Create an error response to a malformed request. + * XEP-0166 Ex. 16 + * @param request malformed request + * @return error stanza. + */ + public static IQ createJingleErrorMalformedRequest(JingleElement request) { + XMPPError.Builder error = XMPPError.getBuilder(); + error.setType(XMPPError.Type.CANCEL); + error.setCondition(XMPPError.Condition.bad_request); + return IQ.createErrorResponse(request, error); + } +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleError.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleErrorElement.java similarity index 77% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleError.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleErrorElement.java index 77fc356e9..03105a727 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleError.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleErrorElement.java @@ -15,24 +15,24 @@ * limitations under the License. */ -package org.jivesoftware.smackx.jingle.element; +package org.jivesoftware.smackx.jingle3.element; import java.util.Locale; import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.util.XmlStringBuilder; -public final class JingleError implements ExtensionElement { +public final class JingleErrorElement implements ExtensionElement { public static String NAMESPACE = "urn:xmpp:jingle:errors:1"; - public static final JingleError OUT_OF_ORDER = new JingleError("out-of-order"); + public static final JingleErrorElement OUT_OF_ORDER = new JingleErrorElement("out-of-order"); - public static final JingleError TIE_BREAK = new JingleError("tie-break"); + public static final JingleErrorElement TIE_BREAK = new JingleErrorElement("tie-break"); - public static final JingleError UNKNOWN_SESSION = new JingleError("unknown-session"); + public static final JingleErrorElement UNKNOWN_SESSION = new JingleErrorElement("unknown-session"); - public static final JingleError UNSUPPORTED_INFO = new JingleError("unsupported-info"); + public static final JingleErrorElement UNSUPPORTED_INFO = new JingleErrorElement("unsupported-info"); private final String errorName; @@ -41,7 +41,7 @@ public final class JingleError implements ExtensionElement { * * @param errorName a name describing the error. */ - private JingleError(final String errorName) { + private JingleErrorElement(final String errorName) { this.errorName = errorName; } @@ -64,7 +64,7 @@ public final class JingleError implements ExtensionElement { /** * Returns a Action instance associated with the String value. */ - public static JingleError fromString(String value) { + public static JingleErrorElement fromString(String value) { value = value.toLowerCase(Locale.US); switch (value) { case "out-of-order": diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleReason.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleReasonElement.java similarity index 65% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleReason.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleReasonElement.java index 29ef9aa71..6dabd8ca1 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleReason.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/JingleReasonElement.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.element; +package org.jivesoftware.smackx.jingle3.element; import java.util.HashMap; import java.util.Map; @@ -29,7 +29,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder; * @see XEP-0166 § 7.4 * */ -public class JingleReason implements NamedElement { +public class JingleReasonElement implements NamedElement { public static final String ELEMENT = "reason"; @@ -37,22 +37,22 @@ public class JingleReason implements NamedElement { return new AlternativeSession(sessionId); } - public static final JingleReason Busy = new JingleReason(Reason.busy); - public static final JingleReason Cancel = new JingleReason(Reason.cancel); - public static final JingleReason ConnectivityError = new JingleReason(Reason.connectivity_error); - public static final JingleReason Decline = new JingleReason(Reason.decline); - public static final JingleReason Expired = new JingleReason(Reason.expired); - public static final JingleReason FailedApplication = new JingleReason(Reason.failed_application); - public static final JingleReason FailedTransport = new JingleReason(Reason.failed_transport); - public static final JingleReason GeneralError = new JingleReason(Reason.general_error); - public static final JingleReason Gone = new JingleReason(Reason.gone); - public static final JingleReason IncompatibleParameters = new JingleReason(Reason.incompatible_parameters); - public static final JingleReason MediaError = new JingleReason(Reason.media_error); - public static final JingleReason SecurityError = new JingleReason(Reason.security_error); - public static final JingleReason Success = new JingleReason(Reason.success); - public static final JingleReason Timeout = new JingleReason(Reason.timeout); - public static final JingleReason UnsupportedApplications = new JingleReason(Reason.unsupported_applications); - public static final JingleReason UnsupportedTransports = new JingleReason(Reason.unsupported_transports); + public static final JingleReasonElement Busy = new JingleReasonElement(Reason.busy); + public static final JingleReasonElement Cancel = new JingleReasonElement(Reason.cancel); + public static final JingleReasonElement ConnectivityError = new JingleReasonElement(Reason.connectivity_error); + public static final JingleReasonElement Decline = new JingleReasonElement(Reason.decline); + public static final JingleReasonElement Expired = new JingleReasonElement(Reason.expired); + public static final JingleReasonElement FailedApplication = new JingleReasonElement(Reason.failed_application); + public static final JingleReasonElement FailedTransport = new JingleReasonElement(Reason.failed_transport); + public static final JingleReasonElement GeneralError = new JingleReasonElement(Reason.general_error); + public static final JingleReasonElement Gone = new JingleReasonElement(Reason.gone); + public static final JingleReasonElement IncompatibleParameters = new JingleReasonElement(Reason.incompatible_parameters); + public static final JingleReasonElement MediaError = new JingleReasonElement(Reason.media_error); + public static final JingleReasonElement SecurityError = new JingleReasonElement(Reason.security_error); + public static final JingleReasonElement Success = new JingleReasonElement(Reason.success); + public static final JingleReasonElement Timeout = new JingleReasonElement(Reason.timeout); + public static final JingleReasonElement UnsupportedApplications = new JingleReasonElement(Reason.unsupported_applications); + public static final JingleReasonElement UnsupportedTransports = new JingleReasonElement(Reason.unsupported_transports); public enum Reason { alternative_session, @@ -104,7 +104,7 @@ public class JingleReason implements NamedElement { protected final Reason reason; - public JingleReason(Reason reason) { + public JingleReasonElement(Reason reason) { this.reason = reason; } @@ -129,7 +129,7 @@ public class JingleReason implements NamedElement { } - public static class AlternativeSession extends JingleReason { + public static class AlternativeSession extends JingleReasonElement { public static final String SID = "sid"; private final String sessionId; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/package-info.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/package-info.java similarity index 93% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/package-info.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/package-info.java index 49fdcc362..1da8411b1 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/package-info.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/element/package-info.java @@ -18,4 +18,4 @@ /** * Stanzas and Extension Elements for XEP-0166: Jingle. */ -package org.jivesoftware.smackx.jingle.element; +package org.jivesoftware.smackx.jingle3.element; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/exception/UnsupportedDescriptionException.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/exception/UnsupportedDescriptionException.java new file mode 100644 index 000000000..6bdf965df --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/exception/UnsupportedDescriptionException.java @@ -0,0 +1,19 @@ +package org.jivesoftware.smackx.jingle3.exception; + +/** + * Created by vanitas on 18.07.17. + */ +public class UnsupportedDescriptionException extends Exception { + private static final long serialVersionUID = 1L; + + private final String namespace; + + public UnsupportedDescriptionException(String namespace) { + super("Description with namespace " + namespace + " not supported."); + this.namespace = namespace; + } + + public String getNamespace() { + return namespace; + } +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/exception/UnsupportedSecurityException.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/exception/UnsupportedSecurityException.java new file mode 100644 index 000000000..e78216848 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/exception/UnsupportedSecurityException.java @@ -0,0 +1,19 @@ +package org.jivesoftware.smackx.jingle3.exception; + +/** + * Created by vanitas on 18.07.17. + */ +public class UnsupportedSecurityException extends Exception { + private static final long serialVersionUID = 1L; + + private final String namespace; + + public UnsupportedSecurityException(String namespace) { + super("Security with namespace " + namespace + " not supported."); + this.namespace = namespace; + } + + public String getNamespace() { + return namespace; + } +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/exception/UnsupportedTransportException.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/exception/UnsupportedTransportException.java new file mode 100644 index 000000000..a7e69fede --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/exception/UnsupportedTransportException.java @@ -0,0 +1,19 @@ +package org.jivesoftware.smackx.jingle3.exception; + +/** + * Created by vanitas on 18.07.17. + */ +public class UnsupportedTransportException extends Exception { + private static final long serialVersionUID = 1L; + + private final String namespace; + + public UnsupportedTransportException(String namespace) { + super("Transport with namespace " + namespace + " not supported."); + this.namespace = namespace; + } + + public String getNamespace() { + return namespace; + } +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/Content.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/Content.java new file mode 100644 index 000000000..f0aff9363 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/Content.java @@ -0,0 +1,145 @@ +package org.jivesoftware.smackx.jingle3.internal; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.jivesoftware.smack.util.StringUtils; +import org.jivesoftware.smackx.jingle3.Callback; +import org.jivesoftware.smackx.jingle3.JingleExtensionManager; +import org.jivesoftware.smackx.jingle3.adapter.JingleDescriptionAdapter; +import org.jivesoftware.smackx.jingle3.adapter.JingleSecurityAdapter; +import org.jivesoftware.smackx.jingle3.adapter.JingleTransportAdapter; +import org.jivesoftware.smackx.jingle3.element.JingleContentDescriptionElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentSecurityElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentTransportElement; + +/** + * Internal class that holds the state of a content in a modifiable form. + */ +public class Content { + + private Session session; + private JingleContentElement.Creator creator; + private String name; + private String disposition; + private JingleContentElement.Senders senders; + private Description description; + private Transport transport; + private Security security; + + private final List callbacks = Collections.synchronizedList(new ArrayList()); + private final Set transportBlacklist = Collections.synchronizedSet(new HashSet()); + + public Content(Description description, Transport transport, Security security, String name, String disposition, JingleContentElement.Creator creator, JingleContentElement.Senders senders) { + this.description = description; + this.transport = transport; + this.security = security; + this.name = name; + this.disposition = disposition; + this.creator = creator; + this.senders = senders; + } + + public static Content fromElement(JingleContentElement content) { + Description description = null; + Transport transport = null; + Security security = null; + + JingleContentDescriptionElement descriptionElement = content.getDescription(); + if (descriptionElement != null) { + JingleDescriptionAdapter descriptionAdapter = JingleExtensionManager.getJingleDescriptionAdapter(content.getDescription().getNamespace()); + if (descriptionAdapter != null) { + description = descriptionAdapter.descriptionFromElement(descriptionElement); + } else { + throw new AssertionError("DescriptionProvider for " + descriptionElement.getNamespace() + + " seems to be registered, but no corresponding JingleDescriptionAdapter was found."); + } + } + + JingleContentTransportElement transportElement = content.getTransport(); + if (transportElement != null) { + JingleTransportAdapter transportAdapter = JingleExtensionManager.getJingleTransportAdapter(content.getTransport().getNamespace()); + if (transportAdapter != null) { + transport = transportAdapter.transportFromElement(transportElement); + } else { + throw new AssertionError("DescriptionProvider for " + transportElement.getNamespace() + + " seems to be registered, but no corresponding JingleTransportAdapter was found."); + } + } + + JingleContentSecurityElement securityElement = content.getSecurity(); + if (securityElement != null) { + JingleSecurityAdapter securityAdapter = JingleExtensionManager.getJingleSecurityAdapter(content.getSecurity().getNamespace()); + if (securityAdapter != null) { + security = securityAdapter.securityFromElement(securityElement); + } else { + throw new AssertionError("SecurityProvider for " + securityElement.getNamespace() + + " seems to be registered, but no corresponding JingleSecurityAdapter was found."); + } + } + + return new Content(description, transport, security, content.getName(), content.getDisposition(), content.getCreator(), content.getSenders()); + } + + public void addCallback(Callback callback) { + callbacks.add(callback); + } + + public JingleContentElement getElement() { + return JingleContentElement.getBuilder() + .setName(name) + .setCreator(creator) + .setSenders(senders) + .setDescription(description.getElement()) + .setTransport(transport.getElement()) + .setSecurity(security.getElement()) + .setDisposition(disposition) + .build(); + } + + public Set getTransportBlacklist() { + return transportBlacklist; + } + + public JingleContentElement.Creator getCreator() { + return creator; + } + + public String getName() { + return name; + } + + public JingleContentElement.Senders getSenders() { + return senders; + } + + public Description getDescription() { + return description; + } + + public Transport getTransport() { + return transport; + } + + public void setTransport(Transport transport) { + this.transport = transport; + } + + public void setSession(Session session) { + if (this.session != session) { + this.session = session; + } + } + + public Security getSecurity() { + return security; + } + + public static String randomName() { + return "cont-" + StringUtils.randomString(16); + } +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/Description.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/Description.java new file mode 100644 index 000000000..d3d5a678b --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/Description.java @@ -0,0 +1,11 @@ +package org.jivesoftware.smackx.jingle3.internal; + +import org.jivesoftware.smackx.jingle3.element.JingleContentDescriptionElement; + +/** + * Created by vanitas on 18.07.17. + */ +public abstract class Description { + + public abstract D getElement(); +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/PendingJingleAction.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/PendingJingleAction.java new file mode 100644 index 000000000..d9206ecd5 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/PendingJingleAction.java @@ -0,0 +1,37 @@ +package org.jivesoftware.smackx.jingle3.internal; + +import org.jivesoftware.smackx.jingle3.element.JingleAction; + +/** + * Created by vanitas on 19.07.17. + */ +public abstract class PendingJingleAction { + private final JingleAction action; + private final Content affectedContent; + + public PendingJingleAction(JingleAction action, Content content) { + this.action = action; + this.affectedContent = content; + } + + public JingleAction getAction() { + return action; + } + + public Content getAffectedContent() { + return affectedContent; + } + + public static class TransportReplace extends PendingJingleAction { + private final Transport newTransport; + + public TransportReplace(Content content, Transport newTransport) { + super(JingleAction.transport_replace, content); + this.newTransport = newTransport; + } + + public Transport getNewTransport() { + return newTransport; + } + } +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/Security.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/Security.java new file mode 100644 index 000000000..719bdc0d7 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/Security.java @@ -0,0 +1,15 @@ +package org.jivesoftware.smackx.jingle3.internal; + +import org.jivesoftware.smackx.jingle3.element.JingleContentSecurityElement; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentSecurityInfoElement; + +/** + * Created by vanitas on 18.07.17. + */ +public abstract class Security { + + public abstract D getElement(); + + public abstract JingleElement handleSecurityInfo(JingleContentSecurityInfoElement element); +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/Session.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/Session.java new file mode 100644 index 000000000..dfb88aae7 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/Session.java @@ -0,0 +1,388 @@ +package org.jivesoftware.smackx.jingle3.internal; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.jivesoftware.smack.SmackException; +import org.jivesoftware.smack.XMPPException; +import org.jivesoftware.smack.packet.IQ; +import org.jivesoftware.smackx.jingle3.JingleDescriptionManager; +import org.jivesoftware.smackx.jingle3.JingleExtensionManager; +import org.jivesoftware.smackx.jingle3.JingleManager; +import org.jivesoftware.smackx.jingle3.Role; +import org.jivesoftware.smackx.jingle3.adapter.JingleTransportAdapter; +import org.jivesoftware.smackx.jingle3.callbacks.ContentAddCallback; +import org.jivesoftware.smackx.jingle3.element.JingleAction; +import org.jivesoftware.smackx.jingle3.element.JingleContentDescriptionElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentTransportElement; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleReasonElement; +import org.jivesoftware.smackx.jingle3.exception.UnsupportedDescriptionException; +import org.jivesoftware.smackx.jingle3.exception.UnsupportedSecurityException; +import org.jivesoftware.smackx.jingle3.exception.UnsupportedTransportException; + +import org.jxmpp.jid.FullJid; + +/** + * Created by vanitas on 17.07.17. + */ +public class Session { + private static final Logger LOGGER = Logger.getLogger(Session.class.getName()); + + private final ConcurrentHashMap contents = new ConcurrentHashMap<>(); + private final JingleManager jingleManager; + + private final FullJid initiator, responder; + private final Role role; + private final String sessionId; + + private final Map pendingJingleActions = + Collections.synchronizedMap(new HashMap()); + + public Session(JingleManager manager, FullJid initiator, FullJid responder, Role role, String sessionId) { + this.jingleManager = manager; + this.initiator = initiator; + this.responder = responder; + this.role = role; + this.sessionId = sessionId; + } + + void addContent(Content content) { + contents.put(content.getName(), content); + content.setSession(this); + } + + void addContent(JingleContentElement content) + throws UnsupportedSecurityException, UnsupportedTransportException, UnsupportedDescriptionException { + addContent(Content.fromElement(content)); + } + + public static Session fromSessionInitiate(JingleManager manager, JingleElement initiate) + throws UnsupportedSecurityException, UnsupportedDescriptionException, UnsupportedTransportException { + if (initiate.getAction() != JingleAction.session_initiate) { + throw new IllegalArgumentException("Jingle-Action MUST be 'session-initiate'."); + } + + Session session = new Session(manager, initiate.getInitiator(), initiate.getResponder(), Role.responder, initiate.getSid()); + List initiateContents = initiate.getContents(); + + for (JingleContentElement content : initiateContents) { + session.addContent(content); + } + + return session; + } + + public IQ handleJingleRequest(JingleElement request) { + switch (request.getAction()) { + case content_accept: + return handleContentAccept(request); + case content_add: + return handleContentAdd(request); + case content_modify: + return handleContentModify(request); + case content_reject: + return handleContentReject(request); + case content_remove: + return handleContentRemove(request); + case description_info: + return handleDescriptionInfo(request); + case session_info: + return handleSessionInfo(request); + case security_info: + return handleSecurityInfo(request); + case session_accept: + return handleSessionAccept(request); + case transport_accept: + return handleTransportAccept(request); + case transport_info: + return handleTransportInfo(request); + case session_initiate: + return handleSessionInitiate(request); + case transport_reject: + return handleTransportReject(request); + case session_terminate: + return handleSessionTerminate(request); + case transport_replace: + return handleTransportReplace(request); + default: + throw new AssertionError("Unknown Jingle Action enum! " + request.getAction()); + } + } + + private IQ handleTransportReplace(JingleElement request) { + List affectedContents = request.getContents(); + List responses = new ArrayList<>(); + + for (JingleContentElement affected : affectedContents) { + Content content = contents.get(affected.getName()); + JingleContentTransportElement newTransport = affected.getTransport(); + Set blacklist = content.getTransportBlacklist(); + + // Proposed transport method might already be on the blacklist (eg. because of previous failures) + if (blacklist.contains(newTransport.getNamespace())) { + responses.add(JingleElement.createTransportReject(getInitiator(), getPeer(), getSessionId(), + content.getCreator(), content.getName(), newTransport)); + continue; + + } + + JingleTransportAdapter transportAdapter = JingleExtensionManager.getJingleTransportAdapter( + newTransport.getNamespace()); + // This might be an unknown transport. + if (transportAdapter == null) { + responses.add(JingleElement.createTransportReject(getInitiator(), getPeer(), getSessionId(), + content.getCreator(), content.getName(), newTransport)); + continue; + } + + //Otherwise, when all went well so far, accept the transport-replace + content.setTransport(JingleExtensionManager.getJingleTransportAdapter(newTransport.getNamespace()) + .transportFromElement(newTransport)); + responses.add(JingleElement.createTransportAccept(getInitiator(), getPeer(), getSessionId(), + content.getCreator(), content.getName(), newTransport)); + } + + //TODO: Put in Thread? + for (JingleElement response : responses) { + try { + jingleManager.getConnection().createStanzaCollectorAndSend(response).nextResultOrThrow(); + } catch (SmackException.NoResponseException | XMPPException.XMPPErrorException | InterruptedException | SmackException.NotConnectedException e) { + LOGGER.log(Level.SEVERE, "Could not send response to transport-replace: " + e, e); + } + } + + return IQ.createResultIQ(request); + } + + private IQ handleSessionTerminate(JingleElement request) { + JingleReasonElement reason = request.getReason(); + if (reason == null) { + throw new AssertionError("Reason MUST not be null! (I guess)..."); + } + switch (reason.asEnum()) { + case alternative_session: + case busy: + case cancel: + case connectivity_error: + case decline: + // :( + case expired: + case failed_application: + case failed_transport: + case general_error: + // well... shit. + case gone: + case incompatible_parameters: + case media_error: + case security_error: + case success: + // Weeeeeh + break; + case timeout: + case unsupported_applications: + case unsupported_transports: + break; + default: + throw new AssertionError("Unknown reson enum: " + reason.asEnum().toString()); + } + return IQ.createResultIQ(request); + } + + private IQ handleTransportReject(JingleElement request) { + HashMap affectedContents = getAffectedContents(request); + + return null; + } + + private IQ handleSessionInitiate(JingleElement request) { + return null; + } + + private IQ handleTransportInfo(JingleElement request) { + HashMap affectedContents = getAffectedContents(request); + List responses = new ArrayList<>(); + + for (Map.Entry entry : affectedContents.entrySet()) { + responses.add(entry.getValue().getTransport().handleTransportInfo(entry.getKey().getTransport().getInfo())); + } + + for (JingleElement response : responses) { + try { + getJingleManager().getConnection().createStanzaCollectorAndSend(response).nextResultOrThrow(); + } catch (SmackException.NoResponseException | XMPPException.XMPPErrorException | InterruptedException | SmackException.NotConnectedException e) { + LOGGER.log(Level.SEVERE, "Could not send response to transport-info: " + e, e); + } + } + + return IQ.createResultIQ(request); + } + + private IQ handleTransportAccept(JingleElement request) { + HashMap affectedContents = getAffectedContents(request); + for (Map.Entry entry : affectedContents.entrySet()) { + + PendingJingleAction pending = pendingJingleActions.get(entry.getValue()); + if (pending == null) { + continue; + } + + if (pending.getAction() != JingleAction.transport_replace) { + //TODO: Are multiple contents even possible here? + //TODO: How to react to partially illegal requests? + return JingleElement.createJingleErrorOutOfOrder(request); + } + + entry.getValue().setTransport(((PendingJingleAction.TransportReplace) pending).getNewTransport()); + } + + return IQ.createResultIQ(request); + } + + private IQ handleSessionAccept(JingleElement request) { + return null; + } + + private IQ handleSecurityInfo(JingleElement request) { + HashMap affectedContents = getAffectedContents(request); + List responses = new ArrayList<>(); + + for (Map.Entry entry : affectedContents.entrySet()) { + responses.add(entry.getValue().getSecurity().handleSecurityInfo(entry.getKey().getSecurity().getSecurityInfo())); + } + + for (JingleElement response : responses) { + try { + getJingleManager().getConnection().createStanzaCollectorAndSend(response).nextResultOrThrow(); + } catch (SmackException.NoResponseException | XMPPException.XMPPErrorException | SmackException.NotConnectedException | InterruptedException e) { + LOGGER.log(Level.SEVERE, "Could not send response to security-info: " + e, e); + } + } + + return IQ.createResultIQ(request); + } + + private IQ handleSessionInfo(JingleElement request) { + return null; + } + + private IQ handleDescriptionInfo(JingleElement request) { + return null; + } + + private IQ handleContentRemove(JingleElement request) { + return null; + } + + private IQ handleContentReject(JingleElement request) { + return null; + } + + private IQ handleContentModify(JingleElement request) { + return null; + } + + private IQ handleContentAdd(JingleElement request) { + final List proposedContents = request.getContents(); + final List acceptedContents = new ArrayList<>(); + + final HashMap> contentsByDescription = new HashMap<>(); + + for (JingleContentElement p : proposedContents) { + JingleContentDescriptionElement description = p.getDescription(); + List list = contentsByDescription.get(description.getNamespace()); + if (list == null) { + list = new ArrayList<>(); + contentsByDescription.put(description.getNamespace(), list); + } + list.add(Content.fromElement(p)); + } + + for (Map.Entry> descriptionCategory : contentsByDescription.entrySet()) { + JingleDescriptionManager descriptionManager = JingleExtensionManager.getInstanceFor(getJingleManager().getConnection()).getDescriptionManager(descriptionCategory.getKey()); + + if (descriptionManager == null) { + //blabla + continue; + } + + for (final Content content : descriptionCategory.getValue()) { + ContentAddCallback callback = new ContentAddCallback() { + @Override + public void acceptContentAdd() { + contents.put(content.getName(), content); + acceptedContents.add(content.getElement()); + // TODO: Send content-accept + } + + @Override + public void rejectContentAdd() { + // TODO: Send content-reject + } + }; + descriptionManager.notifyContentListeners(content, callback); + } + } + + if (acceptedContents.size() > 0) { + JingleElement accept = JingleElement.createContentAccept(getPeer(), getSessionId(), acceptedContents); + try { + getJingleManager().getConnection().createStanzaCollectorAndSend(accept).nextResultOrThrow(); + } catch (SmackException.NoResponseException | XMPPException.XMPPErrorException | InterruptedException | SmackException.NotConnectedException e) { + LOGGER.log(Level.SEVERE, "Could not send response to content-add: " + e, e); + } + } + + //TODO: send content-reject for rejected contents! + + return IQ.createResultIQ(request); + } + + private IQ handleContentAccept(JingleElement request) { + return null; + } + + public FullJid getInitiator() { + return initiator; + } + + public FullJid getResponder() { + return responder; + } + + public FullJid getPeer() { + return role == Role.initiator ? responder : initiator; + } + + public FullJid getOurJid() { + return role == Role.initiator ? initiator : responder; + } + + public String getSessionId() { + return sessionId; + } + + public JingleManager getJingleManager() { + return jingleManager; + } + + private HashMap getAffectedContents(JingleElement request) { + HashMap map = new HashMap<>(); + for (JingleContentElement e : request.getContents()) { + Content c = contents.get(e.getName()); + if (c == null) { + throw new AssertionError("Unknown content: " + e.getName()); + } + map.put(e, c); + } + return map; + } +} \ No newline at end of file diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/Transport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/Transport.java new file mode 100644 index 000000000..2e108fd53 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/internal/Transport.java @@ -0,0 +1,23 @@ +package org.jivesoftware.smackx.jingle3.internal; + +import org.jivesoftware.smackx.bytestreams.BytestreamSession; +import org.jivesoftware.smackx.jingle3.element.JingleContentTransportElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentTransportInfoElement; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.transport.BytestreamSessionEstablishedListener; + +/** + * Created by vanitas on 18.07.17. + */ +public abstract class Transport { + + public abstract D getElement(); + + public abstract String getNamespace(); + + public abstract BytestreamSession establishIncomingBytestreamSession(BytestreamSessionEstablishedListener listener); + + public abstract BytestreamSession establishOutgoingBytestreamSession(BytestreamSessionEstablishedListener listener); + + public abstract JingleElement handleTransportInfo(JingleContentTransportInfoElement info); +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/JingleContentDescriptionProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleContentDescriptionProvider.java similarity index 81% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/JingleContentDescriptionProvider.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleContentDescriptionProvider.java index 2b5f9c771..aafb3122d 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/JingleContentDescriptionProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleContentDescriptionProvider.java @@ -14,18 +14,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.provider; +package org.jivesoftware.smackx.jingle3.provider; import org.jivesoftware.smack.provider.ExtensionElementProvider; -import org.jivesoftware.smackx.jingle.element.JingleContentDescription; +import org.jivesoftware.smackx.jingle3.element.JingleContentDescriptionElement; import org.xmlpull.v1.XmlPullParser; -public abstract class JingleContentDescriptionProvider +public abstract class JingleContentDescriptionProvider extends ExtensionElementProvider { @Override public abstract D parse(XmlPullParser parser, int initialDepth) throws Exception; + public abstract String getNamespace(); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/JingleContentProviderManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleContentProviderManager.java similarity index 97% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/JingleContentProviderManager.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleContentProviderManager.java index 3c0939950..c876fc22d 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/JingleContentProviderManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleContentProviderManager.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.provider; +package org.jivesoftware.smackx.jingle3.provider; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleContentSecurityProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleContentSecurityProvider.java new file mode 100644 index 000000000..e4dfdbefc --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleContentSecurityProvider.java @@ -0,0 +1,19 @@ +package org.jivesoftware.smackx.jingle3.provider; + +import org.jivesoftware.smack.provider.ExtensionElementProvider; +import org.jivesoftware.smackx.jingle3.element.JingleContentSecurityElement; + +import org.xmlpull.v1.XmlPullParser; + +/** + * Created by vanitas on 18.07.17. + */ +public abstract class JingleContentSecurityProvider extends ExtensionElementProvider { + +@Override + public abstract D parse(XmlPullParser parser, int initialDepth) throws Exception; + + public abstract String getNamespace(); + +} + diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/JingleContentTransportProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleContentTransportProvider.java similarity index 82% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/JingleContentTransportProvider.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleContentTransportProvider.java index 20c987f62..942e36b35 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/JingleContentTransportProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleContentTransportProvider.java @@ -14,18 +14,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.provider; +package org.jivesoftware.smackx.jingle3.provider; import org.jivesoftware.smack.provider.ExtensionElementProvider; -import org.jivesoftware.smackx.jingle.element.JingleContentTransport; +import org.jivesoftware.smackx.jingle3.element.JingleContentTransportElement; import org.xmlpull.v1.XmlPullParser; -public abstract class JingleContentTransportProvider +public abstract class JingleContentTransportProvider extends ExtensionElementProvider { @Override public abstract T parse(XmlPullParser parser, int initialDepth) throws Exception; + public abstract String getNamespace(); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/JingleErrorProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleErrorProvider.java similarity index 74% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/JingleErrorProvider.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleErrorProvider.java index 14144ae0d..f02d43ff6 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/JingleErrorProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleErrorProvider.java @@ -14,20 +14,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.provider; +package org.jivesoftware.smackx.jingle3.provider; import org.jivesoftware.smack.provider.ExtensionElementProvider; -import org.jivesoftware.smackx.jingle.element.JingleError; +import org.jivesoftware.smackx.jingle3.element.JingleErrorElement; import org.xmlpull.v1.XmlPullParser; -public class JingleErrorProvider extends ExtensionElementProvider { +public class JingleErrorProvider extends ExtensionElementProvider { @Override - public JingleError parse(XmlPullParser parser, int initialDepth) throws Exception { + public JingleErrorElement parse(XmlPullParser parser, int initialDepth) throws Exception { String errorName = parser.getName(); - return JingleError.fromString(errorName); + return JingleErrorElement.fromString(errorName); } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/JingleProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleProvider.java similarity index 66% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/JingleProvider.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleProvider.java index b920f4a35..1e83de5ff 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/JingleProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/JingleProvider.java @@ -14,45 +14,45 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.provider; +package org.jivesoftware.smackx.jingle3.provider; import java.util.logging.Logger; import org.jivesoftware.smack.provider.IQProvider; import org.jivesoftware.smack.util.ParserUtils; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleAction; -import org.jivesoftware.smackx.jingle.element.JingleContent; -import org.jivesoftware.smackx.jingle.element.JingleContentDescription; -import org.jivesoftware.smackx.jingle.element.JingleContentTransport; -import org.jivesoftware.smackx.jingle.element.JingleReason; -import org.jivesoftware.smackx.jingle.element.JingleReason.Reason; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleAction; +import org.jivesoftware.smackx.jingle3.element.JingleContentDescriptionElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentTransportElement; +import org.jivesoftware.smackx.jingle3.element.JingleReasonElement; +import org.jivesoftware.smackx.jingle3.element.JingleReasonElement.Reason; import org.jxmpp.jid.FullJid; import org.xmlpull.v1.XmlPullParser; -public class JingleProvider extends IQProvider { +public class JingleProvider extends IQProvider { private static final Logger LOGGER = Logger.getLogger(JingleProvider.class.getName()); @Override - public Jingle parse(XmlPullParser parser, int initialDepth) throws Exception { - Jingle.Builder builder = Jingle.getBuilder(); + public JingleElement parse(XmlPullParser parser, int initialDepth) throws Exception { + JingleElement.Builder builder = JingleElement.getBuilder(); - String actionString = parser.getAttributeValue("", Jingle.ACTION_ATTRIBUTE_NAME); + String actionString = parser.getAttributeValue("", JingleElement.ACTION_ATTRIBUTE_NAME); if (actionString != null) { JingleAction action = JingleAction.fromString(actionString); builder.setAction(action); } - FullJid initiator = ParserUtils.getFullJidAttribute(parser, Jingle.INITIATOR_ATTRIBUTE_NAME); + FullJid initiator = ParserUtils.getFullJidAttribute(parser, JingleElement.INITIATOR_ATTRIBUTE_NAME); builder.setInitiator(initiator); - FullJid responder = ParserUtils.getFullJidAttribute(parser, Jingle.RESPONDER_ATTRIBUTE_NAME); + FullJid responder = ParserUtils.getFullJidAttribute(parser, JingleElement.RESPONDER_ATTRIBUTE_NAME); builder.setResponder(responder); - String sessionId = parser.getAttributeValue("", Jingle.SESSION_ID_ATTRIBUTE_NAME); + String sessionId = parser.getAttributeValue("", JingleElement.SESSION_ID_ATTRIBUTE_NAME); builder.setSessionId(sessionId); @@ -62,20 +62,20 @@ public class JingleProvider extends IQProvider { case XmlPullParser.START_TAG: String tagName = parser.getName(); switch (tagName) { - case JingleContent.ELEMENT: - JingleContent content = parseJingleContent(parser, parser.getDepth()); + case JingleContentElement.ELEMENT: + JingleContentElement content = parseJingleContent(parser, parser.getDepth()); builder.addJingleContent(content); break; - case JingleReason.ELEMENT: + case JingleReasonElement.ELEMENT: parser.next(); String reasonString = parser.getName(); - JingleReason reason; + JingleReasonElement reason; if (reasonString.equals("alternative-session")) { parser.next(); String sid = parser.nextText(); - reason = new JingleReason.AlternativeSession(sid); + reason = new JingleReasonElement.AlternativeSession(sid); } else { - reason = new JingleReason(Reason.fromString(reasonString)); + reason = new JingleReasonElement(Reason.fromString(reasonString)); } builder.setReason(reason); break; @@ -94,23 +94,23 @@ public class JingleProvider extends IQProvider { return builder.build(); } - public static JingleContent parseJingleContent(XmlPullParser parser, final int initialDepth) + public static JingleContentElement parseJingleContent(XmlPullParser parser, final int initialDepth) throws Exception { - JingleContent.Builder builder = JingleContent.getBuilder(); + JingleContentElement.Builder builder = JingleContentElement.getBuilder(); - String creatorString = parser.getAttributeValue("", JingleContent.CREATOR_ATTRIBUTE_NAME); - JingleContent.Creator creator = JingleContent.Creator.valueOf(creatorString); + String creatorString = parser.getAttributeValue("", JingleContentElement.CREATOR_ATTRIBUTE_NAME); + JingleContentElement.Creator creator = JingleContentElement.Creator.valueOf(creatorString); builder.setCreator(creator); - String disposition = parser.getAttributeValue("", JingleContent.DISPOSITION_ATTRIBUTE_NAME); + String disposition = parser.getAttributeValue("", JingleContentElement.DISPOSITION_ATTRIBUTE_NAME); builder.setDisposition(disposition); - String name = parser.getAttributeValue("", JingleContent.NAME_ATTRIBUTE_NAME); + String name = parser.getAttributeValue("", JingleContentElement.NAME_ATTRIBUTE_NAME); builder.setName(name); - String sendersString = parser.getAttributeValue("", JingleContent.SENDERS_ATTRIBUTE_NAME); + String sendersString = parser.getAttributeValue("", JingleContentElement.SENDERS_ATTRIBUTE_NAME); if (sendersString != null) { - JingleContent.Senders senders = JingleContent.Senders.valueOf(sendersString); + JingleContentElement.Senders senders = JingleContentElement.Senders.valueOf(sendersString); builder.setSenders(senders); } @@ -121,23 +121,23 @@ public class JingleProvider extends IQProvider { String tagName = parser.getName(); String namespace = parser.getNamespace(); switch (tagName) { - case JingleContentDescription.ELEMENT: { + case JingleContentDescriptionElement.ELEMENT: { JingleContentDescriptionProvider provider = JingleContentProviderManager.getJingleContentDescriptionProvider(namespace); if (provider == null) { // TODO handle this case (DefaultExtensionElement wrapped in something?) break; } - JingleContentDescription description = provider.parse(parser); + JingleContentDescriptionElement description = provider.parse(parser); builder.setDescription(description); break; } - case JingleContentTransport.ELEMENT: { + case JingleContentTransportElement.ELEMENT: { JingleContentTransportProvider provider = JingleContentProviderManager.getJingleContentTransportProvider(namespace); if (provider == null) { // TODO handle this case (DefaultExtensionElement wrapped in something?) break; } - JingleContentTransport transport = provider.parse(parser); + JingleContentTransportElement transport = provider.parse(parser); builder.setTransport(transport); break; } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/package-info.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/package-info.java similarity index 93% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/package-info.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/package-info.java index feb0e8d86..394cd2f3f 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/provider/package-info.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/provider/package-info.java @@ -18,4 +18,4 @@ /** * Providers and parsers for XEP-0166: Jingle. */ -package org.jivesoftware.smackx.jingle.provider; +package org.jivesoftware.smackx.jingle3.provider; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/BytestreamSessionEstablishedListener.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/BytestreamSessionEstablishedListener.java new file mode 100644 index 000000000..a8492f8ec --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/BytestreamSessionEstablishedListener.java @@ -0,0 +1,14 @@ +package org.jivesoftware.smackx.jingle3.transport; + +import org.jivesoftware.smackx.bytestreams.BytestreamSession; + +/** + * Created by vanitas on 18.07.17. + */ +public interface BytestreamSessionEstablishedListener { + + void onBytestreamSessionEstablished(BytestreamSession session); + + void onBytestreamSessionFailed(Exception exception); + +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/ibb/JingleIBBTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/ibb/JingleIBBTransport.java new file mode 100644 index 000000000..fd2f9d2ab --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/ibb/JingleIBBTransport.java @@ -0,0 +1,69 @@ +package org.jivesoftware.smackx.jingle3.transport.ibb; + +import org.jivesoftware.smack.SmackException; +import org.jivesoftware.smack.XMPPException; +import org.jivesoftware.smack.util.StringUtils; +import org.jivesoftware.smackx.bytestreams.BytestreamListener; +import org.jivesoftware.smackx.bytestreams.BytestreamRequest; +import org.jivesoftware.smackx.bytestreams.BytestreamSession; +import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamManager; +import org.jivesoftware.smackx.jingle3.internal.Session; +import org.jivesoftware.smackx.jingle3.internal.Transport; +import org.jivesoftware.smackx.jingle3.transport.BytestreamSessionEstablishedListener; +import org.jivesoftware.smackx.jingle3.transport.jingle_ibb.element.JingleIBBTransportElement; + +/** + * Created by vanitas on 18.07.17. + */ +public class JingleIBBTransport extends Transport { + + private final String streamId; + private final Short blockSize; + + public JingleIBBTransport(String streamId, Short blockSize) { + this.streamId = streamId; + this.blockSize = blockSize; + } + + public JingleIBBTransport() { + this(StringUtils.randomString(10), JingleIBBTransportElement.DEFAULT_BLOCK_SIZE); + } + + @Override + public JingleIBBTransportElement getElement() { + return new JingleIBBTransportElement(blockSize, streamId); + } + + @Override + public String getNamespace() { + return JingleIBBTransportElement.NAMESPACE_V1; + } + + @Override + public BytestreamSession establishIncomingBytestreamSession(final Session session) { + + InBandBytestreamManager.getByteStreamManager(session.getJingleManager().getConnection()) + .addIncomingBytestreamListener(new BytestreamListener() { + @Override + public void incomingBytestreamRequest(BytestreamRequest request) { + if (request.getFrom().asFullJidIfPossible().equals(session.getPeer()) + && request.getSessionID().equals(theirProposal.getSessionId())) { + BytestreamSession bytestreamSession; + + try { + bytestreamSession = request.accept(); + } catch (InterruptedException | SmackException | XMPPException.XMPPErrorException e) { + .onException(e); + return; + } + callback.onSessionInitiated(bytestreamSession); + } + } + }); + } + + @Override + public BytestreamSession establishOutgoingBytestreamSession(BytestreamSessionEstablishedListener listener) { + return null; + } +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/ibb/JingleIBBTransportAdapter.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/ibb/JingleIBBTransportAdapter.java new file mode 100644 index 000000000..f4ed7f78a --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/ibb/JingleIBBTransportAdapter.java @@ -0,0 +1,21 @@ +package org.jivesoftware.smackx.jingle3.transport.ibb; + +import org.jivesoftware.smackx.jingle3.adapter.JingleTransportAdapter; +import org.jivesoftware.smackx.jingle3.element.JingleContentTransportElement; +import org.jivesoftware.smackx.jingle3.transport.jingle_ibb.element.JingleIBBTransportElement; + +/** + * Created by vanitas on 18.07.17. + */ +public class JingleIBBTransportAdapter implements JingleTransportAdapter { + @Override + public JingleIBBTransport transportFromElement(JingleContentTransportElement element) { + JingleIBBTransportElement transport = (JingleIBBTransportElement) element; + return new JingleIBBTransport(transport.getSessionId(), transport.getBlockSize()); + } + + @Override + public String getNamespace() { + return JingleIBBTransportElement.NAMESPACE_V1; + } +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/JingleIBBTransportManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/JingleIBBTransportManager.java similarity index 79% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/JingleIBBTransportManager.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/JingleIBBTransportManager.java index 1c52512ec..a436a8de7 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/JingleIBBTransportManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/JingleIBBTransportManager.java @@ -14,22 +14,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.transports.jingle_ibb; +package org.jivesoftware.smackx.jingle3.transport.jingle_ibb; import java.util.WeakHashMap; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smackx.jingle.JingleSession; -import org.jivesoftware.smackx.jingle.provider.JingleContentProviderManager; +import org.jivesoftware.smackx.jingle3.provider.JingleContentProviderManager; import org.jivesoftware.smackx.jingle.transports.JingleTransportManager; import org.jivesoftware.smackx.jingle.transports.JingleTransportSession; -import org.jivesoftware.smackx.jingle.transports.jingle_ibb.element.JingleIBBTransport; -import org.jivesoftware.smackx.jingle.transports.jingle_ibb.provider.JingleIBBTransportProvider; +import org.jivesoftware.smackx.jingle3.transport.jingle_ibb.element.JingleIBBTransportElement; +import org.jivesoftware.smackx.jingle3.transport.jingle_ibb.provider.JingleIBBTransportProvider; /** * Manager for Jingle InBandBytestream transports (XEP-0261). */ -public final class JingleIBBTransportManager extends JingleTransportManager { +public final class JingleIBBTransportManager extends JingleTransportManager { private static final WeakHashMap INSTANCES = new WeakHashMap<>(); @@ -49,11 +49,11 @@ public final class JingleIBBTransportManager extends JingleTransportManager transportSession(JingleSession jingleSession) { + public JingleTransportSession transportSession(JingleSession jingleSession) { return new JingleIBBTransportSession(jingleSession); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/JingleIBBTransportSession.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/JingleIBBTransportSession.java similarity index 82% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/JingleIBBTransportSession.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/JingleIBBTransportSession.java index 61efc9e1a..8d4b3ccaa 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/JingleIBBTransportSession.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/JingleIBBTransportSession.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.transports.jingle_ibb; +package org.jivesoftware.smackx.jingle3.transport.jingle_ibb; import java.util.logging.Level; import java.util.logging.Logger; @@ -27,14 +27,14 @@ import org.jivesoftware.smackx.bytestreams.BytestreamRequest; import org.jivesoftware.smackx.bytestreams.BytestreamSession; import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamManager; import org.jivesoftware.smackx.jingle.JingleSession; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleContentTransport; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentTransportElement; import org.jivesoftware.smackx.jingle.transports.JingleTransportInitiationCallback; import org.jivesoftware.smackx.jingle.transports.JingleTransportManager; import org.jivesoftware.smackx.jingle.transports.JingleTransportSession; -import org.jivesoftware.smackx.jingle.transports.jingle_ibb.element.JingleIBBTransport; +import org.jivesoftware.smackx.jingle3.transport.jingle_ibb.element.JingleIBBTransportElement; -public class JingleIBBTransportSession extends JingleTransportSession { +public class JingleIBBTransportSession extends JingleTransportSession { private static final Logger LOGGER = Logger.getLogger(JingleIBBTransportSession.class.getName()); private final JingleIBBTransportManager transportManager; @@ -45,19 +45,19 @@ public class JingleIBBTransportSession extends JingleTransportSession transportManager() { + public JingleTransportManager transportManager() { return JingleIBBTransportManager.getInstanceFor(jingleSession.getConnection()); } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/element/JingleIBBTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/element/JingleIBBTransportElement.java similarity index 78% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/element/JingleIBBTransport.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/element/JingleIBBTransportElement.java index 59afc8d58..3823969d8 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/element/JingleIBBTransport.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/element/JingleIBBTransportElement.java @@ -14,17 +14,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.transports.jingle_ibb.element; +package org.jivesoftware.smackx.jingle3.transport.jingle_ibb.element; import org.jivesoftware.smack.util.StringUtils; import org.jivesoftware.smack.util.XmlStringBuilder; - -import org.jivesoftware.smackx.jingle.element.JingleContentTransport; +import org.jivesoftware.smackx.jingle3.element.JingleContentTransportElement; /** * Transport Element for JingleInBandBytestream transports. */ -public class JingleIBBTransport extends JingleContentTransport { +public class JingleIBBTransportElement extends JingleContentTransportElement { public static final String NAMESPACE_V1 = "urn:xmpp:jingle:transports:ibb:1"; public static final String ATTR_BLOCK_SIZE = "block-size"; public static final String ATTR_SID = "sid"; @@ -34,25 +33,21 @@ public class JingleIBBTransport extends JingleContentTransport { private final short blockSize; private final String sid; - public JingleIBBTransport() { + public JingleIBBTransportElement() { this(DEFAULT_BLOCK_SIZE); } - public JingleIBBTransport(String sid) { + public JingleIBBTransportElement(String sid) { this(DEFAULT_BLOCK_SIZE, sid); } - public JingleIBBTransport(short blockSize) { + public JingleIBBTransportElement(Short blockSize) { this(blockSize, StringUtils.randomString(24)); } - public JingleIBBTransport(short blockSize, String sid) { + public JingleIBBTransportElement(Short blockSize, String sid) { super(null); - if (blockSize > 0) { - this.blockSize = blockSize; - } else { - this.blockSize = DEFAULT_BLOCK_SIZE; - } + this.blockSize = blockSize != null ? blockSize : DEFAULT_BLOCK_SIZE; this.sid = sid; } @@ -77,7 +72,7 @@ public class JingleIBBTransport extends JingleContentTransport { @Override public boolean equals(Object other) { - if (other == null || !(other instanceof JingleIBBTransport)) { + if (other == null || !(other instanceof JingleIBBTransportElement)) { return false; } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/element/package-info.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/element/package-info.java similarity index 92% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/element/package-info.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/element/package-info.java index 3cbb5462e..6117ffa32 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/element/package-info.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/element/package-info.java @@ -19,4 +19,4 @@ * Smack's API for XEP-0261: Jingle In-Band Bytestreams. * Element classes. */ -package org.jivesoftware.smackx.jingle.transports.jingle_ibb.element; +package org.jivesoftware.smackx.jingle3.transport.jingle_ibb.element; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/package-info.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/package-info.java similarity index 92% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/package-info.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/package-info.java index b42da7b09..b956ee167 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/package-info.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/package-info.java @@ -18,4 +18,4 @@ /** * Smack's API for XEP-0261: Jingle In-Band Bytestreams. */ -package org.jivesoftware.smackx.jingle.transports.jingle_ibb; +package org.jivesoftware.smackx.jingle3.transport.jingle_ibb; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/provider/JingleIBBTransportProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/provider/JingleIBBTransportProvider.java similarity index 53% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/provider/JingleIBBTransportProvider.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/provider/JingleIBBTransportProvider.java index 73b027748..e2483cc4c 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/provider/JingleIBBTransportProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/provider/JingleIBBTransportProvider.java @@ -14,27 +14,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.transports.jingle_ibb.provider; +package org.jivesoftware.smackx.jingle3.transport.jingle_ibb.provider; -import org.jivesoftware.smackx.jingle.provider.JingleContentTransportProvider; -import org.jivesoftware.smackx.jingle.transports.jingle_ibb.element.JingleIBBTransport; +import org.jivesoftware.smack.util.ParserUtils; +import org.jivesoftware.smackx.jingle3.provider.JingleContentTransportProvider; +import org.jivesoftware.smackx.jingle3.transport.jingle_ibb.element.JingleIBBTransportElement; import org.xmlpull.v1.XmlPullParser; /** * Parse JingleByteStreamTransport elements. */ -public class JingleIBBTransportProvider extends JingleContentTransportProvider { +public class JingleIBBTransportProvider extends JingleContentTransportProvider { @Override - public JingleIBBTransport parse(XmlPullParser parser, int initialDepth) throws Exception { - String blockSizeString = parser.getAttributeValue(null, JingleIBBTransport.ATTR_BLOCK_SIZE); - String sid = parser.getAttributeValue(null, JingleIBBTransport.ATTR_SID); + public JingleIBBTransportElement parse(XmlPullParser parser, int initialDepth) throws Exception { + Short blockSize = ParserUtils.getShortAttribute(parser, JingleIBBTransportElement.ATTR_BLOCK_SIZE); + String sid = parser.getAttributeValue(null, JingleIBBTransportElement.ATTR_SID); + return new JingleIBBTransportElement(blockSize, sid); + } - short blockSize = -1; - if (blockSizeString != null) { - blockSize = Short.valueOf(blockSizeString); - } - - return new JingleIBBTransport(blockSize, sid); + @Override + public String getNamespace() { + return JingleIBBTransportElement.NAMESPACE_V1; } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/provider/package-info.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/provider/package-info.java similarity index 92% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/provider/package-info.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/provider/package-info.java index 3bf479e8e..85381f0c6 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/provider/package-info.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_ibb/provider/package-info.java @@ -19,4 +19,4 @@ * Smack's API for XEP-0261: Jingle In-Band Bytestreams. * Provider classes. */ -package org.jivesoftware.smackx.jingle.transports.jingle_ibb.provider; +package org.jivesoftware.smackx.jingle3.transport.jingle_ibb.provider; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/JingleS5BTransportManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/JingleS5BTransportManager.java similarity index 75% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/JingleS5BTransportManager.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/JingleS5BTransportManager.java index 2274aaac7..abaeb836e 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/JingleS5BTransportManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/JingleS5BTransportManager.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.transports.jingle_s5b; +package org.jivesoftware.smackx.jingle3.transport.jingle_s5b; import java.util.ArrayList; import java.util.Iterator; @@ -31,14 +31,14 @@ import org.jivesoftware.smackx.bytestreams.socks5.Socks5BytestreamManager; import org.jivesoftware.smackx.bytestreams.socks5.Socks5Proxy; import org.jivesoftware.smackx.bytestreams.socks5.packet.Bytestream; import org.jivesoftware.smackx.jingle.JingleSession; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleAction; -import org.jivesoftware.smackx.jingle.element.JingleContent; -import org.jivesoftware.smackx.jingle.provider.JingleContentProviderManager; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleAction; +import org.jivesoftware.smackx.jingle3.provider.JingleContentProviderManager; import org.jivesoftware.smackx.jingle.transports.JingleTransportManager; import org.jivesoftware.smackx.jingle.transports.JingleTransportSession; -import org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransport; -import org.jivesoftware.smackx.jingle.transports.jingle_s5b.provider.JingleS5BTransportProvider; +import org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransport; +import org.jivesoftware.smackx.jingle3.transport.jingle_s5b.provider.JingleS5BTransportProvider; import org.jxmpp.jid.FullJid; import org.jxmpp.jid.Jid; @@ -144,73 +144,73 @@ public final class JingleS5BTransportManager extends JingleTransportManager candidates, JingleContentTransportInfo info, String streamId, String dstAddr, Bytestream.Mode mode) { + protected JingleS5BTransport(List candidates, JingleContentTransportInfoElement info, String streamId, String dstAddr, Bytestream.Mode mode) { super(candidates, info); StringUtils.requireNotNullOrEmpty(streamId, "sid MUST be neither null, nor empty."); this.streamId = streamId; @@ -76,7 +76,7 @@ public class JingleS5BTransport extends JingleContentTransport { } public JingleS5BTransportCandidate getCandidate(String candidateId) { - for (JingleContentTransportCandidate c : candidates) { + for (JingleContentTransportCandidateElement c : candidates) { JingleS5BTransportCandidate candidate = (JingleS5BTransportCandidate) c; if (candidate.getCandidateId().equals(candidateId)) { return candidate; @@ -93,8 +93,8 @@ public class JingleS5BTransport extends JingleContentTransport { private String streamId; private String dstAddr; private Bytestream.Mode mode; - private final ArrayList candidates = new ArrayList<>(); - private JingleContentTransportInfo info; + private final ArrayList candidates = new ArrayList<>(); + private JingleContentTransportInfoElement info; public Builder setStreamId(String sid) { this.streamId = sid; @@ -120,7 +120,7 @@ public class JingleS5BTransport extends JingleContentTransport { return this; } - public Builder setTransportInfo(JingleContentTransportInfo info) { + public Builder setTransportInfo(JingleContentTransportInfoElement info) { if (!candidates.isEmpty()) { throw new IllegalStateException("Builder has already at least one candidate set. " + "The transport can only have either an info or transport candidates, not both."); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportCandidate.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/elements/JingleS5BTransportCandidate.java similarity index 96% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportCandidate.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/elements/JingleS5BTransportCandidate.java index b16e5f563..062214718 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportCandidate.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/elements/JingleS5BTransportCandidate.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements; +package org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements; import java.util.logging.Logger; @@ -22,7 +22,7 @@ import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.StringUtils; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smackx.bytestreams.socks5.packet.Bytestream; -import org.jivesoftware.smackx.jingle.element.JingleContentTransportCandidate; +import org.jivesoftware.smackx.jingle3.element.JingleContentTransportCandidateElement; import org.jxmpp.jid.Jid; import org.jxmpp.jid.impl.JidCreate; @@ -31,7 +31,7 @@ import org.jxmpp.stringprep.XmppStringprepException; /** * TransportCandidate for Jingle Socks5Bytestream transports. */ -public final class JingleS5BTransportCandidate extends JingleContentTransportCandidate { +public final class JingleS5BTransportCandidate extends JingleContentTransportCandidateElement { private static final Logger LOGGER = Logger.getLogger(JingleS5BTransportCandidate.class.getName()); 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/jingle3/transport/jingle_s5b/elements/JingleS5BTransportInfo.java similarity index 96% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportInfo.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/elements/JingleS5BTransportInfo.java index 1cfc7ee42..2def8b986 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/jingle3/transport/jingle_s5b/elements/JingleS5BTransportInfo.java @@ -14,15 +14,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements; +package org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements; import org.jivesoftware.smack.util.XmlStringBuilder; -import org.jivesoftware.smackx.jingle.element.JingleContentTransportInfo; +import org.jivesoftware.smackx.jingle3.element.JingleContentTransportInfoElement; /** * Class representing possible SOCKS5 TransportInfo elements. */ -public abstract class JingleS5BTransportInfo extends JingleContentTransportInfo { +public abstract class JingleS5BTransportInfo extends JingleContentTransportInfoElement { private static CandidateError CEI; private static ProxyError PEI; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/package-info.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/elements/package-info.java similarity index 92% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/package-info.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/elements/package-info.java index 2a30922f4..2b1e70fa1 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/package-info.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/elements/package-info.java @@ -19,4 +19,4 @@ * Smack's API for XEP-0260: Jingle SOCKS5 Bytestreams. * Element classes. */ -package org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements; +package org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/package-info.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/package-info.java similarity index 92% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/package-info.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/package-info.java index 4f3ab5356..a975c7fea 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/package-info.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/package-info.java @@ -18,4 +18,4 @@ /** * Smack's API for XEP-0260: Jingle SOCKS5 Bytestreams. */ -package org.jivesoftware.smackx.jingle.transports.jingle_s5b; +package org.jivesoftware.smackx.jingle3.transport.jingle_s5b; 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/jingle3/transport/jingle_s5b/provider/JingleS5BTransportProvider.java similarity index 85% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/provider/JingleS5BTransportProvider.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/provider/JingleS5BTransportProvider.java index 60324e8c2..f98b4a080 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/jingle3/transport/jingle_s5b/provider/JingleS5BTransportProvider.java @@ -14,24 +14,24 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.transports.jingle_s5b.provider; +package org.jivesoftware.smackx.jingle3.transport.jingle_s5b.provider; import static org.jivesoftware.smackx.bytestreams.socks5.packet.Bytestream.Mode.tcp; import static org.jivesoftware.smackx.bytestreams.socks5.packet.Bytestream.Mode.udp; -import static org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransportCandidate.ATTR_CID; -import static org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransportCandidate.ATTR_HOST; -import static org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransportCandidate.ATTR_JID; -import static org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransportCandidate.ATTR_PORT; -import static org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransportCandidate.ATTR_PRIORITY; -import static org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransportCandidate.ATTR_TYPE; +import static org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransportCandidate.ATTR_CID; +import static org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransportCandidate.ATTR_HOST; +import static org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransportCandidate.ATTR_JID; +import static org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransportCandidate.ATTR_PORT; +import static org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransportCandidate.ATTR_PRIORITY; +import static org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransportCandidate.ATTR_TYPE; import static org.xmlpull.v1.XmlPullParser.END_TAG; import static org.xmlpull.v1.XmlPullParser.START_TAG; -import org.jivesoftware.smackx.jingle.element.JingleContentTransport; -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.jingle3.element.JingleContentTransportElement; +import org.jivesoftware.smackx.jingle3.provider.JingleContentTransportProvider; +import org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransport; +import org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransportCandidate; +import org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransportInfo; import org.xmlpull.v1.XmlPullParser; @@ -107,7 +107,7 @@ public class JingleS5BTransportProvider extends JingleContentTransportProviderXEP-0260: Jingle SOCKS5 Bytestreams. * Provider classes. */ -package org.jivesoftware.smackx.jingle.transports.jingle_s5b.provider; +package org.jivesoftware.smackx.jingle3.transport.jingle_s5b.provider; diff --git a/smack-extensions/src/main/resources/org.jivesoftware.smack.extensions/extensions.providers b/smack-extensions/src/main/resources/org.jivesoftware.smack.extensions/extensions.providers index fc23362a1..9aecd9f68 100644 --- a/smack-extensions/src/main/resources/org.jivesoftware.smack.extensions/extensions.providers +++ b/smack-extensions/src/main/resources/org.jivesoftware.smack.extensions/extensions.providers @@ -548,31 +548,31 @@ jingle urn:xmpp:jingle:1 - org.jivesoftware.smackx.jingle.provider.JingleProvider + org.jivesoftware.smackx.jingle3.provider.JingleProvider out-of-order urn:xmpp:jingle:errors:1 - org.jivesoftware.smackx.jingle.provider.JingleErrorProvider + org.jivesoftware.smackx.jingle3.provider.JingleErrorProvider unknown-session urn:xmpp:jingle:errors:1 - org.jivesoftware.smackx.jingle.provider.JingleErrorProvider + org.jivesoftware.smackx.jingle3.provider.JingleErrorProvider unsupported-content urn:xmpp:jingle:errors:1 - org.jivesoftware.smackx.jingle.provider.JingleErrorProvider + org.jivesoftware.smackx.jingle3.provider.JingleErrorProvider unsupported-transports urn:xmpp:jingle:errors:1 - org.jivesoftware.smackx.jingle.provider.JingleErrorProvider + org.jivesoftware.smackx.jingle3.provider.JingleErrorProvider diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleActionTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleActionTest.java index e43e78e57..a5ae679ef 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleActionTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleActionTest.java @@ -20,7 +20,7 @@ import static junit.framework.TestCase.assertEquals; import org.jivesoftware.smack.test.util.SmackTestSuite; -import org.jivesoftware.smackx.jingle.element.JingleAction; +import org.jivesoftware.smackx.jingle3.element.JingleAction; import org.junit.Test; diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentElementTest.java similarity index 69% rename from smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentTest.java rename to smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentElementTest.java index bd1a430a8..a6d9e6f27 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentElementTest.java @@ -22,48 +22,48 @@ import static junit.framework.TestCase.assertNotSame; import static junit.framework.TestCase.assertNull; import org.jivesoftware.smack.test.util.SmackTestSuite; -import org.jivesoftware.smackx.jingle.element.JingleContent; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; import org.junit.Test; /** * Test the JingleContent class. */ -public class JingleContentTest extends SmackTestSuite { +public class JingleContentElementTest extends SmackTestSuite { @Test(expected = NullPointerException.class) public void emptyBuilderThrowsTest() { - JingleContent.Builder builder = JingleContent.getBuilder(); + JingleContentElement.Builder builder = JingleContentElement.getBuilder(); builder.build(); } @Test(expected = IllegalArgumentException.class) public void onlyCreatorBuilderThrowsTest() { - JingleContent.Builder builder = JingleContent.getBuilder(); - builder.setCreator(JingleContent.Creator.initiator); + JingleContentElement.Builder builder = JingleContentElement.getBuilder(); + builder.setCreator(JingleContentElement.Creator.initiator); builder.build(); } @Test public void parserTest() throws Exception { - JingleContent.Builder builder = JingleContent.getBuilder(); + JingleContentElement.Builder builder = JingleContentElement.getBuilder(); - builder.setCreator(JingleContent.Creator.initiator); + builder.setCreator(JingleContentElement.Creator.initiator); builder.setName("A name"); - JingleContent content = builder.build(); + JingleContentElement content = builder.build(); assertNotNull(content); assertNull(content.getDescription()); - assertEquals(JingleContent.Creator.initiator, content.getCreator()); + assertEquals(JingleContentElement.Creator.initiator, content.getCreator()); assertEquals("A name", content.getName()); - builder.setSenders(JingleContent.Senders.both); + builder.setSenders(JingleContentElement.Senders.both); content = builder.build(); - assertEquals(JingleContent.Senders.both, content.getSenders()); + assertEquals(JingleContentElement.Senders.both, content.getSenders()); builder.setDisposition("session"); - JingleContent content1 = builder.build(); + JingleContentElement content1 = builder.build(); assertEquals("session", content1.getDisposition()); assertNotSame(content.toXML().toString(), content1.toXML().toString()); assertEquals(content1.toXML().toString(), builder.build().toXML().toString()); diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentProviderManagerTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentProviderManagerTest.java index 69c155b05..902ac41a8 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentProviderManagerTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentProviderManagerTest.java @@ -20,11 +20,11 @@ import static junit.framework.TestCase.assertEquals; import static junit.framework.TestCase.assertNull; import org.jivesoftware.smack.test.util.SmackTestSuite; -import org.jivesoftware.smackx.jingle.provider.JingleContentProviderManager; +import org.jivesoftware.smackx.jingle3.provider.JingleContentProviderManager; import org.jivesoftware.smackx.jingle.transports.jingle_ibb.element.JingleIBBTransport; import org.jivesoftware.smackx.jingle.transports.jingle_ibb.provider.JingleIBBTransportProvider; -import org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransport; -import org.jivesoftware.smackx.jingle.transports.jingle_s5b.provider.JingleS5BTransportProvider; +import org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransport; +import org.jivesoftware.smackx.jingle3.transport.jingle_s5b.provider.JingleS5BTransportProvider; import org.junit.Test; diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleElementTest.java similarity index 84% rename from smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleTest.java rename to smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleElementTest.java index c7827e475..1cea1b493 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleElementTest.java @@ -22,8 +22,8 @@ import static junit.framework.TestCase.assertTrue; import org.jivesoftware.smack.test.util.SmackTestSuite; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleAction; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleAction; import org.junit.Test; import org.jxmpp.jid.FullJid; @@ -33,11 +33,11 @@ import org.jxmpp.stringprep.XmppStringprepException; /** * Test the Jingle class. */ -public class JingleTest extends SmackTestSuite { +public class JingleElementTest extends SmackTestSuite { @Test(expected = IllegalArgumentException.class) public void emptyBuilderTest() { - Jingle.Builder builder = Jingle.getBuilder(); + JingleElement.Builder builder = JingleElement.getBuilder(); builder.build(); } @@ -45,7 +45,7 @@ public class JingleTest extends SmackTestSuite { public void onlySessionIdBuilderTest() { String sessionId = "testSessionId"; - Jingle.Builder builder = Jingle.getBuilder(); + JingleElement.Builder builder = JingleElement.getBuilder(); builder.setSessionId(sessionId); builder.build(); } @@ -54,7 +54,7 @@ public class JingleTest extends SmackTestSuite { public void parserTest() throws XmppStringprepException { String sessionId = "testSessionId"; - Jingle.Builder builder = Jingle.getBuilder(); + JingleElement.Builder builder = JingleElement.getBuilder(); builder.setSessionId(sessionId); builder.setAction(JingleAction.session_initiate); @@ -63,7 +63,7 @@ public class JingleTest extends SmackTestSuite { builder.setInitiator(romeo); builder.setResponder(juliet); - Jingle jingle = builder.build(); + JingleElement jingle = builder.build(); assertNotNull(jingle); assertEquals(romeo, jingle.getInitiator()); assertEquals(juliet, jingle.getResponder()); diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleErrorTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleErrorElementTest.java similarity index 73% rename from smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleErrorTest.java rename to smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleErrorElementTest.java index 6ca6d88a9..8f4c0c8a3 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleErrorTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleErrorElementTest.java @@ -20,47 +20,47 @@ import static junit.framework.TestCase.assertEquals; import org.jivesoftware.smack.test.util.SmackTestSuite; import org.jivesoftware.smack.test.util.TestUtils; -import org.jivesoftware.smackx.jingle.element.JingleError; -import org.jivesoftware.smackx.jingle.provider.JingleErrorProvider; +import org.jivesoftware.smackx.jingle3.element.JingleErrorElement; +import org.jivesoftware.smackx.jingle3.provider.JingleErrorProvider; import org.junit.Test; /** * Test the JingleError class. */ -public class JingleErrorTest extends SmackTestSuite { +public class JingleErrorElementTest extends SmackTestSuite { @Test public void tieBreakTest() throws Exception { String xml = ""; - JingleError error = new JingleErrorProvider().parse(TestUtils.getParser(xml)); + JingleErrorElement error = new JingleErrorProvider().parse(TestUtils.getParser(xml)); assertEquals(xml, error.toXML().toString()); } @Test public void unknownSessionTest() throws Exception { String xml = ""; - JingleError error = new JingleErrorProvider().parse(TestUtils.getParser(xml)); + JingleErrorElement error = new JingleErrorProvider().parse(TestUtils.getParser(xml)); assertEquals(xml, error.toXML().toString()); } @Test public void unsupportedInfoTest() throws Exception { String xml = ""; - JingleError error = new JingleErrorProvider().parse(TestUtils.getParser(xml)); + JingleErrorElement error = new JingleErrorProvider().parse(TestUtils.getParser(xml)); assertEquals(xml, error.toXML().toString()); } @Test public void outOfOrderTest() throws Exception { String xml = ""; - JingleError error = new JingleErrorProvider().parse(TestUtils.getParser(xml)); + JingleErrorElement error = new JingleErrorProvider().parse(TestUtils.getParser(xml)); assertEquals(xml, error.toXML().toString()); } @Test(expected = IllegalArgumentException.class) public void illegalArgumentTest() { - JingleError.fromString("inexistent-error"); + JingleErrorElement.fromString("inexistent-error"); } diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleManagerTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleManagerTest.java index 24c1f08ee..ad4bcb76b 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleManagerTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleManagerTest.java @@ -25,7 +25,7 @@ import org.jivesoftware.smack.DummyConnection; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.test.util.SmackTestSuite; -import org.jivesoftware.smackx.jingle.element.Jingle; +import org.jivesoftware.smackx.jingle3.element.JingleElement; import org.junit.Test; import org.jxmpp.jid.FullJid; @@ -80,7 +80,7 @@ public class JingleManagerTest extends SmackTestSuite { String stubNamespace = "urn:xmpp:jingle:application:stub:0"; JingleHandler stub = new JingleHandler() { @Override - public IQ handleJingleRequest(Jingle jingle) { + public IQ handleJingleRequest(JingleElement jingle) { return null; } }; diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleReasonTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleReasonElementTest.java similarity index 60% rename from smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleReasonTest.java rename to smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleReasonElementTest.java index d62de70b3..666ee0a2e 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleReasonTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleReasonElementTest.java @@ -20,67 +20,67 @@ import static junit.framework.TestCase.assertEquals; import org.jivesoftware.smack.test.util.SmackTestSuite; -import org.jivesoftware.smackx.jingle.element.JingleReason; +import org.jivesoftware.smackx.jingle3.element.JingleReasonElement; import org.junit.Test; /** * Test JingleReason functionality. */ -public class JingleReasonTest extends SmackTestSuite { +public class JingleReasonElementTest extends SmackTestSuite { @Test public void parserTest() { assertEquals("", - JingleReason.Success.toXML().toString()); + JingleReasonElement.Success.toXML().toString()); assertEquals("", - JingleReason.Busy.toXML().toString()); + JingleReasonElement.Busy.toXML().toString()); assertEquals("", - JingleReason.Cancel.toXML().toString()); + JingleReasonElement.Cancel.toXML().toString()); assertEquals("", - JingleReason.ConnectivityError.toXML().toString()); + JingleReasonElement.ConnectivityError.toXML().toString()); assertEquals("", - JingleReason.Decline.toXML().toString()); + JingleReasonElement.Decline.toXML().toString()); assertEquals("", - JingleReason.Expired.toXML().toString()); + JingleReasonElement.Expired.toXML().toString()); assertEquals("", - JingleReason.UnsupportedTransports.toXML().toString()); + JingleReasonElement.UnsupportedTransports.toXML().toString()); assertEquals("", - JingleReason.FailedTransport.toXML().toString()); + JingleReasonElement.FailedTransport.toXML().toString()); assertEquals("", - JingleReason.GeneralError.toXML().toString()); + JingleReasonElement.GeneralError.toXML().toString()); assertEquals("", - JingleReason.Gone.toXML().toString()); + JingleReasonElement.Gone.toXML().toString()); assertEquals("", - JingleReason.MediaError.toXML().toString()); + JingleReasonElement.MediaError.toXML().toString()); assertEquals("", - JingleReason.SecurityError.toXML().toString()); + JingleReasonElement.SecurityError.toXML().toString()); assertEquals("", - JingleReason.UnsupportedApplications.toXML().toString()); + JingleReasonElement.UnsupportedApplications.toXML().toString()); assertEquals("", - JingleReason.Timeout.toXML().toString()); + JingleReasonElement.Timeout.toXML().toString()); assertEquals("", - JingleReason.FailedApplication.toXML().toString()); + JingleReasonElement.FailedApplication.toXML().toString()); assertEquals("", - JingleReason.IncompatibleParameters.toXML().toString()); + JingleReasonElement.IncompatibleParameters.toXML().toString()); assertEquals("1234", - JingleReason.AlternativeSession("1234").toXML().toString()); + JingleReasonElement.AlternativeSession("1234").toXML().toString()); } @Test(expected = NullPointerException.class) public void alternativeSessionEmptyStringTest() { // Alternative sessionID must not be empty - JingleReason.AlternativeSession(""); + JingleReasonElement.AlternativeSession(""); } @Test(expected = NullPointerException.class) public void alternativeSessionNullStringTest() { // Alternative sessionID must not be null - JingleReason.AlternativeSession(null); + JingleReasonElement.AlternativeSession(null); } @Test(expected = IllegalArgumentException.class) public void illegalArgumentTest() { - JingleReason.Reason.fromString("illegal-reason"); + JingleReasonElement.Reason.fromString("illegal-reason"); } } diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleSessionTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleSessionTest.java index abd65fe45..6ffa667dd 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleSessionTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleSessionTest.java @@ -28,9 +28,9 @@ import org.jivesoftware.smack.DummyConnection; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.packet.TestIQ; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleAction; -import org.jivesoftware.smackx.jingle.element.JingleContent; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleAction; import org.jivesoftware.smackx.jingle.transports.jingle_ibb.JingleIBBTransportSession; import org.junit.Test; @@ -125,7 +125,7 @@ public class JingleSessionTest { super(initiator, responder, role, sid); } - public SimpleSession(FullJid initiator, FullJid responder, Role role, String sid, List contents) { + public SimpleSession(FullJid initiator, FullJid responder, Role role, String sid, List contents) { super(initiator, responder, role, sid, contents); } @@ -140,77 +140,77 @@ public class JingleSessionTest { } @Override - public IQ handleSessionInitiate(Jingle jingle) { + public IQ handleSessionInitiate(JingleElement jingle) { return sessionInitiateResult; } @Override - public IQ handleSessionAccept(Jingle jingle) { + public IQ handleSessionAccept(JingleElement jingle) { return sessionAcceptResult; } @Override - public IQ handleSessionTerminate(Jingle jingle) { + public IQ handleSessionTerminate(JingleElement jingle) { return sessionTerminateResult; } @Override - public IQ handleSessionInfo(Jingle jingle) { + public IQ handleSessionInfo(JingleElement jingle) { return sessionInfoResult; } @Override - public IQ handleTransportAccept(Jingle jingle) { + public IQ handleTransportAccept(JingleElement jingle) { return transportAcceptResult; } @Override - public IQ handleTransportReject(Jingle jingle) { + public IQ handleTransportReject(JingleElement jingle) { return transportRejectResult; } @Override - public IQ handleTransportReplace(Jingle jingle) { + public IQ handleTransportReplace(JingleElement jingle) { return transportReplaceResult; } @Override - public IQ handleContentAdd(Jingle jingle) { + public IQ handleContentAdd(JingleElement jingle) { return contentAddResult; } @Override - public IQ handleContentAccept(Jingle jingle) { + public IQ handleContentAccept(JingleElement jingle) { return contentAcceptResult; } @Override - public IQ handleContentReject(Jingle jingle) { + public IQ handleContentReject(JingleElement jingle) { return contentRejectResult; } @Override - public IQ handleContentRemove(Jingle jingle) { + public IQ handleContentRemove(JingleElement jingle) { return contentRemoveResult; } @Override - public IQ handleContentModify(Jingle jingle) { + public IQ handleContentModify(JingleElement jingle) { return contentModifyResult; } @Override - public IQ handleDescriptionInfo(Jingle jingle) { + public IQ handleDescriptionInfo(JingleElement jingle) { return descriptionInfoResult; } @Override - public IQ handleSecurityInfo(Jingle jingle) { + public IQ handleSecurityInfo(JingleElement jingle) { return securityInfoResult; } } - private Jingle simpleAction(JingleAction action) { - return Jingle.getBuilder().setAction(action).setSessionId("test").build(); + private JingleElement simpleAction(JingleAction action) { + return JingleElement.getBuilder().setAction(action).setSessionId("test").build(); } } diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleTransportMethodManagerTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleTransportMethodManagerTest.java index 4081ee30f..9855ad79c 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleTransportMethodManagerTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleTransportMethodManagerTest.java @@ -27,16 +27,16 @@ import java.util.Set; import org.jivesoftware.smack.DummyConnection; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.test.util.SmackTestSuite; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleAction; -import org.jivesoftware.smackx.jingle.element.JingleContent; -import org.jivesoftware.smackx.jingle.element.JingleContentTransport; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleAction; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleContentTransportElement; import org.jivesoftware.smackx.jingle.transports.JingleTransportManager; import org.jivesoftware.smackx.jingle.transports.JingleTransportSession; import org.jivesoftware.smackx.jingle.transports.jingle_ibb.JingleIBBTransportManager; import org.jivesoftware.smackx.jingle.transports.jingle_ibb.element.JingleIBBTransport; -import org.jivesoftware.smackx.jingle.transports.jingle_s5b.JingleS5BTransportManager; -import org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransport; +import org.jivesoftware.smackx.jingle3.transport.jingle_s5b.JingleS5BTransportManager; +import org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransport; import org.junit.Test; import org.jxmpp.jid.impl.JidCreate; @@ -80,11 +80,11 @@ public class JingleTransportMethodManagerTest extends SmackTestSuite { assertEquals(stub, JingleTransportMethodManager.getTransportManager(connection, JingleStubTransportManager.NAMESPACE)); assertEquals(JingleS5BTransportManager.getInstanceFor(connection), jtmm.getBestAvailableTransportManager()); - Jingle jingle = Jingle.getBuilder().setSessionId("test").setAction(JingleAction.session_initiate) + JingleElement jingle = JingleElement.getBuilder().setSessionId("test").setAction(JingleAction.session_initiate) .setInitiator(JidCreate.fullFrom("test@test.test/test")) .addJingleContent( - JingleContent.getBuilder().setCreator(JingleContent.Creator.initiator).setName("content") - .setSenders(JingleContent.Senders.initiator).setTransport( + JingleContentElement.getBuilder().setCreator(JingleContentElement.Creator.initiator).setName("content") + .setSenders(JingleContentElement.Senders.initiator).setTransport( new JingleIBBTransport("transportId")).build()).build(); assertEquals(JingleIBBTransportManager.getInstanceFor(connection), jtmm.getTransportManager(jingle)); assertEquals(JingleIBBTransportManager.getInstanceFor(connection), @@ -100,7 +100,7 @@ public class JingleTransportMethodManagerTest extends SmackTestSuite { assertEquals(stub, JingleTransportMethodManager.getBestAvailableTransportManager(connection)); } - private static class JingleStubTransportManager extends JingleTransportManager { + private static class JingleStubTransportManager extends JingleTransportManager { public static final String NAMESPACE = "urn:xmpp:jingle:transports:stub:0"; @@ -114,7 +114,7 @@ public class JingleTransportMethodManagerTest extends SmackTestSuite { } @Override - public JingleTransportSession transportSession(JingleSession jingleSession) { + public JingleTransportSession transportSession(JingleSession jingleSession) { return null; } diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleUtilTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleUtilTest.java index 1a2ff4e65..bdea5846f 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleUtilTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleUtilTest.java @@ -28,11 +28,11 @@ import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.test.util.SmackTestSuite; import org.jivesoftware.smack.test.util.TestUtils; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleAction; -import org.jivesoftware.smackx.jingle.element.JingleContent; -import org.jivesoftware.smackx.jingle.element.JingleReason; -import org.jivesoftware.smackx.jingle.provider.JingleProvider; +import org.jivesoftware.smackx.jingle3.element.JingleContentElement; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleAction; +import org.jivesoftware.smackx.jingle3.element.JingleReasonElement; +import org.jivesoftware.smackx.jingle3.provider.JingleProvider; import org.jivesoftware.smackx.jingle.transports.jingle_ibb.element.JingleIBBTransport; import org.junit.Before; @@ -69,7 +69,7 @@ public class JingleUtilTest extends SmackTestSuite { @Test public void createAckTest() { - Jingle jingle = Jingle.getBuilder().setAction(JingleAction.session_initiate).setInitiator(romeo).setSessionId("test").build(); + JingleElement jingle = JingleElement.getBuilder().setAction(JingleAction.session_initiate).setInitiator(romeo).setSessionId("test").build(); IQ result = jutil.createAck(jingle); assertEquals(jingle.getStanzaId(), result.getStanzaId()); assertTrue(result.getType() == IQ.Type.result); @@ -77,7 +77,7 @@ public class JingleUtilTest extends SmackTestSuite { @Test public void createSessionTerminateDeclineTest() throws Exception { - Jingle terminate = jutil.createSessionTerminateDecline(juliet, "thisismadness"); + JingleElement terminate = jutil.createSessionTerminateDecline(juliet, "thisismadness"); String jingleXML = ""; String xml = getIQXML(romeo, juliet, terminate.getStanzaId(), jingleXML); assertXMLEqual(xml, terminate.toXML().toString()); - Jingle jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); + JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); assertNotNull(jingle); assertEquals(jingle.getAction(), JingleAction.session_terminate); - assertEquals(jingle.getReason().asEnum(), JingleReason.Reason.decline); + assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.decline); } @Test public void createSessionTerminateSuccessTest() throws Exception { - Jingle success = jutil.createSessionTerminateSuccess(juliet, "thisissparta"); + JingleElement success = jutil.createSessionTerminateSuccess(juliet, "thisissparta"); String jingleXML = ""; String xml = getIQXML(romeo, juliet, success.getStanzaId(), jingleXML); assertXMLEqual(xml, success.toXML().toString()); - Jingle jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); + JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); assertNotNull(jingle); assertEquals(jingle.getAction(), JingleAction.session_terminate); - assertEquals(jingle.getReason().asEnum(), JingleReason.Reason.success); + assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.success); } @Test public void createSessionTerminateBusyTest() throws Exception { - Jingle busy = jutil.createSessionTerminateBusy(juliet, "thisispatrick"); + JingleElement busy = jutil.createSessionTerminateBusy(juliet, "thisispatrick"); String jingleXML = ""; String xml = getIQXML(romeo, juliet, busy.getStanzaId(), jingleXML); assertXMLEqual(xml, busy.toXML().toString()); - Jingle jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); + JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); assertNotNull(jingle); assertEquals(jingle.getAction(), JingleAction.session_terminate); - assertEquals(jingle.getReason().asEnum(), JingleReason.Reason.busy); + assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.busy); } @Test public void createSessionTerminateAlternativeSessionTest() throws Exception { - Jingle busy = jutil.createSessionTerminateAlternativeSession(juliet, "thisistherhythm", "ofthenight"); + JingleElement busy = jutil.createSessionTerminateAlternativeSession(juliet, "thisistherhythm", "ofthenight"); String jingleXML = ""; String xml = getIQXML(romeo, juliet, busy.getStanzaId(), jingleXML); assertXMLEqual(xml, busy.toXML().toString()); - Jingle jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); + JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); assertNotNull(jingle); assertEquals(jingle.getAction(), JingleAction.session_terminate); - assertEquals(jingle.getReason().asEnum(), JingleReason.Reason.alternative_session); - JingleReason.AlternativeSession alt = (JingleReason.AlternativeSession) jingle.getReason(); + assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.alternative_session); + JingleReasonElement.AlternativeSession alt = (JingleReasonElement.AlternativeSession) jingle.getReason(); assertEquals("ofthenight", alt.getAlternativeSessionId()); } @Test public void createSessionTerminateCancelTest() throws Exception { - Jingle cancel = jutil.createSessionTerminateCancel(juliet, "thisistheend"); + JingleElement cancel = jutil.createSessionTerminateCancel(juliet, "thisistheend"); String jingleXML = ""; String xml = getIQXML(romeo, juliet, cancel.getStanzaId(), jingleXML); assertXMLEqual(xml, cancel.toXML().toString()); - Jingle jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); + JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); assertNotNull(jingle); assertEquals(jingle.getAction(), JingleAction.session_terminate); - assertEquals(jingle.getReason().asEnum(), JingleReason.Reason.cancel); + assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.cancel); } @Test public void createSessionTerminateUnsupportedTransportsTest() throws Exception { - Jingle unsupportedTransports = jutil.createSessionTerminateUnsupportedTransports(juliet, "thisisus"); + JingleElement unsupportedTransports = jutil.createSessionTerminateUnsupportedTransports(juliet, "thisisus"); String jingleXML = ""; String xml = getIQXML(romeo, juliet, unsupportedTransports.getStanzaId(), jingleXML); assertXMLEqual(xml, unsupportedTransports.toXML().toString()); - Jingle jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); + JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); assertNotNull(jingle); assertEquals(jingle.getAction(), JingleAction.session_terminate); - assertEquals(jingle.getReason().asEnum(), JingleReason.Reason.unsupported_transports); + assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.unsupported_transports); } @Test public void createSessionTerminateUnsupportedApplicationsTest() throws Exception { - Jingle unsupportedApplications = jutil.createSessionTerminateUnsupportedApplications(juliet, "thisiswar"); + JingleElement unsupportedApplications = jutil.createSessionTerminateUnsupportedApplications(juliet, "thisiswar"); String jingleXML = ""; String xml = getIQXML(romeo, juliet, unsupportedApplications.getStanzaId(), jingleXML); assertXMLEqual(xml, unsupportedApplications.toXML().toString()); - Jingle jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); + JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); assertNotNull(jingle); assertEquals(jingle.getAction(), JingleAction.session_terminate); - assertEquals(jingle.getReason().asEnum(), JingleReason.Reason.unsupported_applications); + assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.unsupported_applications); } @Test public void createSessionTerminateFailedTransportTest() throws IOException, SAXException { - Jingle failedTransport = jutil.createSessionTerminateFailedTransport(juliet, "derailed"); + JingleElement failedTransport = jutil.createSessionTerminateFailedTransport(juliet, "derailed"); String jingleXML = ""; String xml = getIQXML(romeo, juliet, ping.getStanzaId(), jingleXML); assertXMLEqual(xml, ping.toXML().toString()); - Jingle jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); + JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); assertNotNull(jingle); assertEquals(JingleAction.session_info, jingle.getAction()); } @Test public void createSessionTerminateContentCancelTest() throws Exception { - Jingle cancel = jutil.createSessionTerminateContentCancel(juliet, "thisismumbo#5", JingleContent.Creator.initiator, "content123"); + JingleElement cancel = jutil.createSessionTerminateContentCancel(juliet, "thisismumbo#5", JingleContentElement.Creator.initiator, "content123"); String jingleXML = ""; String xml = getIQXML(romeo, juliet, cancel.getStanzaId(), jingleXML); assertXMLEqual(xml, cancel.toXML().toString()); - Jingle jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); + JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML)); assertNotNull(jingle); assertEquals(JingleAction.session_terminate, jingle.getAction()); - assertEquals(JingleReason.Reason.cancel, jingle.getReason().asEnum()); + assertEquals(JingleReasonElement.Reason.cancel, jingle.getReason().asEnum()); assertEquals("thisismumbo#5", jingle.getSid()); - JingleContent content = jingle.getContents().get(0); + JingleContentElement content = jingle.getContents().get(0); assertNotNull(content); assertEquals("content123", content.getName()); - assertEquals(JingleContent.Creator.initiator, content.getCreator()); + assertEquals(JingleContentElement.Creator.initiator, content.getCreator()); } @Test public void createSessionTerminateIncompatibleParameters() throws IOException, SAXException { - Jingle terminate = jutil.createSessionTerminateIncompatibleParameters(juliet, "incompatibleSID"); + JingleElement terminate = jutil.createSessionTerminateIncompatibleParameters(juliet, "incompatibleSID"); String jingleXML = ""; String xml = getIQXML(romeo, juliet, terminate.getStanzaId(), jingleXML); assertXMLEqual(xml, terminate.toXML().toString()); - assertEquals(JingleReason.Reason.incompatible_parameters, terminate.getReason().asEnum()); + assertEquals(JingleReasonElement.Reason.incompatible_parameters, terminate.getReason().asEnum()); assertEquals("incompatibleSID", terminate.getSid()); } @Test public void createTransportAcceptTest() throws IOException, SAXException { - Jingle transportAccept = jutil.createTransportAccept(juliet, romeo, "transAcc", JingleContent.Creator.initiator, "cname", new JingleIBBTransport("transid")); + JingleElement transportAccept = jutil.createTransportAccept(juliet, romeo, "transAcc", JingleContentElement.Creator.initiator, "cname", new JingleIBBTransport("transid")); String jingleXML = ""; } - private Jingle defaultJingle(FullJid recipient, String sessionId) { + private JingleElement defaultJingle(FullJid recipient, String sessionId) { return jutil.createSessionPing(recipient, sessionId); } } diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/JingleS5BTransportTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/JingleS5BTransportTest.java similarity index 97% rename from smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/JingleS5BTransportTest.java rename to smack-extensions/src/test/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/JingleS5BTransportTest.java index 1df9a9410..3ab2a20c5 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/JingleS5BTransportTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle3/transport/jingle_s5b/JingleS5BTransportTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.transports.jingle_s5b; +package org.jivesoftware.smackx.jingle3.transport.jingle_s5b; import static junit.framework.TestCase.assertEquals; import static junit.framework.TestCase.assertFalse; @@ -26,10 +26,10 @@ import org.jivesoftware.smack.test.util.SmackTestSuite; import org.jivesoftware.smack.test.util.TestUtils; import org.jivesoftware.smackx.bytestreams.socks5.packet.Bytestream; -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.provider.JingleS5BTransportProvider; +import org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransport; +import org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransportCandidate; +import org.jivesoftware.smackx.jingle3.transport.jingle_s5b.elements.JingleS5BTransportInfo; +import org.jivesoftware.smackx.jingle3.transport.jingle_s5b.provider.JingleS5BTransportProvider; import org.junit.Test; import org.jxmpp.jid.FullJid; diff --git a/smack-integration-test/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/FileTransferTest.java b/smack-integration-test/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/FileTransferTest.java index 6b9e9eec5..1d244c116 100644 --- a/smack-integration-test/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/FileTransferTest.java +++ b/smack-integration-test/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/FileTransferTest.java @@ -28,8 +28,8 @@ import java.util.logging.Level; import org.jivesoftware.smack.SmackException; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smackx.bytestreams.socks5.Socks5Proxy; -import org.jivesoftware.smackx.jingle.element.Jingle; -import org.jivesoftware.smackx.jingle.element.JingleReason; +import org.jivesoftware.smackx.jingle3.element.JingleElement; +import org.jivesoftware.smackx.jingle3.element.JingleReasonElement; import org.jivesoftware.smackx.jingle_filetransfer.callback.IncomingFileOfferCallback; import org.jivesoftware.smackx.jingle_filetransfer.handler.FileTransferHandler; import org.jivesoftware.smackx.jingle_filetransfer.listener.JingleFileTransferOfferListener; @@ -78,11 +78,11 @@ public class FileTransferTest extends AbstractSmackIntegrationTest { bftm.addJingleFileTransferOfferListener(new JingleFileTransferOfferListener() { @Override - public void onFileOffer(Jingle request, IncomingFileOfferCallback callback) { + public void onFileOffer(JingleElement request, IncomingFileOfferCallback callback) { FileTransferHandler handler2 = callback.acceptIncomingFileOffer(request, target); handler2.addEndedListener(new FileTransferHandler.EndedListener() { @Override - public void onEnded(JingleReason.Reason reason) { + public void onEnded(JingleReasonElement.Reason reason) { resultSyncPoint2.signal(); } }); @@ -93,7 +93,7 @@ public class FileTransferTest extends AbstractSmackIntegrationTest { FileTransferHandler handler = aftm.sendFile(bob, source); handler.addEndedListener(new FileTransferHandler.EndedListener() { @Override - public void onEnded(JingleReason.Reason reason) { + public void onEnded(JingleReasonElement.Reason reason) { resultSyncPoint1.signal(); } }); diff --git a/smack-jingle-old/src/integration-test/java/org/jivesoftware/smackx/jingle/JingleManagerTest.java b/smack-jingle-old/src/integration-test/java/org/jivesoftware/smackx/jingle/JingleManagerTest.java index 3acbd4c77..f35b2e459 100644 --- a/smack-jingle-old/src/integration-test/java/org/jivesoftware/smackx/jingle/JingleManagerTest.java +++ b/smack-jingle-old/src/integration-test/java/org/jivesoftware/smackx/jingle/JingleManagerTest.java @@ -35,7 +35,7 @@ import org.jivesoftware.smackx.jingle.nat.FixedTransportManager; import org.jivesoftware.smackx.jingle.nat.RTPBridge; import org.jivesoftware.smackx.jingle.nat.TransportCandidate; import org.jivesoftware.smackx.jingle.packet.Jingle; -import org.jivesoftware.smackx.jingle.provider.JingleProvider; +import org.jivesoftware.smackx.jingle3.provider.JingleProvider; import java.net.DatagramPacket; import java.net.DatagramSocket; diff --git a/smack-jingle-old/src/integration-test/java/org/jivesoftware/smackx/jingle/provider/JingleProviderTest.java b/smack-jingle-old/src/integration-test/java/org/jivesoftware/smackx/jingle/provider/JingleProviderTest.java index 8c7bc156a..19a899604 100644 --- a/smack-jingle-old/src/integration-test/java/org/jivesoftware/smackx/jingle/provider/JingleProviderTest.java +++ b/smack-jingle-old/src/integration-test/java/org/jivesoftware/smackx/jingle/provider/JingleProviderTest.java @@ -12,7 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.provider; +package org.jivesoftware.smackx.jingle3.provider; import org.jivesoftware.smack.StanzaCollector; import org.jivesoftware.smack.SmackConfiguration;