diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/internal/JetSecurity.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/internal/JetSecurity.java index 8b4c5b810..6ec35463b 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/internal/JetSecurity.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/internal/JetSecurity.java @@ -4,7 +4,7 @@ import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smackx.jet.element.JetSecurityElement; import org.jivesoftware.smackx.jingle.element.JingleContentSecurityInfoElement; import org.jivesoftware.smackx.jingle.element.JingleElement; -import org.jivesoftware.smackx.jingle.internal.JingleSecurity; +import org.jivesoftware.smackx.jingle.components.JingleSecurity; /** * Created by vanitas on 22.07.17. diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/IncomingFileTransferCallback.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/IncomingFileTransferCallback.java deleted file mode 100644 index 4782d87ed..000000000 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/IncomingFileTransferCallback.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.jivesoftware.smackx.jft; - -import java.io.File; - -import org.jivesoftware.smackx.jft.internal.JingleIncomingFileOffer; - -/** - * Created by vanitas on 26.07.17. - */ -public class IncomingFileTransferCallback { - - private JingleIncomingFileOffer offer; - - public IncomingFileTransferCallback(JingleIncomingFileOffer offer) { - this.offer = offer; - } - - public JingleIncomingFileOffer accept(File target) { - offer.accept(target); - return offer; - } - - public void decline() { - offer.decline(); - } -} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/IncomingFileTransferListener.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/IncomingFileTransferListener.java deleted file mode 100644 index b67776ce5..000000000 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/IncomingFileTransferListener.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.jivesoftware.smackx.jft; - -/** - * Created by vanitas on 26.07.17. - */ -public interface IncomingFileTransferListener { - - void onIncomingFileTransfer(IncomingFileTransferCallback callback); -} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/JingleFileTransferManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/JingleFileTransferManager.java index 50b82aec7..1deb8464e 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/JingleFileTransferManager.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/JingleFileTransferManager.java @@ -9,20 +9,26 @@ import java.util.WeakHashMap; import org.jivesoftware.smack.Manager; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; -import org.jivesoftware.smackx.jft.internal.JingleFileTransfer; +import org.jivesoftware.smackx.jft.controller.OutgoingFileOfferController; +import org.jivesoftware.smackx.jft.controller.OutgoingFileRequestController; +import org.jivesoftware.smackx.jft.internal.AbstractJingleFileTransfer; import org.jivesoftware.smackx.jft.internal.JingleIncomingFileOffer; +import org.jivesoftware.smackx.jft.internal.JingleIncomingFileRequest; import org.jivesoftware.smackx.jft.internal.JingleOutgoingFileOffer; +import org.jivesoftware.smackx.jft.internal.JingleOutgoingFileRequest; +import org.jivesoftware.smackx.jft.listener.IncomingFileOfferListener; +import org.jivesoftware.smackx.jft.listener.IncomingFileRequestListener; import org.jivesoftware.smackx.jft.provider.JingleFileTransferProvider; import org.jivesoftware.smackx.jingle.JingleDescriptionManager; import org.jivesoftware.smackx.jingle.JingleManager; -import org.jivesoftware.smackx.jingle.Role; +import org.jivesoftware.smackx.jingle.util.Role; import org.jivesoftware.smackx.jingle.callbacks.ContentAddCallback; import org.jivesoftware.smackx.jingle.element.JingleContentElement; import org.jivesoftware.smackx.jingle.element.JingleElement; -import org.jivesoftware.smackx.jingle.internal.JingleContent; -import org.jivesoftware.smackx.jingle.internal.JingleSession; +import org.jivesoftware.smackx.jingle.components.JingleContent; +import org.jivesoftware.smackx.jingle.components.JingleSession; import org.jivesoftware.smackx.jingle.provider.JingleContentProviderManager; -import org.jivesoftware.smackx.jingle.transport.JingleTransportManager; +import org.jivesoftware.smackx.jingle.JingleTransportManager; import org.jxmpp.jid.FullJid; @@ -34,8 +40,10 @@ public final class JingleFileTransferManager extends Manager implements JingleDe private static final WeakHashMap INSTANCES = new WeakHashMap<>(); private final JingleManager jingleManager; - private final List listeners = - Collections.synchronizedList(new ArrayList()); + private final List offerListeners = + Collections.synchronizedList(new ArrayList()); + private final List requestListeners = + Collections.synchronizedList(new ArrayList()); private JingleFileTransferManager(XMPPConnection connection) { super(connection); @@ -56,7 +64,7 @@ public final class JingleFileTransferManager extends Manager implements JingleDe return manager; } - public OutgoingFileHandler sendFile(File file, FullJid to) { + public OutgoingFileOfferController sendFile(File file, FullJid to) { if (file == null || !file.exists()) { throw new IllegalArgumentException("File MUST NOT be null and MUST exist."); } @@ -72,34 +80,53 @@ public final class JingleFileTransferManager extends Manager implements JingleDe JingleTransportManager transportManager = jingleManager.getBestAvailableTransportManager(); content.setTransport(transportManager.createTransport(content)); - OutgoingFileHandler handler = new OutgoingFileHandler(); - - //TODO - return handler; + return offer; } - public void addIncomingFileTransferListener(IncomingFileTransferListener listener) { - listeners.add(listener); + public OutgoingFileRequestController requestFile() { + JingleOutgoingFileRequest request = new JingleOutgoingFileRequest(); + + //TODO at some point. + + return request; } - public void removeIncomingFileTransferListener(IncomingFileTransferListener listener) { - listeners.remove(listener); + public void addIncomingFileOfferListener(IncomingFileOfferListener listener) { + offerListeners.add(listener); } - public void notifyIncomingFileTransferListeners(JingleIncomingFileOffer offer) { - for (IncomingFileTransferListener l : listeners) { - l.onIncomingFileTransfer(new IncomingFileTransferCallback(offer)); + public void removeIncomingFileOfferListener(IncomingFileOfferListener listener) { + offerListeners.remove(listener); + } + + public void notifyIncomingFileOfferListeners(JingleIncomingFileOffer offer) { + for (IncomingFileOfferListener l : offerListeners) { + l.onIncomingFileTransfer(offer); + } + } + + public void addIncomingFileRequestListener(IncomingFileRequestListener listener) { + requestListeners.add(listener); + } + + public void removeIncomingFileRequestListener(IncomingFileRequestListener listener) { + requestListeners.remove(listener); + } + + public void notifyIncomingFileRequestListeners(JingleIncomingFileRequest request) { + for (IncomingFileRequestListener l : requestListeners) { + l.onIncomingFileRequest(request); } } @Override public String getNamespace() { - return JingleFileTransfer.NAMESPACE; + return AbstractJingleFileTransfer.NAMESPACE; } @Override public JingleElement notifyContentListeners(JingleContent content, ContentAddCallback callback) { - return null; + } } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/OutgoingFileHandler.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/OutgoingFileHandler.java deleted file mode 100644 index 119839ec4..000000000 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/OutgoingFileHandler.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.jivesoftware.smackx.jft; - -/** - * Created by vanitas on 26.07.17. - */ -public class OutgoingFileHandler { -} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/controller/IncomingFileOfferController.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/controller/IncomingFileOfferController.java new file mode 100644 index 000000000..0fa0db0e7 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/controller/IncomingFileOfferController.java @@ -0,0 +1,9 @@ +package org.jivesoftware.smackx.jft.controller; + +import org.jivesoftware.smackx.jingle.controller.JingleDescriptionController; + +/** + * Created by vanitas on 27.07.17. + */ +public interface IncomingFileOfferController extends JingleDescriptionController { +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/controller/IncomingFileRequestController.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/controller/IncomingFileRequestController.java new file mode 100644 index 000000000..fbb0c07c6 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/controller/IncomingFileRequestController.java @@ -0,0 +1,10 @@ +package org.jivesoftware.smackx.jft.controller; + +import org.jivesoftware.smackx.jingle.controller.JingleDescriptionController; + +/** + * Created by vanitas on 27.07.17. + */ +public interface IncomingFileRequestController extends JingleDescriptionController { + +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/controller/OutgoingFileOfferController.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/controller/OutgoingFileOfferController.java new file mode 100644 index 000000000..be00959f0 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/controller/OutgoingFileOfferController.java @@ -0,0 +1,7 @@ +package org.jivesoftware.smackx.jft.controller; + +/** + * Created by vanitas on 27.07.17. + */ +public interface OutgoingFileOfferController { +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/controller/OutgoingFileRequestController.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/controller/OutgoingFileRequestController.java new file mode 100644 index 000000000..d3fd43d6a --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/controller/OutgoingFileRequestController.java @@ -0,0 +1,7 @@ +package org.jivesoftware.smackx.jft.controller; + +/** + * Created by vanitas on 27.07.17. + */ +public interface OutgoingFileRequestController { +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/element/JingleFileTransferElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/element/JingleFileTransferElement.java index f09106310..5b90e9cc1 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/element/JingleFileTransferElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/element/JingleFileTransferElement.java @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.jft.element; import java.util.Collections; import java.util.List; -import org.jivesoftware.smackx.jft.internal.JingleFileTransfer; +import org.jivesoftware.smackx.jft.internal.AbstractJingleFileTransfer; import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionElement; import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionChildElement; @@ -38,6 +38,6 @@ public class JingleFileTransferElement extends JingleContentDescriptionElement { @Override public String getNamespace() { - return JingleFileTransfer.NAMESPACE; + return AbstractJingleFileTransfer.NAMESPACE; } } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleFileOffer.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/AbstractJingleFileOffer.java similarity index 60% rename from smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleFileOffer.java rename to smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/AbstractJingleFileOffer.java index 797e9ec9e..fa420e543 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleFileOffer.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/AbstractJingleFileOffer.java @@ -1,15 +1,16 @@ package org.jivesoftware.smackx.jft.internal; import org.jivesoftware.smackx.jft.element.JingleFileTransferElement; +import org.jivesoftware.smackx.jft.internal.file.AbstractJingleFileTransferFile; /** * Created by vanitas on 22.07.17. */ -public abstract class JingleFileOffer extends JingleFileTransfer { +public abstract class AbstractJingleFileOffer extends AbstractJingleFileTransfer { protected D jingleFile; - public JingleFileOffer(D fileTransferFile) { + public AbstractJingleFileOffer(D fileTransferFile) { super(); this.jingleFile = fileTransferFile; } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/AbstractJingleFileRequest.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/AbstractJingleFileRequest.java new file mode 100644 index 000000000..8a26f471d --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/AbstractJingleFileRequest.java @@ -0,0 +1,8 @@ +package org.jivesoftware.smackx.jft.internal; + +/** + * Created by vanitas on 22.07.17. + */ +public abstract class AbstractJingleFileRequest extends AbstractJingleFileTransfer { + +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleFileTransfer.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/AbstractJingleFileTransfer.java similarity index 64% rename from smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleFileTransfer.java rename to smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/AbstractJingleFileTransfer.java index 2d2e218a5..5d91fda6e 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleFileTransfer.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/AbstractJingleFileTransfer.java @@ -1,12 +1,12 @@ package org.jivesoftware.smackx.jft.internal; -import org.jivesoftware.smackx.jingle.internal.JingleDescription; +import org.jivesoftware.smackx.jingle.components.JingleDescription; import org.jivesoftware.smackx.jft.element.JingleFileTransferElement; /** * Created by vanitas on 22.07.17. */ -public abstract class JingleFileTransfer extends JingleDescription { +public abstract class AbstractJingleFileTransfer extends JingleDescription { public static final String NAMESPACE_V5 = "urn:xmpp:jingle:apps:file-transfer:5"; public static final String NAMESPACE = NAMESPACE_V5; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleIncomingFileOffer.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleIncomingFileOffer.java index 612822005..999307732 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleIncomingFileOffer.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleIncomingFileOffer.java @@ -6,12 +6,14 @@ import java.util.logging.Level; import java.util.logging.Logger; import org.jivesoftware.smackx.bytestreams.BytestreamSession; +import org.jivesoftware.smackx.jft.controller.IncomingFileOfferController; import org.jivesoftware.smackx.jft.element.JingleFileTransferChildElement; +import org.jivesoftware.smackx.jft.internal.file.RemoteFile; /** * Created by vanitas on 26.07.17. */ -public class JingleIncomingFileOffer extends JingleFileOffer { +public class JingleIncomingFileOffer extends AbstractJingleFileOffer implements IncomingFileOfferController { private static final Logger LOGGER = Logger.getLogger(JingleIncomingFileOffer.class.getName()); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleFileRequest.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleIncomingFileRequest.java similarity index 62% rename from smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleFileRequest.java rename to smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleIncomingFileRequest.java index 3c672e940..a26386cb4 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleFileRequest.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleIncomingFileRequest.java @@ -1,13 +1,13 @@ package org.jivesoftware.smackx.jft.internal; import org.jivesoftware.smackx.bytestreams.BytestreamSession; +import org.jivesoftware.smackx.jft.controller.IncomingFileRequestController; import org.jivesoftware.smackx.jft.element.JingleFileTransferElement; /** - * Created by vanitas on 22.07.17. + * Created by vanitas on 27.07.17. */ -public class JingleFileRequest extends JingleFileTransfer { - +public class JingleIncomingFileRequest extends AbstractJingleFileRequest implements IncomingFileRequestController { @Override public JingleFileTransferElement getElement() { return null; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleOutgoingFileOffer.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleOutgoingFileOffer.java index b69c97731..cee8ec2ba 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleOutgoingFileOffer.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleOutgoingFileOffer.java @@ -3,11 +3,13 @@ package org.jivesoftware.smackx.jft.internal; import java.io.File; import org.jivesoftware.smackx.bytestreams.BytestreamSession; +import org.jivesoftware.smackx.jft.controller.OutgoingFileOfferController; +import org.jivesoftware.smackx.jft.internal.file.LocalFile; /** * Created by vanitas on 26.07.17. */ -public class JingleOutgoingFileOffer extends JingleFileOffer { +public class JingleOutgoingFileOffer extends AbstractJingleFileOffer implements OutgoingFileOfferController { public JingleOutgoingFileOffer(File file) { super(new LocalFile(file)); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleOutgoingFileRequest.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleOutgoingFileRequest.java new file mode 100644 index 000000000..7c31f9557 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleOutgoingFileRequest.java @@ -0,0 +1,20 @@ +package org.jivesoftware.smackx.jft.internal; + +import org.jivesoftware.smackx.bytestreams.BytestreamSession; +import org.jivesoftware.smackx.jft.controller.OutgoingFileRequestController; +import org.jivesoftware.smackx.jft.element.JingleFileTransferElement; + +/** + * Created by vanitas on 27.07.17. + */ +public class JingleOutgoingFileRequest extends AbstractJingleFileRequest implements OutgoingFileRequestController { + @Override + public JingleFileTransferElement getElement() { + return null; + } + + @Override + public void onTransportReady(BytestreamSession bytestreamSession) { + + } +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/LocalFile.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/LocalFile.java deleted file mode 100644 index dbd194671..000000000 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/LocalFile.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.jivesoftware.smackx.jft.internal; - -import java.io.File; -import java.util.Date; - -/** - * Created by vanitas on 26.07.17. - */ -public class LocalFile extends JingleFileTransferFile { - - private File file; - - public LocalFile(File file) { - super(); - this.file = file; - } - - @Override - public Date getDate() { - return new Date(file.lastModified()); - } - - @Override - public long getSize() { - return file.length(); - } - - @Override - public String getName() { - String path = file.getAbsolutePath(); - return path.substring(path.lastIndexOf(File.pathSeparatorChar)+1); - } -} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleFileTransferFile.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/file/AbstractJingleFileTransferFile.java similarity index 53% rename from smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleFileTransferFile.java rename to smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/file/AbstractJingleFileTransferFile.java index 746dcf502..2aa6f60f8 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/JingleFileTransferFile.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/file/AbstractJingleFileTransferFile.java @@ -1,15 +1,16 @@ -package org.jivesoftware.smackx.jft.internal; +package org.jivesoftware.smackx.jft.internal.file; import java.util.Date; +import org.jivesoftware.smackx.hashes.element.HashElement; import org.jivesoftware.smackx.jft.element.JingleFileTransferChildElement; /** * Created by vanitas on 26.07.17. */ -public abstract class JingleFileTransferFile { +public abstract class AbstractJingleFileTransferFile { - public JingleFileTransferFile() { + public AbstractJingleFileTransferFile() { } @@ -18,6 +19,9 @@ public abstract class JingleFileTransferFile { builder.setDate(getDate()); builder.setSize(getSize()); builder.setName(getName()); + builder.setDescription(getDescription()); + builder.setMediaType(getMediaType()); + builder.setHash(getHashElement()); return builder.build(); } @@ -27,4 +31,10 @@ public abstract class JingleFileTransferFile { public abstract long getSize(); public abstract String getName(); + + public abstract String getDescription(); + + public abstract String getMediaType(); + + public abstract HashElement getHashElement(); } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/file/LocalFile.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/file/LocalFile.java new file mode 100644 index 000000000..7719a30b4 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/file/LocalFile.java @@ -0,0 +1,75 @@ +package org.jivesoftware.smackx.jft.internal.file; + +import java.io.File; +import java.util.Date; + +import org.jivesoftware.smackx.hashes.element.HashElement; + +/** + * Created by vanitas on 26.07.17. + */ +public class LocalFile extends AbstractJingleFileTransferFile { + + private File file; + private String description; + private String mediaType; + private HashElement hashElement; + + public LocalFile(File file) { + this(file, null, null); + } + + public LocalFile(File file, String description) { + this(file, description, null); + } + + public LocalFile(File file, String description, String mediaType) { + super(); + this.file = file; + this.description = description; + this.mediaType = mediaType; + } + + @Override + public Date getDate() { + return new Date(file.lastModified()); + } + + @Override + public long getSize() { + return file.length(); + } + + @Override + public String getName() { + String path = file.getAbsolutePath(); + return path.substring(path.lastIndexOf(File.pathSeparatorChar)+1); + } + + @Override + public String getDescription() { + return description; + } + + @Override + public String getMediaType() { + return mediaType; + } + + @Override + public HashElement getHashElement() { + return hashElement; + } + + public void setDescription(String description) { + this.description = description; + } + + public void setMediaType(String mediaType) { + this.mediaType = mediaType; + } + + public void setHashElement(HashElement hashElement) { + this.hashElement = hashElement; + } +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/RemoteFile.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/file/RemoteFile.java similarity index 54% rename from smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/RemoteFile.java rename to smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/file/RemoteFile.java index b92848466..db5304c93 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/RemoteFile.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/internal/file/RemoteFile.java @@ -1,13 +1,14 @@ -package org.jivesoftware.smackx.jft.internal; +package org.jivesoftware.smackx.jft.internal.file; import java.util.Date; +import org.jivesoftware.smackx.hashes.element.HashElement; import org.jivesoftware.smackx.jft.element.JingleFileTransferChildElement; /** * Created by vanitas on 26.07.17. */ -public class RemoteFile extends JingleFileTransferFile { +public class RemoteFile extends AbstractJingleFileTransferFile { private JingleFileTransferChildElement file; @@ -16,6 +17,21 @@ public class RemoteFile extends JingleFileTransferFile { this.file = file; } + @Override + public String getDescription() { + return file.getDescription(); + } + + @Override + public String getMediaType() { + return file.getMediaType(); + } + + @Override + public HashElement getHashElement() { + return file.getHash(); + } + @Override public Date getDate() { return file.getDate(); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/listener/IncomingFileOfferListener.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/listener/IncomingFileOfferListener.java new file mode 100644 index 000000000..75f75c434 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/listener/IncomingFileOfferListener.java @@ -0,0 +1,11 @@ +package org.jivesoftware.smackx.jft.listener; + +import org.jivesoftware.smackx.jft.controller.IncomingFileOfferController; + +/** + * Created by vanitas on 26.07.17. + */ +public interface IncomingFileOfferListener { + + void onIncomingFileTransfer(IncomingFileOfferController offer); +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/listener/IncomingFileRequestListener.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/listener/IncomingFileRequestListener.java new file mode 100644 index 000000000..ccca0e44e --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/listener/IncomingFileRequestListener.java @@ -0,0 +1,11 @@ +package org.jivesoftware.smackx.jft.listener; + +import org.jivesoftware.smackx.jft.controller.IncomingFileRequestController; + +/** + * Created by vanitas on 27.07.17. + */ +public interface IncomingFileRequestListener { + + void onIncomingFileRequest(IncomingFileRequestController request); +} 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 8a81c293f..71eb9fecd 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 @@ -18,7 +18,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.util.Role; import org.jivesoftware.smackx.jingle.element.JingleElement; import org.jxmpp.jid.FullJid; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManagerAlt.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManagerAlt.java index 113b52334..d29b8bdf4 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManagerAlt.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManagerAlt.java @@ -31,7 +31,7 @@ import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; import org.jivesoftware.smackx.jft.element.JingleFileTransferChildElement; import org.jivesoftware.smackx.jft.element.JingleFileTransferElement; -import org.jivesoftware.smackx.jft.internal.JingleFileTransfer; +import org.jivesoftware.smackx.jft.internal.AbstractJingleFileTransfer; import org.jivesoftware.smackx.jft.provider.JingleFileTransferProvider; import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.element.JingleAction; @@ -57,7 +57,7 @@ public final class JingleFileTransferManagerAlt extends Manager { private JingleFileTransferManagerAlt(XMPPConnection connection) { super(connection); - ServiceDiscoveryManager.getInstanceFor(connection).addFeature(JingleFileTransfer.NAMESPACE_V5); + ServiceDiscoveryManager.getInstanceFor(connection).addFeature(AbstractJingleFileTransfer.NAMESPACE_V5); JingleManager jingleManager = JingleManager.getInstanceFor(connection); jingleManager.addJingleDescriptionManager(this); JingleContentProviderManager.addJingleContentDescriptionProvider( diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/Callback.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/Callback.java index 81bead64b..cdb20eecc 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/Callback.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/Callback.java @@ -16,7 +16,7 @@ */ package org.jivesoftware.smackx.jingle; -import org.jivesoftware.smackx.jingle.internal.JingleContent; +import org.jivesoftware.smackx.jingle.components.JingleContent; /** * User callback that the user can use to control a jingle content. diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleDescriptionController.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleDescriptionController.java new file mode 100644 index 000000000..7a1f749b4 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleDescriptionController.java @@ -0,0 +1,17 @@ +package org.jivesoftware.smackx.jingle; + +/** + * Created by vanitas on 27.07.17. + */ +public interface JingleDescriptionController { + + enum State { + pending, //Not yet accepted by us/peer + negotiating, //Accepted, but still negotiating transports etc. + active, //Bytestream initialized and active + cancelled, //We/Peer cancelled the transmission + ended //Successfully ended + } + + State getState(); +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleDescriptionManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleDescriptionManager.java index 83db5d3a5..a896df644 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleDescriptionManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleDescriptionManager.java @@ -16,9 +16,7 @@ */ package org.jivesoftware.smackx.jingle; -import org.jivesoftware.smackx.jingle.callbacks.ContentAddCallback; -import org.jivesoftware.smackx.jingle.element.JingleElement; -import org.jivesoftware.smackx.jingle.internal.JingleContent; +import org.jivesoftware.smackx.jingle.components.JingleSession; /** * Manager for JingleDescription components. @@ -27,5 +25,5 @@ public interface JingleDescriptionManager { String getNamespace(); - JingleElement notifyContentListeners(JingleContent content, ContentAddCallback callback); + void notifySessionInitiate(JingleSession session); } 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 51d662209..5a5e8db2c 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 @@ -39,11 +39,12 @@ import org.jivesoftware.smackx.jingle.element.JingleReasonElement; import org.jivesoftware.smackx.jingle.exception.UnsupportedDescriptionException; import org.jivesoftware.smackx.jingle.exception.UnsupportedSecurityException; import org.jivesoftware.smackx.jingle.exception.UnsupportedTransportException; -import org.jivesoftware.smackx.jingle.internal.JingleSession; +import org.jivesoftware.smackx.jingle.components.JingleSession; import org.jivesoftware.smackx.jingle.provider.JingleContentDescriptionProvider; import org.jivesoftware.smackx.jingle.provider.JingleContentSecurityProvider; import org.jivesoftware.smackx.jingle.provider.JingleContentTransportProvider; -import org.jivesoftware.smackx.jingle.transport.JingleTransportManager; +import org.jivesoftware.smackx.jingle.util.FullJidAndSessionId; +import org.jivesoftware.smackx.jingle.util.Role; import org.jxmpp.jid.FullJid; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/JingleTransportManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleTransportManager.java similarity index 86% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/JingleTransportManager.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleTransportManager.java index 4f847d25d..b4d72bebc 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/JingleTransportManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleTransportManager.java @@ -14,10 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.transport; +package org.jivesoftware.smackx.jingle; -import org.jivesoftware.smackx.jingle.internal.JingleContent; -import org.jivesoftware.smackx.jingle.internal.JingleTransport; +import org.jivesoftware.smackx.jingle.components.JingleContent; +import org.jivesoftware.smackx.jingle.components.JingleTransport; /** * Manager for JingleTransport components. diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/adapter/JingleDescriptionAdapter.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/adapter/JingleDescriptionAdapter.java index 77d0ce0d7..a4e40dea3 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/adapter/JingleDescriptionAdapter.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/adapter/JingleDescriptionAdapter.java @@ -17,7 +17,7 @@ package org.jivesoftware.smackx.jingle.adapter; import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionElement; -import org.jivesoftware.smackx.jingle.internal.JingleDescription; +import org.jivesoftware.smackx.jingle.components.JingleDescription; /** * Adapter that creates a Description object from an element. diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/adapter/JingleSecurityAdapter.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/adapter/JingleSecurityAdapter.java index 267b83bb1..5c8c0d354 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/adapter/JingleSecurityAdapter.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/adapter/JingleSecurityAdapter.java @@ -17,7 +17,7 @@ package org.jivesoftware.smackx.jingle.adapter; import org.jivesoftware.smackx.jingle.element.JingleContentSecurityElement; -import org.jivesoftware.smackx.jingle.internal.JingleSecurity; +import org.jivesoftware.smackx.jingle.components.JingleSecurity; /** * Adapter that creates a Security object from an element. diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/adapter/JingleTransportAdapter.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/adapter/JingleTransportAdapter.java index b5f3c0e50..c27901e3b 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/adapter/JingleTransportAdapter.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/adapter/JingleTransportAdapter.java @@ -17,7 +17,7 @@ package org.jivesoftware.smackx.jingle.adapter; import org.jivesoftware.smackx.jingle.element.JingleContentTransportElement; -import org.jivesoftware.smackx.jingle.internal.JingleTransport; +import org.jivesoftware.smackx.jingle.components.JingleTransport; /** * Adapter that creates a Transport element from an element. diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleContent.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleContent.java similarity index 66% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleContent.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleContent.java index 7931f8b8c..69cd5f9f0 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleContent.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleContent.java @@ -14,14 +14,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.internal; +package org.jivesoftware.smackx.jingle.components; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.jivesoftware.smack.SmackException; +import org.jivesoftware.smack.XMPPConnection; +import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.util.StringUtils; import org.jivesoftware.smackx.bytestreams.BytestreamSession; import org.jivesoftware.smackx.jingle.JingleManager; @@ -33,12 +38,17 @@ import org.jivesoftware.smackx.jingle.element.JingleContentTransportElement; import org.jivesoftware.smackx.jingle.Callback; import org.jivesoftware.smackx.jingle.adapter.JingleSecurityAdapter; import org.jivesoftware.smackx.jingle.element.JingleContentElement; +import org.jivesoftware.smackx.jingle.element.JingleElement; +import org.jivesoftware.smackx.jingle.element.JingleReasonElement; +import org.jivesoftware.smackx.jingle.JingleTransportManager; /** * Internal class that holds the state of a content in a modifiable form. */ public class JingleContent { + private static final Logger LOGGER = Logger.getLogger(JingleContent.class.getName()); + private JingleSession parent; private JingleContentElement.Creator creator; private String name; @@ -51,8 +61,18 @@ public class JingleContent { private final List callbacks = Collections.synchronizedList(new ArrayList()); private final Set transportBlacklist = Collections.synchronizedSet(new HashSet()); + public enum STATE { + pending_accept, + pending_transmission_start, + pending_transport_replace, + transmission_in_progress, + transmission_successful, + transmission_failed, + transmission_cancelled + } + public JingleContent(JingleContentElement.Creator creator, JingleContentElement.Senders senders) { - this(null, null, null, StringUtils.randomString(24), null, creator, senders); + this(null, null, null, randomName(), null, creator, senders); } public JingleContent(JingleDescription description, JingleTransport transport, JingleSecurity security, String name, String disposition, JingleContentElement.Creator creator, JingleContentElement.Senders senders) { @@ -181,6 +201,18 @@ public class JingleContent { } } + private boolean isSending() { + return (getSenders() == JingleContentElement.Senders.initiator && getParent().isInitiator()) || + (getSenders() == JingleContentElement.Senders.responder && getParent().isResponder()) || + getSenders() == JingleContentElement.Senders.both; + } + + private boolean isReceiving() { + return (getSenders() == JingleContentElement.Senders.initiator && getParent().isResponder()) || + (getSenders() == JingleContentElement.Senders.responder && getParent().isInitiator()) || + getSenders() == JingleContentElement.Senders.both; + } + public void onTransportReady() { BytestreamSession bytestreamSession = transport.getBytestreamSession(); @@ -192,7 +224,50 @@ public class JingleContent { } public void onTransportFailed(Exception e) { + //Add current transport to blacklist. + getTransportBlacklist().add(transport.getNamespace()); + //Replace transport. + if (getParent().isInitiator()) { + try { + replaceTransport(getTransportBlacklist(), getParent().getJingleManager().getConnection()); + } catch (SmackException.NotConnectedException | InterruptedException | SmackException.NoResponseException | XMPPException.XMPPErrorException e1) { + LOGGER.log(Level.SEVERE, "Could not send transport-replace: " + e, e); + } + } + } + + private void replaceTransport(Set blacklist, XMPPConnection connection) + throws SmackException.NotConnectedException, InterruptedException, + XMPPException.XMPPErrorException, SmackException.NoResponseException { + + JingleSession session = getParent(); + JingleManager jingleManager = session.getJingleManager(); + + JingleTransportManager rManager = jingleManager.getBestAvailableTransportManager(blacklist); + if (rManager == null) { + JingleElement failedTransport = JingleElement.createSessionTerminate(session.getPeer(), + session.getSessionId(), JingleReasonElement.Reason.failed_transport); + connection.createStanzaCollectorAndSend(failedTransport).nextResultOrThrow(); + return; + } + + JingleTransport rTransport = rManager.createTransport(this); + + JingleElement transportReplace = JingleElement.createTransportReplace(session.getInitiator(), session.getPeer(), + session.getSessionId(), getCreator(), getName(), rTransport.getElement()); + + connection.createStanzaCollectorAndSend(transportReplace).nextResultOrThrow(); + } + + public void onContentAccept(XMPPConnection connection, ) + throws SmackException.NotConnectedException, InterruptedException { + //Establish transport + if (isReceiving()) { + getTransport().establishIncomingBytestreamSession(connection); + } else if (isSending()) { + getTransport().establishOutgoingBytestreamSession(connection); + } } public static String randomName() { diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleDescription.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleDescription.java similarity index 96% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleDescription.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleDescription.java index bcbd1c93b..dbdd31eac 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleDescription.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleDescription.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.internal; +package org.jivesoftware.smackx.jingle.components; import org.jivesoftware.smackx.bytestreams.BytestreamSession; import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionElement; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleSecurity.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleSecurity.java similarity index 96% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleSecurity.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleSecurity.java index 03095682c..f8dd902f4 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleSecurity.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleSecurity.java @@ -14,11 +14,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.internal; +package org.jivesoftware.smackx.jingle.components; import org.jivesoftware.smackx.jingle.element.JingleContentSecurityElement; -import org.jivesoftware.smackx.jingle.element.JingleElement; import org.jivesoftware.smackx.jingle.element.JingleContentSecurityInfoElement; +import org.jivesoftware.smackx.jingle.element.JingleElement; /** * Class that represents a contents security component. diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleSession.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleSession.java similarity index 98% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleSession.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleSession.java index 0527c9233..b0ca69bea 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleSession.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleSession.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.internal; +package org.jivesoftware.smackx.jingle.components; import java.util.ArrayList; import java.util.Collections; @@ -30,7 +30,7 @@ import org.jivesoftware.smack.SmackException; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smackx.jingle.JingleManager; -import org.jivesoftware.smackx.jingle.Role; +import org.jivesoftware.smackx.jingle.util.Role; import org.jivesoftware.smackx.jingle.adapter.JingleTransportAdapter; import org.jivesoftware.smackx.jingle.callbacks.ContentAddCallback; import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionElement; @@ -161,7 +161,6 @@ public class JingleSession { responses.add(JingleElement.createTransportReject(getInitiator(), getPeer(), getSessionId(), content.getCreator(), content.getName(), newTransport)); continue; - } JingleTransportAdapter transportAdapter = JingleManager.getJingleTransportAdapter( @@ -353,7 +352,7 @@ public class JingleSession { // TODO: Send content-reject } }; - descriptionManager.notifyContentListeners(content, callback); + descriptionManager.notifySessionInitiate(); } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleTransport.java similarity index 98% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleTransport.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleTransport.java index 866320eb0..fe453552a 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleTransport.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleTransport.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.internal; +package org.jivesoftware.smackx.jingle.components; import java.util.ArrayList; import java.util.List; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleTransportCandidate.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleTransportCandidate.java similarity index 96% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleTransportCandidate.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleTransportCandidate.java index 017885c5f..839157285 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/JingleTransportCandidate.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/JingleTransportCandidate.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.internal; +package org.jivesoftware.smackx.jingle.components; import org.jivesoftware.smackx.jingle.element.JingleContentTransportCandidateElement; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/PendingJingleAction.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/PendingJingleAction.java similarity index 97% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/PendingJingleAction.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/PendingJingleAction.java index 941e1012f..748ef478a 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/internal/PendingJingleAction.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/components/PendingJingleAction.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle.internal; +package org.jivesoftware.smackx.jingle.components; import org.jivesoftware.smackx.jingle.element.JingleAction; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/controller/JingleDescriptionController.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/controller/JingleDescriptionController.java new file mode 100644 index 000000000..12746ac93 --- /dev/null +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/controller/JingleDescriptionController.java @@ -0,0 +1,8 @@ +package org.jivesoftware.smackx.jingle.controller; + +/** + * Created by vanitas on 27.07.17. + */ +public interface JingleDescriptionController { + +} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_ibb/JingleIBBTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_ibb/JingleIBBTransport.java index d4dc4720f..b432af75d 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_ibb/JingleIBBTransport.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_ibb/JingleIBBTransport.java @@ -27,9 +27,9 @@ import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamManager; import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamRequest; import org.jivesoftware.smackx.jingle.element.JingleContentTransportInfoElement; import org.jivesoftware.smackx.jingle.element.JingleElement; -import org.jivesoftware.smackx.jingle.internal.JingleSession; -import org.jivesoftware.smackx.jingle.internal.JingleTransport; -import org.jivesoftware.smackx.jingle.internal.JingleTransportCandidate; +import org.jivesoftware.smackx.jingle.components.JingleSession; +import org.jivesoftware.smackx.jingle.components.JingleTransport; +import org.jivesoftware.smackx.jingle.components.JingleTransportCandidate; import org.jivesoftware.smackx.jingle.transport.jingle_ibb.element.JingleIBBTransportElement; /** diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_ibb/JingleIBBTransportManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_ibb/JingleIBBTransportManager.java index 6d30f3a4b..40e6084ec 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_ibb/JingleIBBTransportManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_ibb/JingleIBBTransportManager.java @@ -6,9 +6,9 @@ import org.jivesoftware.smack.Manager; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; import org.jivesoftware.smackx.jingle.JingleManager; -import org.jivesoftware.smackx.jingle.transport.JingleTransportManager; -import org.jivesoftware.smackx.jingle.internal.JingleContent; -import org.jivesoftware.smackx.jingle.internal.JingleTransport; +import org.jivesoftware.smackx.jingle.JingleTransportManager; +import org.jivesoftware.smackx.jingle.components.JingleContent; +import org.jivesoftware.smackx.jingle.components.JingleTransport; import org.jivesoftware.smackx.jingle.provider.JingleContentProviderManager; import org.jivesoftware.smackx.jingle.transport.jingle_ibb.provider.JingleIBBTransportProvider; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransport.java index 95d70185f..bf2a98bd3 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransport.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransport.java @@ -37,10 +37,10 @@ import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.element.JingleContentTransportInfoElement; import org.jivesoftware.smackx.jingle.element.JingleElement; import org.jivesoftware.smackx.jingle.exception.FailedTransportException; -import org.jivesoftware.smackx.jingle.internal.JingleContent; -import org.jivesoftware.smackx.jingle.internal.JingleSession; -import org.jivesoftware.smackx.jingle.internal.JingleTransport; -import org.jivesoftware.smackx.jingle.internal.JingleTransportCandidate; +import org.jivesoftware.smackx.jingle.components.JingleContent; +import org.jivesoftware.smackx.jingle.components.JingleSession; +import org.jivesoftware.smackx.jingle.components.JingleTransport; +import org.jivesoftware.smackx.jingle.components.JingleTransportCandidate; import org.jivesoftware.smackx.jingle.transport.jingle_s5b.element.JingleS5BTransportCandidateElement; import org.jivesoftware.smackx.jingle.transport.jingle_s5b.element.JingleS5BTransportElement; import org.jivesoftware.smackx.jingle.transport.jingle_s5b.element.JingleS5BTransportInfoElement; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransportAdapter.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransportAdapter.java index df42fd577..a5f72550c 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransportAdapter.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransportAdapter.java @@ -21,7 +21,7 @@ import java.util.ArrayList; import org.jivesoftware.smackx.jingle.adapter.JingleTransportAdapter; import org.jivesoftware.smackx.jingle.element.JingleContentTransportCandidateElement; import org.jivesoftware.smackx.jingle.element.JingleContentTransportElement; -import org.jivesoftware.smackx.jingle.internal.JingleTransportCandidate; +import org.jivesoftware.smackx.jingle.components.JingleTransportCandidate; import org.jivesoftware.smackx.jingle.transport.jingle_s5b.element.JingleS5BTransportCandidateElement; import org.jivesoftware.smackx.jingle.transport.jingle_s5b.element.JingleS5BTransportElement; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransportCandidate.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransportCandidate.java index 6ab0d56c8..98bf2ad6b 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransportCandidate.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransportCandidate.java @@ -26,8 +26,8 @@ import org.jivesoftware.smackx.bytestreams.socks5.Socks5Client; import org.jivesoftware.smackx.bytestreams.socks5.Socks5ClientForInitiator; import org.jivesoftware.smackx.bytestreams.socks5.packet.Bytestream; import org.jivesoftware.smackx.jingle.transport.jingle_s5b.element.JingleS5BTransportCandidateElement; -import org.jivesoftware.smackx.jingle.internal.JingleSession; -import org.jivesoftware.smackx.jingle.internal.JingleTransportCandidate; +import org.jivesoftware.smackx.jingle.components.JingleSession; +import org.jivesoftware.smackx.jingle.components.JingleTransportCandidate; /** * Jingle SOCKS5Bytestream transport candidate. diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransportManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransportManager.java index 81fcd582d..aa67da8e1 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransportManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransportManager.java @@ -37,16 +37,16 @@ import org.jivesoftware.smackx.bytestreams.socks5.packet.Bytestream; import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.element.JingleElement; -import org.jivesoftware.smackx.jingle.internal.JingleContent; -import org.jivesoftware.smackx.jingle.internal.JingleSession; -import org.jivesoftware.smackx.jingle.internal.JingleTransport; -import org.jivesoftware.smackx.jingle.internal.JingleTransportCandidate; +import org.jivesoftware.smackx.jingle.components.JingleContent; +import org.jivesoftware.smackx.jingle.components.JingleSession; +import org.jivesoftware.smackx.jingle.components.JingleTransport; +import org.jivesoftware.smackx.jingle.components.JingleTransportCandidate; import org.jivesoftware.smackx.jingle.provider.JingleContentProviderManager; import org.jivesoftware.smackx.jingle.transport.jingle_s5b.element.JingleS5BTransportCandidateElement; import org.jivesoftware.smackx.jingle.transport.jingle_s5b.element.JingleS5BTransportElement; import org.jivesoftware.smackx.jingle.transport.jingle_s5b.element.JingleS5BTransportInfoElement; import org.jivesoftware.smackx.jingle.transport.jingle_s5b.provider.JingleS5BTransportProvider; -import org.jivesoftware.smackx.jingle.transport.JingleTransportManager; +import org.jivesoftware.smackx.jingle.JingleTransportManager; import org.jivesoftware.smackx.jingle.element.JingleAction; import org.jivesoftware.smackx.jingle.element.JingleContentElement; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/FullJidAndSessionId.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/util/FullJidAndSessionId.java similarity index 97% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/FullJidAndSessionId.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/util/FullJidAndSessionId.java index 2bd3e7cde..2cf4baeeb 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/FullJidAndSessionId.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/util/FullJidAndSessionId.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle; +package org.jivesoftware.smackx.jingle.util; import org.jxmpp.jid.FullJid; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/Role.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/util/Role.java similarity index 93% rename from smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/Role.java rename to smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/util/Role.java index 0473b0894..75a6f6dc8 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/Role.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/util/Role.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.jingle; +package org.jivesoftware.smackx.jingle.util; public enum Role { initiator, diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/FullJidAndSessionIdTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/FullJidAndSessionIdTest.java index ce8060330..efd4e18bf 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/FullJidAndSessionIdTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/FullJidAndSessionIdTest.java @@ -21,6 +21,7 @@ import static junit.framework.TestCase.assertNotSame; import static junit.framework.TestCase.assertTrue; import org.jivesoftware.smack.test.util.SmackTestSuite; +import org.jivesoftware.smackx.jingle.util.FullJidAndSessionId; import org.junit.Test; import org.jxmpp.jid.FullJid;