mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-11-29 15:32:06 +01:00
Handle cases where no privacy lists are set.
The is when no default or active list is, then don't perform a privacy list request where list name is 'null'. Fixes SMACK-697.
This commit is contained in:
parent
8aa3f94c90
commit
aa832ec1f0
1 changed files with 12 additions and 3 deletions
|
@ -41,6 +41,7 @@ import org.jivesoftware.smack.iqrequest.AbstractIqRequestHandler;
|
||||||
import org.jivesoftware.smack.iqrequest.IQRequestHandler.Mode;
|
import org.jivesoftware.smack.iqrequest.IQRequestHandler.Mode;
|
||||||
import org.jivesoftware.smack.packet.IQ;
|
import org.jivesoftware.smack.packet.IQ;
|
||||||
import org.jivesoftware.smack.packet.Stanza;
|
import org.jivesoftware.smack.packet.Stanza;
|
||||||
|
import org.jivesoftware.smack.util.StringUtils;
|
||||||
import org.jivesoftware.smackx.disco.ServiceDiscoveryManager;
|
import org.jivesoftware.smackx.disco.ServiceDiscoveryManager;
|
||||||
import org.jivesoftware.smackx.privacy.filter.SetActiveListFilter;
|
import org.jivesoftware.smackx.privacy.filter.SetActiveListFilter;
|
||||||
import org.jivesoftware.smackx.privacy.filter.SetDefaultListFilter;
|
import org.jivesoftware.smackx.privacy.filter.SetDefaultListFilter;
|
||||||
|
@ -267,7 +268,7 @@ public class PrivacyListManager extends Manager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Answer the active privacy list.
|
* Answer the active privacy list. Returns <code>null</code> if there is no active list.
|
||||||
*
|
*
|
||||||
* @return the privacy list of the active list.
|
* @return the privacy list of the active list.
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
|
@ -277,6 +278,9 @@ public class PrivacyListManager extends Manager {
|
||||||
public PrivacyList getActiveList() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public PrivacyList getActiveList() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
||||||
Privacy privacyAnswer = this.getPrivacyWithListNames();
|
Privacy privacyAnswer = this.getPrivacyWithListNames();
|
||||||
String listName = privacyAnswer.getActiveName();
|
String listName = privacyAnswer.getActiveName();
|
||||||
|
if (StringUtils.isNullOrEmpty(listName)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
boolean isDefaultAndActive = listName != null && listName.equals(privacyAnswer.getDefaultName());
|
boolean isDefaultAndActive = listName != null && listName.equals(privacyAnswer.getDefaultName());
|
||||||
return new PrivacyList(true, isDefaultAndActive, listName, getPrivacyListItems(listName));
|
return new PrivacyList(true, isDefaultAndActive, listName, getPrivacyListItems(listName));
|
||||||
}
|
}
|
||||||
|
@ -298,7 +302,7 @@ public class PrivacyListManager extends Manager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Answer the default privacy list.
|
* Answer the default privacy list. Returns <code>null</code> if there is no default list.
|
||||||
*
|
*
|
||||||
* @return the privacy list of the default list.
|
* @return the privacy list of the default list.
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
|
@ -308,7 +312,10 @@ public class PrivacyListManager extends Manager {
|
||||||
public PrivacyList getDefaultList() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public PrivacyList getDefaultList() throws NoResponseException, XMPPErrorException, NotConnectedException {
|
||||||
Privacy privacyAnswer = this.getPrivacyWithListNames();
|
Privacy privacyAnswer = this.getPrivacyWithListNames();
|
||||||
String listName = privacyAnswer.getDefaultName();
|
String listName = privacyAnswer.getDefaultName();
|
||||||
boolean isDefaultAndActive = listName != null && listName.equals(privacyAnswer.getActiveName());
|
if (StringUtils.isNullOrEmpty(listName)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
boolean isDefaultAndActive = listName.equals(privacyAnswer.getActiveName());
|
||||||
return new PrivacyList(isDefaultAndActive, true, listName, getPrivacyListItems(listName));
|
return new PrivacyList(isDefaultAndActive, true, listName, getPrivacyListItems(listName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -359,6 +366,7 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
*/
|
*/
|
||||||
private List<PrivacyItem> getPrivacyListItems(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
private List<PrivacyItem> getPrivacyListItems(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
||||||
|
assert StringUtils.isNotEmpty(listName);
|
||||||
// The request of the list is an privacy message with an empty list
|
// The request of the list is an privacy message with an empty list
|
||||||
Privacy request = new Privacy();
|
Privacy request = new Privacy();
|
||||||
request.setPrivacyList(listName, new ArrayList<PrivacyItem>());
|
request.setPrivacyList(listName, new ArrayList<PrivacyItem>());
|
||||||
|
@ -379,6 +387,7 @@ public class PrivacyListManager extends Manager {
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
*/
|
*/
|
||||||
public PrivacyList getPrivacyList(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
public PrivacyList getPrivacyList(String listName) throws NoResponseException, XMPPErrorException, NotConnectedException {
|
||||||
|
listName = StringUtils.requireNotNullOrEmpty(listName, "List name must not be null");
|
||||||
return new PrivacyList(false, false, listName, getPrivacyListItems(listName));
|
return new PrivacyList(false, false, listName, getPrivacyListItems(listName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue