mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-11-26 05:52:06 +01:00
Add PubSubManaer.supportsAutomaticNodeCreation()
This commit is contained in:
parent
e73cef8000
commit
16ede9806a
1 changed files with 23 additions and 0 deletions
|
@ -64,6 +64,8 @@ import org.jxmpp.stringprep.XmppStringprepException;
|
||||||
*/
|
*/
|
||||||
public final class PubSubManager extends Manager {
|
public final class PubSubManager extends Manager {
|
||||||
|
|
||||||
|
public static final String AUTO_CREATE_FEATURE = "http://jabber.org/protocol/pubsub#auto-create";
|
||||||
|
|
||||||
private static final Logger LOGGER = Logger.getLogger(PubSubManager.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(PubSubManager.class.getName());
|
||||||
private static final Map<XMPPConnection, Map<BareJid, PubSubManager>> INSTANCES = new WeakHashMap<>();
|
private static final Map<XMPPConnection, Map<BareJid, PubSubManager>> INSTANCES = new WeakHashMap<>();
|
||||||
|
|
||||||
|
@ -325,6 +327,10 @@ public final class PubSubManager extends Manager {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Try to publish an item and, if the node with the given ID does not exists, auto-create the node.
|
* Try to publish an item and, if the node with the given ID does not exists, auto-create the node.
|
||||||
|
* <p>
|
||||||
|
* Not every PubSub service supports automatic node creation. You can discover if this service supports it by using
|
||||||
|
* {@link #supportsAutomaticNodeCreation()}.
|
||||||
|
* </p>
|
||||||
*
|
*
|
||||||
* @param id The unique id of the node.
|
* @param id The unique id of the node.
|
||||||
* @param item The item to publish.
|
* @param item The item to publish.
|
||||||
|
@ -464,6 +470,23 @@ public final class PubSubManager extends Manager {
|
||||||
return mgr.discoverInfo(pubSubService);
|
return mgr.discoverInfo(pubSubService);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the PubSub service supports automatic node creation.
|
||||||
|
*
|
||||||
|
* @return true if the PubSub service supports automatic node creation.
|
||||||
|
* @throws NoResponseException
|
||||||
|
* @throws XMPPErrorException
|
||||||
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
|
* @since 4.2.1
|
||||||
|
* @see <a href="https://xmpp.org/extensions/xep-0060.html#publisher-publish-autocreate">XEP-0060 § 7.1.4 Automatic Node Creation</a>
|
||||||
|
*/
|
||||||
|
public boolean supportsAutomaticNodeCreation()
|
||||||
|
throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||||
|
ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(connection());
|
||||||
|
return sdm.supportsFeature(pubSubService, AUTO_CREATE_FEATURE);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if it is possible to create PubSub nodes on this service. It could be possible that the
|
* Check if it is possible to create PubSub nodes on this service. It could be possible that the
|
||||||
* PubSub service allows only certain XMPP entities (clients) to create nodes and publish items
|
* PubSub service allows only certain XMPP entities (clients) to create nodes and publish items
|
||||||
|
|
Loading…
Reference in a new issue