mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-11-25 21:42:07 +01:00
Extend MucConfigFormManager and add javadoc
This commit is contained in:
parent
19469b0faf
commit
fb6aaa073e
1 changed files with 143 additions and 0 deletions
|
@ -46,8 +46,30 @@ import org.jxmpp.jid.util.JidUtil;
|
||||||
* </p>
|
* </p>
|
||||||
*/
|
*/
|
||||||
public class MucConfigFormManager {
|
public class MucConfigFormManager {
|
||||||
|
/**
|
||||||
|
* The constant String {@value}.
|
||||||
|
*
|
||||||
|
* @see <a href="http://xmpp.org/extensions/xep-0045.html#owner">XEP-0045 § 10. Owner Use Cases</a>
|
||||||
|
*/
|
||||||
public static final String MUC_ROOMCONFIG_ROOMOWNERS = "muc#roomconfig_roomowners";
|
public static final String MUC_ROOMCONFIG_ROOMOWNERS = "muc#roomconfig_roomowners";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The constant String {@value}.
|
||||||
|
*/
|
||||||
|
public static final String MUC_ROOMCONFIG_MEMBERSONLY = "muc#roomconfig_membersonly";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The constant String {@value}.
|
||||||
|
*
|
||||||
|
* @see <a href="http://xmpp.org/extensions/xep-0045.html#enter-pw">XEP-0045 § 7.2.6 Password-Protected Rooms</a>
|
||||||
|
*/
|
||||||
|
public static final String MUC_ROOMCONFIG_PASSWORDPROTECTEDROOM = "muc#roomconfig_passwordprotectedroom";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The constant String {@value}.
|
||||||
|
*/
|
||||||
|
public static final String MUC_ROOMCONFIG_ROOMSECRET = "muc#roomconfig_roomsecret";
|
||||||
|
|
||||||
private final MultiUserChat multiUserChat;
|
private final MultiUserChat multiUserChat;
|
||||||
private final Form answerForm;
|
private final Form answerForm;
|
||||||
private final List<Jid> owners;
|
private final List<Jid> owners;
|
||||||
|
@ -93,10 +115,23 @@ public class MucConfigFormManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the room supports room owners.
|
||||||
|
* @return <code>true</code> if supported, <code>false</code> if not.
|
||||||
|
* @see #MUC_ROOMCONFIG_ROOMOWNERS
|
||||||
|
*/
|
||||||
public boolean supportsRoomOwners() {
|
public boolean supportsRoomOwners() {
|
||||||
return owners != null;
|
return owners != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the owners of the room.
|
||||||
|
*
|
||||||
|
* @param newOwners a collection of JIDs to become the new owners of the room.
|
||||||
|
* @return a reference to this object.
|
||||||
|
* @throws MucConfigurationNotSupportedException if the MUC service does not support this option.
|
||||||
|
* @see #MUC_ROOMCONFIG_ROOMOWNERS
|
||||||
|
*/
|
||||||
public MucConfigFormManager setRoomOwners(Collection<? extends Jid> newOwners) throws MucConfigurationNotSupportedException {
|
public MucConfigFormManager setRoomOwners(Collection<? extends Jid> newOwners) throws MucConfigurationNotSupportedException {
|
||||||
if (!supportsRoomOwners()) {
|
if (!supportsRoomOwners()) {
|
||||||
throw new MucConfigurationNotSupportedException(MUC_ROOMCONFIG_ROOMOWNERS);
|
throw new MucConfigurationNotSupportedException(MUC_ROOMCONFIG_ROOMOWNERS);
|
||||||
|
@ -106,6 +141,114 @@ public class MucConfigFormManager {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the room supports a members only configuration.
|
||||||
|
*
|
||||||
|
* @return <code>true</code> if supported, <code>false</code> if not.
|
||||||
|
*/
|
||||||
|
public boolean supportsMembersOnly() {
|
||||||
|
return answerForm.hasField(MUC_ROOMCONFIG_MEMBERSONLY);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make the room for members only.
|
||||||
|
*
|
||||||
|
* @return a reference to this object.
|
||||||
|
* @throws MucConfigurationNotSupportedException
|
||||||
|
*/
|
||||||
|
public MucConfigFormManager makeMembersOnly() throws MucConfigurationNotSupportedException {
|
||||||
|
return setMembersOnly(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set if the room is members only. Rooms are not members only per default.
|
||||||
|
*
|
||||||
|
* @param isMembersOnly if the room should be members only.
|
||||||
|
* @return a reference to this object.
|
||||||
|
* @throws MucConfigurationNotSupportedException
|
||||||
|
*/
|
||||||
|
public MucConfigFormManager setMembersOnly(boolean isMembersOnly) throws MucConfigurationNotSupportedException {
|
||||||
|
if (!supportsMembersOnly()) {
|
||||||
|
throw new MucConfigurationNotSupportedException(MUC_ROOMCONFIG_MEMBERSONLY);
|
||||||
|
}
|
||||||
|
answerForm.setAnswer(MUC_ROOMCONFIG_MEMBERSONLY, isMembersOnly);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the room supports password protection.
|
||||||
|
*
|
||||||
|
* @return <code>true</code> if supported, <code>false</code> if not.
|
||||||
|
*/
|
||||||
|
public boolean supportsPasswordProtected() {
|
||||||
|
return answerForm.hasField(MUC_ROOMCONFIG_PASSWORDPROTECTEDROOM);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a password and make the room password protected. Users will need to supply the password
|
||||||
|
* to join the room.
|
||||||
|
*
|
||||||
|
* @param password the password to set.
|
||||||
|
* @return a reference to this object.
|
||||||
|
* @throws MucConfigurationNotSupportedException
|
||||||
|
*/
|
||||||
|
public MucConfigFormManager setAndEnablePassword(String password)
|
||||||
|
throws MucConfigurationNotSupportedException {
|
||||||
|
return setIsPasswordProtected(true).setRoomSecret(password);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make the room password protected.
|
||||||
|
*
|
||||||
|
* @return a reference to this object.
|
||||||
|
* @throws MucConfigurationNotSupportedException
|
||||||
|
*/
|
||||||
|
public MucConfigFormManager makePasswordProtected() throws MucConfigurationNotSupportedException {
|
||||||
|
return setIsPasswordProtected(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set if this room is password protected. Rooms are by default not password protected.
|
||||||
|
*
|
||||||
|
* @param isPasswordProtected
|
||||||
|
* @return a reference to this object.
|
||||||
|
* @throws MucConfigurationNotSupportedException
|
||||||
|
*/
|
||||||
|
public MucConfigFormManager setIsPasswordProtected(boolean isPasswordProtected)
|
||||||
|
throws MucConfigurationNotSupportedException {
|
||||||
|
if (!supportsMembersOnly()) {
|
||||||
|
throw new MucConfigurationNotSupportedException(MUC_ROOMCONFIG_PASSWORDPROTECTEDROOM);
|
||||||
|
}
|
||||||
|
answerForm.setAnswer(MUC_ROOMCONFIG_PASSWORDPROTECTEDROOM, isPasswordProtected);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the room secret, aka the room password. If set and enabled, the password is required to
|
||||||
|
* join the room. Note that this does only set it by does not enable password protection. Use
|
||||||
|
* {@link #setAndEnablePassword(String)} to set a password and make the room protected.
|
||||||
|
*
|
||||||
|
* @param secret the secret/password.
|
||||||
|
* @return a reference to this object.
|
||||||
|
* @throws MucConfigurationNotSupportedException
|
||||||
|
*/
|
||||||
|
public MucConfigFormManager setRoomSecret(String secret)
|
||||||
|
throws MucConfigurationNotSupportedException {
|
||||||
|
if (!answerForm.hasField(MUC_ROOMCONFIG_ROOMSECRET)) {
|
||||||
|
throw new MucConfigurationNotSupportedException(MUC_ROOMCONFIG_ROOMSECRET);
|
||||||
|
}
|
||||||
|
answerForm.setAnswer(MUC_ROOMCONFIG_ROOMSECRET, secret);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Submit the configuration as {@link Form} to the room.
|
||||||
|
*
|
||||||
|
* @throws NoResponseException if there was no response from the room.
|
||||||
|
* @throws XMPPErrorException
|
||||||
|
* @throws NotConnectedException
|
||||||
|
* @throws InterruptedException
|
||||||
|
*/
|
||||||
public void submitConfigurationForm() throws NoResponseException, XMPPErrorException, NotConnectedException,
|
public void submitConfigurationForm() throws NoResponseException, XMPPErrorException, NotConnectedException,
|
||||||
InterruptedException {
|
InterruptedException {
|
||||||
if (owners != null) {
|
if (owners != null) {
|
||||||
|
|
Loading…
Reference in a new issue