mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-12-24 03:27:59 +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 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 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.
|
||||
* <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 item The item to publish.
|
||||
|
@ -464,6 +470,23 @@ public final class PubSubManager extends Manager {
|
|||
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
|
||||
* PubSub service allows only certain XMPP entities (clients) to create nodes and publish items
|
||||
|
|
Loading…
Reference in a new issue