Return more specific types (e.g. Collection → List)

be generic as possible in what you accept, but more specific in what you
return.

Also tweak MultiuserChatManager methods a bit.
This commit is contained in:
Florian Schmaus 2014-11-29 13:36:56 +01:00
parent 9286a1decb
commit 252d5172e9
12 changed files with 52 additions and 60 deletions

View File

@ -21,7 +21,6 @@ import org.jivesoftware.smack.SmackException.NotConnectedException;
import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.Message;
import java.util.Set; import java.util.Set;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.CopyOnWriteArraySet;
@ -141,12 +140,12 @@ public class Chat {
} }
/** /**
* Returns an unmodifiable collection of all of the listeners registered with this chat. * Returns an unmodifiable set of all of the listeners registered with this chat.
* *
* @return an unmodifiable collection of all of the listeners registered with this chat. * @return an unmodifiable set of all of the listeners registered with this chat.
*/ */
public Collection<ChatMessageListener> getListeners() { public Set<ChatMessageListener> getListeners() {
return Collections.unmodifiableCollection(listeners); return Collections.unmodifiableSet(listeners);
} }
/** /**

View File

@ -17,7 +17,6 @@
package org.jivesoftware.smack; package org.jivesoftware.smack;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -322,14 +321,14 @@ public class ChatManager extends Manager{
} }
/** /**
* Returns an unmodifiable collection of all chat listeners currently registered with this * Returns an unmodifiable set of all chat listeners currently registered with this
* manager. * manager.
* *
* @return an unmodifiable collection of all chat listeners currently registered with this * @return an unmodifiable collection of all chat listeners currently registered with this
* manager. * manager.
*/ */
public Collection<ChatManagerListener> getChatListeners() { public Set<ChatManagerListener> getChatListeners() {
return Collections.unmodifiableCollection(chatManagerListeners); return Collections.unmodifiableSet(chatManagerListeners);
} }
private void deliverMessage(Chat chat, Message message) { private void deliverMessage(Chat chat, Message message) {

View File

@ -369,12 +369,12 @@ public class Roster {
} }
/** /**
* Returns an unmodifiable collection of all entries in the roster, including entries * Returns a set of all entries in the roster, including entries
* that don't belong to any groups. * that don't belong to any groups.
* *
* @return all entries in the roster. * @return all entries in the roster.
*/ */
public Collection<RosterEntry> getEntries() { public Set<RosterEntry> getEntries() {
Set<RosterEntry> allEntries = new HashSet<RosterEntry>(); Set<RosterEntry> allEntries = new HashSet<RosterEntry>();
// Loop through all roster groups and add their entries to the answer // Loop through all roster groups and add their entries to the answer
for (RosterGroup rosterGroup : getGroups()) { for (RosterGroup rosterGroup : getGroups()) {
@ -383,7 +383,7 @@ public class Roster {
// Add the roster unfiled entries to the answer // Add the roster unfiled entries to the answer
allEntries.addAll(unfiledEntries); allEntries.addAll(unfiledEntries);
return Collections.unmodifiableCollection(allEntries); return allEntries;
} }
/** /**
@ -402,7 +402,7 @@ public class Roster {
* *
* @return the unfiled roster entries. * @return the unfiled roster entries.
*/ */
public Collection<RosterEntry> getUnfiledEntries() { public List<RosterEntry> getUnfiledEntries() {
return Collections.unmodifiableList(unfiledEntries); return Collections.unmodifiableList(unfiledEntries);
} }

View File

@ -19,7 +19,6 @@ package org.jivesoftware.smack;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -112,11 +111,11 @@ public class RosterEntry {
} }
/** /**
* Returns an unmodifiable collection of the roster groups that this entry belongs to. * Returns an copied list of the roster groups that this entry belongs to.
* *
* @return an iterator for the groups this entry belongs to. * @return an iterator for the groups this entry belongs to.
*/ */
public Collection<RosterGroup> getGroups() { public List<RosterGroup> getGroups() {
List<RosterGroup> results = new ArrayList<RosterGroup>(); List<RosterGroup> results = new ArrayList<RosterGroup>();
// Loop through all roster groups and find the ones that contain this // Loop through all roster groups and find the ones that contain this
// entry. This algorithm should be fine // entry. This algorithm should be fine
@ -125,7 +124,7 @@ public class RosterEntry {
results.add(group); results.add(group);
} }
} }
return Collections.unmodifiableCollection(results); return results;
} }
/** /**

View File

@ -18,9 +18,8 @@
package org.jivesoftware.smack; package org.jivesoftware.smack;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
@ -99,13 +98,13 @@ public class RosterGroup {
} }
/** /**
* Returns an unmodifiable collection of all entries in the group. * Returns an copied list of all entries in the group.
* *
* @return all entries in the group. * @return all entries in the group.
*/ */
public Collection<RosterEntry> getEntries() { public List<RosterEntry> getEntries() {
synchronized (entries) { synchronized (entries) {
return Collections.unmodifiableList(new ArrayList<RosterEntry>(entries)); return new ArrayList<RosterEntry>(entries);
} }
} }

View File

@ -18,7 +18,6 @@
package org.jivesoftware.smack.packet; package org.jivesoftware.smack.packet;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@ -154,8 +153,8 @@ public final class Message extends Packet {
* *
* @return a collection of all subjects in this message. * @return a collection of all subjects in this message.
*/ */
public Collection<Subject> getSubjects() { public Set<Subject> getSubjects() {
return Collections.unmodifiableCollection(subjects); return Collections.unmodifiableSet(subjects);
} }
/** /**
@ -218,7 +217,7 @@ public final class Message extends Packet {
* *
* @return the languages being used for the subjects. * @return the languages being used for the subjects.
*/ */
public Collection<String> getSubjectLanguages() { public List<String> getSubjectLanguages() {
Subject defaultSubject = getMessageSubject(null); Subject defaultSubject = getMessageSubject(null);
List<String> languages = new ArrayList<String>(); List<String> languages = new ArrayList<String>();
for (Subject subject : subjects) { for (Subject subject : subjects) {
@ -226,7 +225,7 @@ public final class Message extends Packet {
languages.add(subject.language); languages.add(subject.language);
} }
} }
return Collections.unmodifiableCollection(languages); return Collections.unmodifiableList(languages);
} }
/** /**
@ -274,8 +273,8 @@ public final class Message extends Packet {
* @return a collection of all bodies in this Message. * @return a collection of all bodies in this Message.
* @since 3.0.2 * @since 3.0.2
*/ */
public Collection<Body> getBodies() { public Set<Body> getBodies() {
return Collections.unmodifiableCollection(bodies); return Collections.unmodifiableSet(bodies);
} }
/** /**
@ -340,7 +339,7 @@ public final class Message extends Packet {
* @return the languages being used for the bodies. * @return the languages being used for the bodies.
* @since 3.0.2 * @since 3.0.2
*/ */
public Collection<String> getBodyLanguages() { public List<String> getBodyLanguages() {
Body defaultBody = getMessageBody(null); Body defaultBody = getMessageBody(null);
List<String> languages = new ArrayList<String>(); List<String> languages = new ArrayList<String>();
for (Body body : bodies) { for (Body body : bodies) {
@ -348,7 +347,7 @@ public final class Message extends Packet {
languages.add(body.language); languages.add(body.language);
} }
} }
return Collections.unmodifiableCollection(languages); return Collections.unmodifiableList(languages);
} }
/** /**

View File

@ -20,7 +20,6 @@ package org.jivesoftware.smack.packet;
import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smack.util.XmlStringBuilder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
@ -67,13 +66,13 @@ public class RosterPacket extends IQ {
} }
/** /**
* Returns an unmodifiable collection for the roster items in the packet. * Returns a copied list of the roster items in the packet.
* *
* @return an unmodifiable collection for the roster items in the packet. * @return a copied list of the roster items in the packet.
*/ */
public Collection<Item> getRosterItems() { public List<Item> getRosterItems() {
synchronized (rosterItems) { synchronized (rosterItems) {
return Collections.unmodifiableList(new ArrayList<Item>(rosterItems)); return new ArrayList<Item>(rosterItems);
} }
} }

View File

@ -16,9 +16,8 @@
*/ */
package org.jivesoftware.smackx.amp.packet; package org.jivesoftware.smackx.amp.packet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
import org.jivesoftware.smack.packet.PacketExtension; import org.jivesoftware.smack.packet.PacketExtension;
@ -82,12 +81,12 @@ public class AMPExtension implements PacketExtension {
} }
/** /**
* Returns a Collection of the rules in the packet. * Returns a unmodifiable List of the rules in the packet.
* *
* @return a Collection of the rules in the packet. * @return a unmodifiable List of the rules in the packet.
*/ */
public Collection<Rule> getRules() { public List<Rule> getRules() {
return Collections.unmodifiableList(new ArrayList<Rule>(rules)); return Collections.unmodifiableList(rules);
} }
/** /**

View File

@ -17,7 +17,6 @@
package org.jivesoftware.smackx.bookmarks; package org.jivesoftware.smackx.bookmarks;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -95,9 +94,9 @@ public class BookmarkManager {
* @throws NotConnectedException * @throws NotConnectedException
* @see BookmarkedConference * @see BookmarkedConference
*/ */
public Collection<BookmarkedConference> getBookmarkedConferences() throws NoResponseException, XMPPErrorException, NotConnectedException { public List<BookmarkedConference> getBookmarkedConferences() throws NoResponseException, XMPPErrorException, NotConnectedException {
retrieveBookmarks(); retrieveBookmarks();
return Collections.unmodifiableCollection(bookmarks.getBookmarkedConferences()); return Collections.unmodifiableList(bookmarks.getBookmarkedConferences());
} }
/** /**
@ -171,9 +170,9 @@ public class BookmarkManager {
* @throws NoResponseException if there was no response from the server. * @throws NoResponseException if there was no response from the server.
* @throws NotConnectedException * @throws NotConnectedException
*/ */
public Collection<BookmarkedURL> getBookmarkedURLs() throws NoResponseException, XMPPErrorException, NotConnectedException { public List<BookmarkedURL> getBookmarkedURLs() throws NoResponseException, XMPPErrorException, NotConnectedException {
retrieveBookmarks(); retrieveBookmarks();
return Collections.unmodifiableCollection(bookmarks.getBookmarkedURLS()); return Collections.unmodifiableList(bookmarks.getBookmarkedURLS());
} }
/** /**

View File

@ -17,10 +17,10 @@
package org.jivesoftware.smackx.iqregister; package org.jivesoftware.smackx.iqregister;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.WeakHashMap; import java.util.WeakHashMap;
import org.jivesoftware.smack.Manager; import org.jivesoftware.smack.Manager;
@ -141,7 +141,7 @@ public class AccountManager extends Manager {
* @throws NoResponseException * @throws NoResponseException
* @throws NotConnectedException * @throws NotConnectedException
*/ */
public Collection<String> getAccountAttributes() throws NoResponseException, XMPPErrorException, NotConnectedException { public Set<String> getAccountAttributes() throws NoResponseException, XMPPErrorException, NotConnectedException {
if (info == null) { if (info == null) {
getRegistrationInfo(); getRegistrationInfo();
} }

View File

@ -31,12 +31,11 @@ import org.jivesoftware.smackx.disco.packet.DiscoverItems;
*/ */
public class HostedRoom { public class HostedRoom {
private String jid; private final String jid;
private String name; private final String name;
public HostedRoom(DiscoverItems.Item item) { public HostedRoom(DiscoverItems.Item item) {
super();
jid = item.getEntityID(); jid = item.getEntityID();
name = item.getName(); name = item.getName();
} }

View File

@ -18,7 +18,6 @@ package org.jivesoftware.smackx.muc;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
@ -203,11 +202,12 @@ public class MultiUserChatManager extends Manager {
*/ */
public List<String> getJoinedRooms(String user) throws NoResponseException, XMPPErrorException, public List<String> getJoinedRooms(String user) throws NoResponseException, XMPPErrorException,
NotConnectedException { NotConnectedException {
ArrayList<String> answer = new ArrayList<String>();
// Send the disco packet to the user // Send the disco packet to the user
DiscoverItems result = ServiceDiscoveryManager.getInstanceFor(connection()).discoverItems(user, DISCO_NODE); DiscoverItems result = ServiceDiscoveryManager.getInstanceFor(connection()).discoverItems(user, DISCO_NODE);
List<DiscoverItems.Item> items = result.getItems();
List<String> answer = new ArrayList<String>(items.size());
// Collect the entityID for each returned item // Collect the entityID for each returned item
for (DiscoverItems.Item item : result.getItems()) { for (DiscoverItems.Item item : items) {
answer.add(item.getEntityID()); answer.add(item.getEntityID());
} }
return answer; return answer;
@ -242,7 +242,7 @@ public class MultiUserChatManager extends Manager {
} }
/** /**
* Returns a collection of HostedRooms where each HostedRoom has the XMPP address of the room and the room's name. * Returns a List of HostedRooms where each HostedRoom has the XMPP address of the room and the room's name.
* Once discovered the rooms hosted by a chat service it is possible to discover more detailed room information or * Once discovered the rooms hosted by a chat service it is possible to discover more detailed room information or
* join the room. * join the room.
* *
@ -252,12 +252,13 @@ public class MultiUserChatManager extends Manager {
* @throws NoResponseException * @throws NoResponseException
* @throws NotConnectedException * @throws NotConnectedException
*/ */
public Collection<HostedRoom> getHostedRooms(String serviceName) throws NoResponseException, XMPPErrorException, public List<HostedRoom> getHostedRooms(String serviceName) throws NoResponseException, XMPPErrorException,
NotConnectedException { NotConnectedException {
List<HostedRoom> answer = new ArrayList<HostedRoom>();
ServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(connection()); ServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(connection());
DiscoverItems items = discoManager.discoverItems(serviceName); DiscoverItems discoverItems = discoManager.discoverItems(serviceName);
for (DiscoverItems.Item item : items.getItems()) { List<DiscoverItems.Item> items = discoverItems.getItems();
List<HostedRoom> answer = new ArrayList<HostedRoom>(items.size());
for (DiscoverItems.Item item : items) {
answer.add(new HostedRoom(item)); answer.add(new HostedRoom(item));
} }
return answer; return answer;