aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator
diff options
context:
space:
mode:
authorhristoterezov <hristo@jitsi.org>2013-12-14 14:53:37 +0200
committerhristoterezov <hristo@jitsi.org>2013-12-14 14:53:37 +0200
commit79214016b4ed3342707f1b5a0d7dcd10921cec78 (patch)
tree6c2d9996cb912d74cd6869f27de79bb4ccd46af9 /src/net/java/sip/communicator
parent0c822b0225ee2ab41deaeaa04c4e4b128905949c (diff)
downloadjitsi-79214016b4ed3342707f1b5a0d7dcd10921cec78.zip
jitsi-79214016b4ed3342707f1b5a0d7dcd10921cec78.tar.gz
jitsi-79214016b4ed3342707f1b5a0d7dcd10921cec78.tar.bz2
Changes the contact source interfaces to use only the listeners for adding
contacts. This change fixes an issue with missing contacts from the contact list.
Diffstat (limited to 'src/net/java/sip/communicator')
-rw-r--r--src/net/java/sip/communicator/impl/callhistory/CallHistoryContactSource.java93
-rw-r--r--src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsQuery.java18
-rw-r--r--src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsSourceService.java53
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/call/CallManager.java4
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatInviteDialog.java18
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/CallHistoryFilter.java28
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java57
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java89
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java33
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java6
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java15
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ProtocolContactSourceServiceImpl.java60
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/StringContactSourceServiceImpl.java24
-rw-r--r--src/net/java/sip/communicator/impl/gui/utils/InviteContactListFilter.java5
-rw-r--r--src/net/java/sip/communicator/impl/ldap/LdapContactQuery.java18
-rw-r--r--src/net/java/sip/communicator/impl/ldap/LdapContactSourceService.java55
-rw-r--r--src/net/java/sip/communicator/impl/muc/ChatRoomContactSourceService.java13
-rw-r--r--src/net/java/sip/communicator/impl/muc/ServerChatRoomContactSourceService.java14
-rw-r--r--src/net/java/sip/communicator/impl/muc/ServerChatRoomQuery.java1
-rw-r--r--src/net/java/sip/communicator/plugin/addrbook/macosx/MacOSXAddrBookContactSourceService.java5
-rw-r--r--src/net/java/sip/communicator/plugin/addrbook/msoutlook/MsOutlookAddrBookContactSourceService.java7
-rw-r--r--src/net/java/sip/communicator/plugin/demuxcontactsource/DemuxContactSource.java58
-rw-r--r--src/net/java/sip/communicator/plugin/phonenumbercontactsource/PhoneNumberContactSource.java13
-rw-r--r--src/net/java/sip/communicator/plugin/thunderbird/ThunderbirdContactSourceService.java15
-rw-r--r--src/net/java/sip/communicator/service/contactsource/AsyncContactSourceService.java13
-rw-r--r--src/net/java/sip/communicator/service/contactsource/ContactQuery.java5
-rw-r--r--src/net/java/sip/communicator/service/contactsource/ContactSourceService.java23
-rw-r--r--src/net/java/sip/communicator/service/contactsource/ExtendedContactSourceService.java4
28 files changed, 318 insertions, 429 deletions
diff --git a/src/net/java/sip/communicator/impl/callhistory/CallHistoryContactSource.java b/src/net/java/sip/communicator/impl/callhistory/CallHistoryContactSource.java
index f78ec65..b184430 100644
--- a/src/net/java/sip/communicator/impl/callhistory/CallHistoryContactSource.java
+++ b/src/net/java/sip/communicator/impl/callhistory/CallHistoryContactSource.java
@@ -36,31 +36,36 @@ public class CallHistoryContactSource
}
/**
- * Queries this contact source for the given <tt>searchString</tt>.
+ * Creates query for the given <tt>searchString</tt>.
* @param queryString the string to search for
+ * @param listener the listener that receives the found contacts
* @return the created query
*/
- public ContactQuery queryContactSource(String queryString)
+ public ContactQuery createContactQuery(String queryString)
{
- return queryContactSource(queryString, 50);
+ return createContactQuery(queryString, 50);
}
/**
- * Queries this contact source for the given <tt>searchString</tt>.
+ * Creates query for the given <tt>searchString</tt>.
* @param queryString the string to search for
* @param contactCount the maximum count of result contacts
* @return the created query
*/
- public ContactQuery queryContactSource(String queryString, int contactCount)
+ public ContactQuery createContactQuery(String queryString, int contactCount)
{
if (queryString != null && queryString.length() > 0)
+ {
return new CallHistoryContactQuery(
CallHistoryActivator.getCallHistoryService()
.findByPeer(queryString, contactCount));
+ }
else
+ {
return new CallHistoryContactQuery(
CallHistoryActivator.getCallHistoryService()
.findLast(contactCount));
+ }
}
/**
@@ -93,6 +98,11 @@ public class CallHistoryContactSource
* progress.
*/
private int status = QUERY_IN_PROGRESS;
+
+ /**
+ * Iterator for the queried contacts.
+ */
+ Iterator<CallRecord> recordsIter = null;
/**
* Creates an instance of <tt>CallHistoryContactQuery</tt> by specifying
@@ -102,6 +112,7 @@ public class CallHistoryContactSource
*/
public CallHistoryContactQuery(Collection<CallRecord> callRecords)
{
+ recordsIter = callRecords.iterator();
Iterator<CallRecord> recordsIter = callRecords.iterator();
while (recordsIter.hasNext() && status != QUERY_CANCELED)
@@ -116,48 +127,56 @@ public class CallHistoryContactSource
status = QUERY_COMPLETED;
}
- /**
- * Creates an instance of <tt>CallHistoryContactQuery</tt> based on the
- * given <tt>callHistoryQuery</tt>.
- * @param callHistoryQuery the query used to track the call history
- */
- public CallHistoryContactQuery(CallHistoryQuery callHistoryQuery)
+ @Override
+ public void start()
{
- this.callHistoryQuery = callHistoryQuery;
-
- callHistoryQuery.addQueryListener(new CallHistoryQueryListener()
+ if(callHistoryQuery != null)
{
- public void callRecordReceived(CallRecordEvent event)
+ callHistoryQuery.addQueryListener(new CallHistoryQueryListener()
{
- if (getStatus() == ContactQuery.QUERY_CANCELED)
- return;
-
- SourceContact contact = new CallHistorySourceContact(
- CallHistoryContactSource.this,
- event.getCallRecord());
- sourceContacts.add(contact);
- fireQueryEvent(contact);
- }
-
- public void queryStatusChanged(
- CallHistoryQueryStatusEvent event)
- {
- status = event.getEventType();
- fireQueryStatusEvent(status);
- }
- });
-
- Iterator<CallRecord> callRecords
- = callHistoryQuery.getCallRecords().iterator();
+ public void callRecordReceived(CallRecordEvent event)
+ {
+ if (getStatus() == ContactQuery.QUERY_CANCELED)
+ return;
+
+ SourceContact contact = new CallHistorySourceContact(
+ CallHistoryContactSource.this,
+ event.getCallRecord());
+ sourceContacts.add(contact);
+ fireQueryEvent(contact);
+ }
+
+ public void queryStatusChanged(
+ CallHistoryQueryStatusEvent event)
+ {
+ status = event.getEventType();
+ fireQueryStatusEvent(status);
+ }
+ });
+ recordsIter = callHistoryQuery.getCallRecords().iterator();
+ }
- while (callRecords.hasNext())
+ while (recordsIter.hasNext())
{
SourceContact contact = new CallHistorySourceContact(
CallHistoryContactSource.this,
- callRecords.next());
+ recordsIter.next());
sourceContacts.add(contact);
+ fireQueryEvent(contact);
}
}
+
+ /**
+ * Creates an instance of <tt>CallHistoryContactQuery</tt> based on the
+ * given <tt>callHistoryQuery</tt>.
+ * @param callHistoryQuery the query used to track the call history
+ */
+ public CallHistoryContactQuery(CallHistoryQuery callHistoryQuery)
+ {
+ this.callHistoryQuery = callHistoryQuery;
+
+
+ }
/**
* Adds the given <tt>ContactQueryListener</tt> to the list of query
diff --git a/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsQuery.java b/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsQuery.java
index 4286a15..b653b95 100644
--- a/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsQuery.java
+++ b/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsQuery.java
@@ -135,6 +135,24 @@ public class GoogleContactsQuery
});
}
+ @Override
+ public synchronized void start()
+ {
+ boolean hasStarted = false;
+
+ try
+ {
+ super.start();
+ hasStarted = true;
+ }
+ finally
+ {
+ if (!hasStarted)
+ {
+ getContactSource().removeQuery(this);
+ }
+ }
+ }
/**
* Gets the <tt>contactDetails</tt> to be set on a <tt>SourceContact</tt>.
*
diff --git a/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsSourceService.java b/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsSourceService.java
index b0f578c..6a15559 100644
--- a/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsSourceService.java
+++ b/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsSourceService.java
@@ -126,57 +126,50 @@ public class GoogleContactsSourceService
}
/**
- * Queries this search source for the given <tt>searchPattern</tt>.
+ * Creates query for the given <tt>searchPattern</tt>.
*
* @param queryPattern the pattern to search for
+ * @param listener the listener that receives the found contacts
* @return the created query
*/
- public ContactQuery queryContactSource(Pattern queryPattern)
+ public ContactQuery createContactQuery(Pattern queryPattern)
{
- return queryContactSource(queryPattern,
+ return createContactQuery(queryPattern,
GoogleContactsQuery.GOOGLECONTACTS_MAX_RESULTS);
}
/**
- * Queries this search source for the given <tt>searchPattern</tt>.
+ * Creates query for the given <tt>searchPattern</tt>.
*
* @param queryPattern the pattern to search for
* @param count maximum number of contact returned
* @return the created query
*/
- public ContactQuery queryContactSource(Pattern queryPattern, int count)
+ public ContactQuery createContactQuery(Pattern queryPattern, int count)
{
GoogleContactsQuery query = new GoogleContactsQuery(this, queryPattern,
count);
-
+
synchronized (queries)
{
queries.add(query);
}
- boolean hasStarted = false;
-
- try
- {
- query.start();
- hasStarted = true;
- }
- finally
- {
- if (!hasStarted)
- {
- synchronized (queries)
- {
- if (queries.remove(query))
- queries.notify();
- }
- }
- }
-
return query;
}
/**
+ * Removes query from the list of queries.
+ *
+ * @param query the query that will be removed.
+ */
+ public synchronized void removeQuery(ContactQuery query)
+ {
+ if (queries.remove(query))
+ queries.notify();
+ }
+
+ /**
* Returns the Google Contacts connection.
*
* @return Google Contacts connection
@@ -331,21 +324,21 @@ public class GoogleContactsSourceService
* @param query the string to search for
* @return the created query
*/
- public ContactQuery queryContactSource(String query)
+ public ContactQuery createContactQuery(String query)
{
- return queryContactSource(
+ return createContactQuery(
query,
GoogleContactsQuery.GOOGLECONTACTS_MAX_RESULTS);
}
/**
- * Queries this search source for the given <tt>queryString</tt>.
+ *Creates query for the given <tt>queryString</tt>.
*
* @param query the string to search for
* @param contactCount the maximum count of result contacts
* @return the created query
*/
- public ContactQuery queryContactSource(String query, int contactCount)
+ public ContactQuery createContactQuery(String query, int contactCount)
{
Pattern pattern = null;
try
@@ -360,7 +353,7 @@ public class GoogleContactsSourceService
if(pattern != null)
{
- return queryContactSource(pattern, contactCount);
+ return createContactQuery(pattern, contactCount);
}
return null;
}
diff --git a/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java b/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java
index bd6d217..f66880c 100644
--- a/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java
+++ b/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java
@@ -4143,11 +4143,13 @@ public class CallManager
// use the pattern method of (ExtendedContactSourceService)
ContactQuery query
= ((ExtendedContactSourceService)contactSourceService)
- .queryContactSource(pattern);
+ .createContactQuery(pattern);
resolvers.add(
new ResolveAddressToDisplayNameContactQueryListener(
query));
+
+ query.start();
}
long startTime = System.currentTimeMillis();
diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatInviteDialog.java b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatInviteDialog.java
index a97ed19..b8cac1a 100644
--- a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatInviteDialog.java
+++ b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatInviteDialog.java
@@ -117,24 +117,6 @@ public class ChatInviteDialog
}
return true;
}
-
- @Override
- protected void addMatching(List<SourceContact> sourceContacts)
- {
- Iterator<SourceContact> contactsIter = sourceContacts.iterator();
-
- List<SourceContact> matchedContacts = new ArrayList<SourceContact>();
- while (contactsIter.hasNext())
- {
- SourceContact contact = contactsIter.next();
- if(!opSetMUC.isPrivateMessagingContact(
- contact.getContactAddress()))
- {
- matchedContacts.add(contact);
- }
- }
- super.addMatching(matchedContacts);
- }
}
/**
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/CallHistoryFilter.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/CallHistoryFilter.java
index 82d93e4..6b33b18 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/CallHistoryFilter.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/CallHistoryFilter.java
@@ -46,13 +46,11 @@ public class CallHistoryFilter
// We're in a case of call history contact source.
ContactQuery query
= contactSource.getContactSourceService()
- .queryContactSource("", 50);
+ .createContactQuery("", 50);
filterQuery.addContactQuery(query);
- // Add first available results.
- addMatching(query.getQueryResults(),
- contactSource);
+ query.start();
// We know that this query should be finished here and we do not
// expect any further results from it.
@@ -99,28 +97,6 @@ public class CallHistoryFilter
}
/**
- * Adds matching <tt>sourceContacts</tt> to the result tree model.
- *
- * @param sourceContacts the list of <tt>SourceContact</tt>s to add
- * @param uiSource the <tt>ExternalContactSource</tt>, which contacts
- * we're adding
- */
- private void addMatching( List<SourceContact> sourceContacts,
- UIContactSource uiSource)
- {
- Iterator<SourceContact> contactsIter = sourceContacts.iterator();
-
- while (contactsIter.hasNext())
- {
- GuiActivator.getContactList().addContact(
- uiSource.createUIContact(contactsIter.next()),
- uiSource.getUIGroup(),
- false,
- true);
- }
- }
-
- /**
* Adds matching notification contacts to the result tree model.
*
* @param notifSource
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java
index 8f94468..64ed8b0 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java
@@ -86,8 +86,6 @@ public class PresenceFilter
// Add this query to the filterQuery.
filterQuery.addContactQuery(query);
- List<ContactQuery> contactQueryList = new ArrayList<ContactQuery>();
-
for(int cssType : contactSourcePreferences.keySet())
{
Iterator<UIContactSource> filterSources
@@ -107,12 +105,17 @@ public class PresenceFilter
ContactSourceService sourceService
= filterSource.getContactSourceService();
- ContactQuery contactQuery = sourceService.queryContactSource(null);
-
- contactQueryList.add(contactQuery);
-
+
+ ContactQuery contactQuery
+ = sourceService.createContactQuery(null);
+
// Add this query to the filterQuery.
filterQuery.addContactQuery(contactQuery);
+
+ contactQuery.addContactQueryListener(
+ GuiActivator.getContactList());
+
+ contactQuery.start();
}
}
@@ -120,21 +123,11 @@ public class PresenceFilter
filterQuery.close();
query.addContactQueryListener(GuiActivator.getContactList());
-
int resultCount = 0;
addMatching(GuiActivator.getContactListService().getRoot(),
query,
resultCount);
- for(ContactQuery contactQuery : contactQueryList)
- {
- for(SourceContact contact : contactQuery.getQueryResults())
- {
- addSourceContact(contact);
- }
- contactQuery.addContactQueryListener(GuiActivator.getContactList());
- }
-
query.fireQueryEvent(
query.isCanceled()
? MetaContactQueryStatusEvent.QUERY_CANCELED
@@ -290,6 +283,7 @@ public class PresenceFilter
if(isMatching(metaContact))
{
+
resultCount++;
if (resultCount <= INITIAL_CONTACT_COUNT)
{
@@ -362,35 +356,4 @@ public class PresenceFilter
}
}
}
-
- /**
- * Adds the given <tt>sourceContact</tt> to the contact list.
- * @param sourceContact the <tt>SourceContact</tt> to add
- */
- private void addSourceContact(SourceContact sourceContact)
- {
- ContactSourceService contactSource
- = sourceContact.getContactSource();
-
- TreeContactList sourceContactList = GuiActivator.getContactList();
- UIContactSource sourceUI
- = sourceContactList .getContactSource(contactSource);
-
- if (sourceUI != null
- // ExtendedContactSourceService has already matched the
- // SourceContact over the pattern
- && (contactSource instanceof ExtendedContactSourceService)
- || isMatching(sourceContact))
- {
- boolean isSorted = (sourceContact.getIndex() > -1) ? true : false;
-
- sourceContactList.addContact(
- sourceUI.createUIContact(sourceContact),
- sourceUI.getUIGroup(),
- isSorted,
- true);
- }
- else
- sourceUI.removeUIContact(sourceContact);
- }
}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java
index 1a04516..e8cc603 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java
@@ -104,13 +104,14 @@ public class SearchFilter
if (sourceContactList.getDefaultFilter()
.equals(TreeContactList.presenceFilter))
{
- MetaContactQuery defaultQuery
- = mclSource.queryMetaContactSource(filterPattern);
-
+ final MetaContactQuery defaultQuery = new MetaContactQuery();
+
defaultQuery.addContactQueryListener(sourceContactList);
-
+
// First add the MetaContactListSource
filterQuery.addContactQuery(defaultQuery);
+
+ mclSource.startQuery(defaultQuery, filterPattern);
}
else if (sourceContactList.getDefaultFilter()
.equals(TreeContactList.historyFilter))
@@ -155,10 +156,7 @@ public class SearchFilter
if (filterQuery.isCanceled())
return;
- ContactQuery query = applyFilter(filterSource);
-
- if (query.getStatus() == ContactQuery.QUERY_IN_PROGRESS)
- filterQuery.addContactQuery(query);
+ applyFilter(filterSource, filterQuery);
}
// Closes this filter to indicate that we finished adding queries to it.
@@ -173,9 +171,11 @@ public class SearchFilter
*
* @param contactSource the <tt>ExternalContactSource</tt> to apply the
* filter to
+ * @param filterQuery the filter query object.
* @return the <tt>ContactQuery</tt> that tracks this filter
*/
- protected ContactQuery applyFilter(UIContactSource contactSource)
+ protected ContactQuery applyFilter(UIContactSource contactSource,
+ FilterQuery filterQuery)
{
ContactSourceService sourceService
= contactSource.getContactSourceService();
@@ -184,15 +184,19 @@ public class SearchFilter
if (sourceService instanceof ExtendedContactSourceService)
contactQuery
= ((ExtendedContactSourceService) sourceService)
- .queryContactSource(filterPattern);
+ .createContactQuery(filterPattern);
else
- contactQuery = sourceService.queryContactSource(filterString);
-
- // Add first available results.
- this.addMatching(contactQuery.getQueryResults());
+ contactQuery = sourceService.createContactQuery(filterString);
contactQuery.addContactQueryListener(sourceContactList);
-
+
+ if (contactQuery.getStatus() == ContactQuery.QUERY_IN_PROGRESS)
+ {
+ filterQuery.addContactQuery(contactQuery);
+ }
+
+ contactQuery.start();
+
return contactQuery;
}
@@ -253,19 +257,6 @@ public class SearchFilter
}
/**
- * Checks if the given <tt>contact</tt> is matching the current filter.
- * A <tt>SourceContact</tt> would be matching the filter if its display
- * name is matching the search string.
- * @param contact the <tt>ContactListContactDescriptor</tt> to check
- * @return <tt>true</tt> to indicate that the given <tt>contact</tt> is
- * matching the current filter, otherwise returns <tt>false</tt>
- */
- private boolean isMatching(SourceContact contact)
- {
- return isMatching(contact.getDisplayName());
- }
-
- /**
* Indicates if the given string matches this filter.
* @param text the text to check
* @return <tt>true</tt> to indicate that the given <tt>text</tt> matches
@@ -278,46 +269,4 @@ public class SearchFilter
return true;
}
-
- /**
- * Adds the list of <tt>sourceContacts</tt> to the contact list.
- * @param sourceContacts the list of <tt>SourceContact</tt>s to add
- */
- protected void addMatching(List<SourceContact> sourceContacts)
- {
- Iterator<SourceContact> contactsIter = sourceContacts.iterator();
-
- while (contactsIter.hasNext())
- addSourceContact(contactsIter.next());
- }
-
- /**
- * Adds the given <tt>sourceContact</tt> to the contact list.
- * @param sourceContact the <tt>SourceContact</tt> to add
- */
- private void addSourceContact(SourceContact sourceContact)
- {
- ContactSourceService contactSource
- = sourceContact.getContactSource();
-
- UIContactSource sourceUI
- = sourceContactList.getContactSource(contactSource);
-
- if (sourceUI != null
- // ExtendedContactSourceService has already matched the
- // SourceContact over the pattern
- && (contactSource instanceof ExtendedContactSourceService)
- || isMatching(sourceContact))
- {
- boolean isSorted = (sourceContact.getIndex() > -1) ? true : false;
-
- sourceContactList.addContact(
- sourceUI.createUIContact(sourceContact),
- sourceUI.getUIGroup(),
- isSorted,
- true);
- }
- else
- sourceUI.removeUIContact(sourceContact);
- }
}
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java
index 157ea09..e614a4b 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/TreeContactList.java
@@ -324,7 +324,6 @@ public class TreeContactList
{
MetaContact metaContact = event.getMetaContact();
MetaContactGroup parentGroup = metaContact.getParentMetaContactGroup();
-
UIGroup uiGroup = MetaContactListSource
.getUIGroup(parentGroup);
if (!MetaContactListSource.isRootGroup(parentGroup))
@@ -573,18 +572,19 @@ public class TreeContactList
UIGroup uiGroup = MetaContactListSource
.getUIGroup(rootGroup);
- if (uiGroup == null)
- uiGroup = MetaContactListSource
- .createUIGroup(rootGroup);
+ if (uiGroup != null)
+ return;
+
+ uiGroup = MetaContactListSource
+ .createUIGroup(rootGroup);
- treeModel.getRoot().sortedAddContactGroup((UIGroupImpl)uiGroup);
+ treeModel.getRoot().sortedAddContactGroup((UIGroupImpl)uiGroup);
Iterator<MetaContact> i = rootGroup.getChildContacts();
while (i.hasNext())
{
MetaContact contact = i.next();
- UIContact uiContact
- = MetaContactListSource.getUIContact(contact);
+ UIContact uiContact = MetaContactListSource.getUIContact(contact);
removeContact(uiContact);
uiContact = MetaContactListSource.createUIContact(contact);
if (currentFilter.isMatching(uiContact))
@@ -601,6 +601,7 @@ public class TreeContactList
{
MetaContactGroup rootGroup
= GuiActivator.getContactListService().getRoot();
+
UIGroup uiGroup = MetaContactListSource
.getUIGroup(rootGroup);
@@ -613,7 +614,7 @@ public class TreeContactList
while (i.hasNext())
{
MetaContact contact = i.next();
- UIContact uiContact
+ UIContact uiContact
= MetaContactListSource.getUIContact(contact);
removeContact(uiContact);
uiContact = MetaContactListSource.createUIContact(contact);
@@ -1936,12 +1937,7 @@ public class TreeContactList
if (contactSource instanceof ExtendedContactSourceService)
{
- ContactQuery query = ((ExtendedContactSourceService)
- contactSource).queryContactSource(filterPattern);
-
- loadedQueries.add(query);
-
- query.addContactQueryListener(new ContactQueryListener()
+ ContactQueryListener queryListener = new ContactQueryListener()
{
public void queryStatusChanged(ContactQueryStatusEvent event)
{}
@@ -2026,7 +2022,14 @@ public class TreeContactList
if (contactNode != null)
nodeChanged(contactNode);
}
- });
+ };
+
+ ContactQuery query = ((ExtendedContactSourceService)
+ contactSource).createContactQuery(filterPattern);
+
+ loadedQueries.add(query);
+
+ query.start();
// If the image search has been canceled from one of the
// previous sources, we return here.
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java
index c18b825..6e6c8d7 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/UIFilterQuery.java
@@ -114,12 +114,6 @@ public class UIFilterQuery
{
ContactQuery externalQuery = (ContactQuery) contactQuery;
- List<SourceContact> externalResults
- = externalQuery.getQueryResults();
-
- if (externalResults != null && externalResults.size() > 0)
- queryResults = new ArrayList<SourceContact>(externalResults);
-
externalQuery.addContactQueryListener(this);
}
else if (contactQuery instanceof MetaContactQuery)
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java
index 411e905..e182b3e 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java
@@ -185,17 +185,14 @@ public class MetaContactListSource
}
/**
- * Filters the <tt>MetaContactListService</tt> to match the given
- * <tt>filterPattern</tt> and stores the result in the given
- * <tt>treeModel</tt>.
+ * Starts the query.
+ *
* @param filterPattern the pattern to filter through
- * @return the created <tt>MetaContactQuery</tt> corresponding to the
- * query this method does
+ * @param query the query to be started
*/
- public MetaContactQuery queryMetaContactSource(final Pattern filterPattern)
+ public void startQuery(final MetaContactQuery query,
+ final Pattern filterPattern)
{
- final MetaContactQuery query = new MetaContactQuery();
-
new Thread()
{
@Override
@@ -215,8 +212,6 @@ public class MetaContactListSource
MetaContactQueryStatusEvent.QUERY_CANCELED);
}
}.start();
-
- return query;
}
/**
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ProtocolContactSourceServiceImpl.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ProtocolContactSourceServiceImpl.java
index 9471b27..b7dde5b 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ProtocolContactSourceServiceImpl.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ProtocolContactSourceServiceImpl.java
@@ -83,24 +83,24 @@ public class ProtocolContactSourceServiceImpl
}
/**
- * Queries this search source for the given <tt>queryString</tt>.
+ * Creates query for the given <tt>searchPattern</tt>.
*
* @param queryString the string to search for
* @return the created query
*/
- public ContactQuery queryContactSource(String queryString)
+ public ContactQuery createContactQuery(String queryString)
{
- return queryContactSource(queryString, -1);
+ return createContactQuery(queryString, -1);
}
/**
- * Queries this search source for the given <tt>queryString</tt>.
+ * Creates query for the given <tt>searchPattern</tt>.
*
* @param queryString the string to search for
* @param contactCount the maximum count of result contacts
* @return the created query
*/
- public ContactQuery queryContactSource( String queryString,
+ public ContactQuery createContactQuery( String queryString,
int contactCount)
{
if (queryString == null)
@@ -108,32 +108,24 @@ public class ProtocolContactSourceServiceImpl
ProtocolCQuery contactQuery
= new ProtocolCQuery(queryString, contactCount);
-
+
synchronized (queries)
{
queries.add(contactQuery);
}
- boolean queryHasStarted = false;
-
- try
- {
- contactQuery.start();
- queryHasStarted = true;
- }
- finally
- {
- if (!queryHasStarted)
- {
- synchronized (queries)
- {
- if (queries.remove(contactQuery))
- queries.notify();
- }
- }
- }
return contactQuery;
}
+
+ /**
+ * Removes query from the list.
+ * @param contactQuery the query
+ */
+ public synchronized void removeQuery(ContactQuery contactQuery)
+ {
+ if (queries.remove(contactQuery))
+ queries.notify();
+ }
/**
* The <tt>ProtocolCQuery</tt> performing the query for this contact source.
@@ -200,6 +192,26 @@ public class ProtocolContactSourceServiceImpl
setStatus(QUERY_COMPLETED);
}
+ @Override
+ public synchronized void start()
+ {
+ boolean queryHasStarted = false;
+
+ try
+ {
+ super.start();
+ queryHasStarted = true;
+ }
+ finally
+ {
+ if (!queryHasStarted)
+ {
+ getContactSource().removeQuery(this);
+ }
+ }
+
+ }
+
/**
* Adds the result for the given group.
*
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/StringContactSourceServiceImpl.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/StringContactSourceServiceImpl.java
index bbeaebd..343e60a 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/StringContactSourceServiceImpl.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/StringContactSourceServiceImpl.java
@@ -69,24 +69,24 @@ public class StringContactSourceServiceImpl
}
/**
- * Queries this search source for the given <tt>queryString</tt>.
+ * Creates query for the given <tt>queryString</tt>.
*
* @param queryString the string to search for
* @return the created query
*/
- public ContactQuery queryContactSource(String queryString)
+ public ContactQuery createContactQuery(String queryString)
{
- return queryContactSource(queryString, -1);
+ return createContactQuery(queryString, -1);
}
/**
- * Queries this search source for the given <tt>queryString</tt>.
+ * Creates query for the given <tt>queryString</tt>.
*
* @param queryString the string to search for
* @param contactCount the maximum count of result contacts
* @return the created query
*/
- public ContactQuery queryContactSource( String queryString,
+ public ContactQuery createContactQuery( String queryString,
int contactCount)
{
return new StringQuery(queryString);
@@ -120,10 +120,6 @@ public class StringContactSourceServiceImpl
this.queryString = queryString;
this.results = new ArrayList<SourceContact>();
- results.add(getSourceContact());
-
- if (getStatus() != QUERY_CANCELED)
- setStatus(QUERY_COMPLETED);
}
/**
@@ -146,6 +142,16 @@ public class StringContactSourceServiceImpl
return results;
}
+ @Override
+ public void start()
+ {
+ SourceContact contact = getSourceContact();
+ results.add(contact);
+
+ fireContactReceived(contact);
+ if (getStatus() != QUERY_CANCELED)
+ setStatus(QUERY_COMPLETED);
+ }
/**
* Returns the source contact corresponding to the query string.
*
diff --git a/src/net/java/sip/communicator/impl/gui/utils/InviteContactListFilter.java b/src/net/java/sip/communicator/impl/gui/utils/InviteContactListFilter.java
index 17cc5e3..5aa0edf 100644
--- a/src/net/java/sip/communicator/impl/gui/utils/InviteContactListFilter.java
+++ b/src/net/java/sip/communicator/impl/gui/utils/InviteContactListFilter.java
@@ -69,10 +69,7 @@ public class InviteContactListFilter
if (filterQuery.isCanceled())
return;
- ContactQuery query = applyFilter(filterSource);
-
- if (query.getStatus() == ContactQuery.QUERY_IN_PROGRESS)
- filterQuery.addContactQuery(query);
+ applyFilter(filterSource, filterQuery);
}
// Closes this filter to indicate that we finished adding queries to it.
diff --git a/src/net/java/sip/communicator/impl/ldap/LdapContactQuery.java b/src/net/java/sip/communicator/impl/ldap/LdapContactQuery.java
index eff5efa..714e9b6 100644
--- a/src/net/java/sip/communicator/impl/ldap/LdapContactQuery.java
+++ b/src/net/java/sip/communicator/impl/ldap/LdapContactQuery.java
@@ -123,6 +123,24 @@ public class LdapContactQuery
}
}
+ @Override
+ public synchronized void start()
+ {
+ boolean hasStarted = false;
+
+ try
+ {
+ super.start();
+ hasStarted = true;
+ }
+ finally
+ {
+ if (!hasStarted)
+ {
+ getContactSource().removeQuery(this);
+ }
+ }
+ }
/**
* Gets the <tt>contactDetails</tt> to be set on a <tt>SourceContact</tt>.
*
diff --git a/src/net/java/sip/communicator/impl/ldap/LdapContactSourceService.java b/src/net/java/sip/communicator/impl/ldap/LdapContactSourceService.java
index 48ec8e0..40b005b 100644
--- a/src/net/java/sip/communicator/impl/ldap/LdapContactSourceService.java
+++ b/src/net/java/sip/communicator/impl/ldap/LdapContactSourceService.java
@@ -49,57 +49,48 @@ public class LdapContactSourceService
}
/**
- * Queries this search source for the given <tt>searchPattern</tt>.
+ * Creates query for the given <tt>searchPattern</tt>.
*
* @param queryPattern the pattern to search for
* @return the created query
*/
- public ContactQuery queryContactSource(Pattern queryPattern)
+ public ContactQuery createContactQuery(Pattern queryPattern)
{
- return queryContactSource(queryPattern,
+ return createContactQuery(queryPattern,
LdapContactQuery.LDAP_MAX_RESULTS);
}
/**
- * Queries this search source for the given <tt>searchPattern</tt>.
+ * Creates query for the given <tt>searchPattern</tt>.
*
* @param queryPattern the pattern to search for
* @param count maximum number of contact returned
* @return the created query
*/
- public ContactQuery queryContactSource(Pattern queryPattern, int count)
+ public ContactQuery createContactQuery(Pattern queryPattern, int count)
{
LdapContactQuery query = new LdapContactQuery(this, queryPattern,
count);
-
+
synchronized (queries)
{
queries.add(query);
}
- boolean hasStarted = false;
-
- try
- {
- query.start();
- hasStarted = true;
- }
- finally
- {
- if (!hasStarted)
- {
- synchronized (queries)
- {
- if (queries.remove(query))
- queries.notify();
- }
- }
- }
-
return query;
}
/**
+ * Removes a query from the list.
+ * @param query the query
+ */
+ public synchronized void removeQuery(ContactQuery query)
+ {
+ if (queries.remove(query))
+ queries.notify();
+ }
+
+ /**
* Returns a user-friendly string that identifies this contact source.
* @return the display name of this contact source
*/
@@ -120,23 +111,25 @@ public class LdapContactSourceService
}
/**
- * Queries this search source for the given <tt>queryString</tt>.
+ * Creates query for the given <tt>query</tt>.
* @param query the string to search for
+ * @param listener the listener that receives the found contacts.
* @return the created query
*/
- public ContactQuery queryContactSource(String query)
+ public ContactQuery createContactQuery(String query)
{
- return queryContactSource(query, LdapContactQuery.LDAP_MAX_RESULTS);
+ return createContactQuery(query, LdapContactQuery.LDAP_MAX_RESULTS);
}
/**
- * Queries this search source for the given <tt>queryString</tt>.
+ * Creates query for the given <tt>query</tt>.
*
* @param query the string to search for
* @param contactCount the maximum count of result contacts
+ * @param listener the listener that receives the found contacts.
* @return the created query
*/
- public ContactQuery queryContactSource(String query, int contactCount)
+ public ContactQuery createContactQuery(String query, int contactCount)
{
Pattern pattern = null;
try
@@ -150,7 +143,7 @@ public class LdapContactSourceService
if(pattern != null)
{
- return queryContactSource(pattern, contactCount);
+ return createContactQuery(pattern, contactCount);
}
return null;
}
diff --git a/src/net/java/sip/communicator/impl/muc/ChatRoomContactSourceService.java b/src/net/java/sip/communicator/impl/muc/ChatRoomContactSourceService.java
index 3f71801..3856ffd 100644
--- a/src/net/java/sip/communicator/impl/muc/ChatRoomContactSourceService.java
+++ b/src/net/java/sip/communicator/impl/muc/ChatRoomContactSourceService.java
@@ -37,35 +37,32 @@ public class ChatRoomContactSourceService
}
/**
- * Queries this contact source for the given <tt>queryString</tt>.
+ * Creates query for the given <tt>queryString</tt>.
*
* @param queryString the string to search for
* @return the created query
*/
@Override
- public ContactQuery queryContactSource(String queryString)
+ public ContactQuery createContactQuery(String queryString)
{
- return queryContactSource(queryString, -1);
+ return createContactQuery(queryString, -1);
}
/**
- * Queries this contact source for the given <tt>queryString</tt>.
+ * Creates query for the given <tt>queryString</tt>.
*
* @param queryString the string to search for
* @param contactCount the maximum count of result contacts
* @return the created query
*/
@Override
- public ContactQuery queryContactSource(String queryString, int contactCount)
+ public ContactQuery createContactQuery(String queryString, int contactCount)
{
if (queryString == null)
queryString = "";
ChatRoomQuery contactQuery
= new ChatRoomQuery(queryString, this);
-
- contactQuery.start();
-
return contactQuery;
}
diff --git a/src/net/java/sip/communicator/impl/muc/ServerChatRoomContactSourceService.java b/src/net/java/sip/communicator/impl/muc/ServerChatRoomContactSourceService.java
index d2f19e6..929b5ce 100644
--- a/src/net/java/sip/communicator/impl/muc/ServerChatRoomContactSourceService.java
+++ b/src/net/java/sip/communicator/impl/muc/ServerChatRoomContactSourceService.java
@@ -44,36 +44,32 @@ public class ServerChatRoomContactSourceService
}
/**
- * Queries this contact source for the given <tt>queryString</tt>.
+ * Creates query for the given <tt>queryString</tt>.
*
* @param queryString the string to search for
* @return the created query
*/
@Override
- public ContactQuery queryContactSource(String queryString)
+ public ContactQuery createContactQuery(String queryString)
{
- return queryContactSource(queryString, -1);
+ return createContactQuery(queryString, -1);
}
/**
- * Queries this contact source for the given <tt>queryString</tt>.
+ * Creates query for the given <tt>queryString</tt>.
*
* @param queryString the string to search for
* @param contactCount the maximum count of result contacts
* @return the created query
*/
@Override
- public ContactQuery queryContactSource(String queryString, int contactCount)
+ public ContactQuery createContactQuery(String queryString, int contactCount)
{
if (queryString == null)
queryString = "";
ServerChatRoomQuery contactQuery
= new ServerChatRoomQuery(queryString, this, provider);
-
- contactQuery.start();
-
-
return contactQuery;
}
diff --git a/src/net/java/sip/communicator/impl/muc/ServerChatRoomQuery.java b/src/net/java/sip/communicator/impl/muc/ServerChatRoomQuery.java
index fd8fc23..78edd8a 100644
--- a/src/net/java/sip/communicator/impl/muc/ServerChatRoomQuery.java
+++ b/src/net/java/sip/communicator/impl/muc/ServerChatRoomQuery.java
@@ -11,7 +11,6 @@ import java.util.regex.*;
import net.java.sip.communicator.service.contactsource.*;
import net.java.sip.communicator.service.muc.*;
import net.java.sip.communicator.service.protocol.*;
-import net.java.sip.communicator.util.Logger;
/**
* The <tt>ServerChatRoomQuery</tt> is a query over the
diff --git a/src/net/java/sip/communicator/plugin/addrbook/macosx/MacOSXAddrBookContactSourceService.java b/src/net/java/sip/communicator/plugin/addrbook/macosx/MacOSXAddrBookContactSourceService.java
index 5ed8563..2a90e7b 100644
--- a/src/net/java/sip/communicator/plugin/addrbook/macosx/MacOSXAddrBookContactSourceService.java
+++ b/src/net/java/sip/communicator/plugin/addrbook/macosx/MacOSXAddrBookContactSourceService.java
@@ -91,7 +91,7 @@ public class MacOSXAddrBookContactSourceService
}
/**
- * Queries this <tt>ContactSourceService</tt> for <tt>SourceContact</tt>s
+ * Creates query that searches for <tt>SourceContact</tt>s
* which match a specific <tt>query</tt> <tt>Pattern</tt>.
*
* @param query the <tt>Pattern</tt> which this
@@ -102,14 +102,13 @@ public class MacOSXAddrBookContactSourceService
* any) will be returned
* @see ExtendedContactSourceService#queryContactSource(Pattern)
*/
- public ContactQuery queryContactSource(Pattern query)
+ public ContactQuery createContactQuery(Pattern query)
{
if(latestQuery != null)
latestQuery.clear();
latestQuery = new MacOSXAddrBookContactQuery(this, query);
- latestQuery.start();
return latestQuery;
}
diff --git a/src/net/java/sip/communicator/plugin/addrbook/msoutlook/MsOutlookAddrBookContactSourceService.java b/src/net/java/sip/communicator/plugin/addrbook/msoutlook/MsOutlookAddrBookContactSourceService.java
index 3335e07..bcac003 100644
--- a/src/net/java/sip/communicator/plugin/addrbook/msoutlook/MsOutlookAddrBookContactSourceService.java
+++ b/src/net/java/sip/communicator/plugin/addrbook/msoutlook/MsOutlookAddrBookContactSourceService.java
@@ -161,7 +161,7 @@ public class MsOutlookAddrBookContactSourceService
public static native int getOutlookVersion();
/**
- * Queries this <tt>ContactSourceService</tt> for <tt>SourceContact</tt>s
+ * Creates query that searches for <tt>SourceContact</tt>s
* which match a specific <tt>query</tt> <tt>Pattern</tt>.
*
* @param query the <tt>Pattern</tt> which this
@@ -172,14 +172,13 @@ public class MsOutlookAddrBookContactSourceService
* any) will be returned
* @see ExtendedContactSourceService#queryContactSource(Pattern)
*/
- public ContactQuery queryContactSource(Pattern query)
+ public ContactQuery createContactQuery(Pattern query)
{
if(latestQuery != null)
latestQuery.clear();
latestQuery = new MsOutlookAddrBookContactQuery(this, query);
-
- latestQuery.start();
+
return latestQuery;
}
diff --git a/src/net/java/sip/communicator/plugin/demuxcontactsource/DemuxContactSource.java b/src/net/java/sip/communicator/plugin/demuxcontactsource/DemuxContactSource.java
index d50a05b..96bbbc0 100644
--- a/src/net/java/sip/communicator/plugin/demuxcontactsource/DemuxContactSource.java
+++ b/src/net/java/sip/communicator/plugin/demuxcontactsource/DemuxContactSource.java
@@ -94,12 +94,12 @@ public class DemuxContactSource
}
/**
- * Queries this search source for the given <tt>queryString</tt>.
+ * Creates query for the given <tt>queryString</tt>.
*
* @param queryString the string to search for
* @return the created query
*/
- public ContactQuery queryContactSource(String queryString)
+ public ContactQuery createContactQuery(String queryString)
{
if (logger.isDebugEnabled())
logger.debug("Demux query contact source: " + contactSource
@@ -112,7 +112,7 @@ public class DemuxContactSource
{
return new DemuxContactQuery(
((ExtendedContactSourceService) contactSource)
- .queryContactSource(Pattern.compile(
+ .createContactQuery(Pattern.compile(
Pattern.quote(queryString),
Pattern.MULTILINE
| Pattern.CASE_INSENSITIVE
@@ -120,20 +120,20 @@ public class DemuxContactSource
}
else
return new DemuxContactQuery(
- contactSource.queryContactSource(queryString));
+ contactSource.createContactQuery(queryString));
}
/**
- * Queries this search source for the given <tt>queryString</tt>.
+ * Creates query for the given <tt>queryString</tt>.
*
* @param queryString the string to search for
* @param contactCount the maximum count of result contacts
* @return the created query
*/
- public ContactQuery queryContactSource(String queryString, int contactCount)
+ public ContactQuery createContactQuery(String queryString, int contactCount)
{
return new DemuxContactQuery(
- contactSource.queryContactSource(queryString, contactCount));
+ contactSource.createContactQuery(queryString, contactCount));
}
/**
@@ -175,8 +175,6 @@ public class DemuxContactSource
this.sourceQuery = sourceQuery;
- initQueryResults();
-
sourceQuery.addContactQueryListener(this);
}
@@ -205,42 +203,6 @@ public class DemuxContactSource
}
/**
- * Initializes the query results.
- */
- public void initQueryResults()
- {
- List<SourceContact> sourceContacts = sourceQuery.getQueryResults();
-
- if (sourceContacts == null)
- return;
-
- Iterator<SourceContact> contactIter = sourceContacts.iterator();
- while (contactIter.hasNext())
- {
- SourceContact sourceContact = contactIter.next();
-
- Iterator<ContactDetail> detailsIter
- = sourceContact.getContactDetails().iterator();
-
- while (detailsIter.hasNext())
- {
- ContactDetail detail = detailsIter.next();
-
- if (preferredProtocolProviders == null
- || isPreferredContactDetail(detail))
- {
- SortedGenericSourceContact
- demuxContact
- = (SortedGenericSourceContact)
- createSourceContact(sourceContact,
- detail);
- addContact(demuxContact);
- }
- }
- }
- }
-
- /**
* Returns the list of <tt>SourceContact</tt>s returned by this query.
*
* @return the list of <tt>SourceContact</tt>s returned by this query
@@ -258,6 +220,12 @@ public class DemuxContactSource
{
sourceQuery.cancel();
}
+
+ @Override
+ public void start()
+ {
+ sourceQuery.start();
+ }
/**
* Returns the status of this query. One of the static constants
diff --git a/src/net/java/sip/communicator/plugin/phonenumbercontactsource/PhoneNumberContactSource.java b/src/net/java/sip/communicator/plugin/phonenumbercontactsource/PhoneNumberContactSource.java
index 3df2206..e5f4d74 100644
--- a/src/net/java/sip/communicator/plugin/phonenumbercontactsource/PhoneNumberContactSource.java
+++ b/src/net/java/sip/communicator/plugin/phonenumbercontactsource/PhoneNumberContactSource.java
@@ -41,24 +41,26 @@ public class PhoneNumberContactSource
}
/**
- * Queries this contact source for the given <tt>queryString</tt>.
+ * Creates query for the given <tt>queryString</tt>.
*
* @param queryString the string to search for
+ * @param listener the listener that receives the found contacts.
* @return the created query
*/
- public ContactQuery queryContactSource(String queryString)
+ public ContactQuery createContactQuery(String queryString)
{
- return queryContactSource(queryString, -1);
+ return createContactQuery(queryString, -1);
}
/**
- * Queries this contact source for the given <tt>queryString</tt>.
+ * Creates query for the given <tt>queryString</tt>.
*
* @param queryString the string to search for
* @param contactCount the maximum count of result contacts
+ * @param listener the listener that receives the found contacts.
* @return the created query
*/
- public ContactQuery queryContactSource( String queryString,
+ public ContactQuery createContactQuery( String queryString,
int contactCount)
{
if (queryString == null)
@@ -67,7 +69,6 @@ public class PhoneNumberContactSource
PhoneNumberContactQuery contactQuery
= new PhoneNumberContactQuery(this, queryString, contactCount);
- contactQuery.start();
return contactQuery;
}
diff --git a/src/net/java/sip/communicator/plugin/thunderbird/ThunderbirdContactSourceService.java b/src/net/java/sip/communicator/plugin/thunderbird/ThunderbirdContactSourceService.java
index 27e4fe0..4d78fcc 100644
--- a/src/net/java/sip/communicator/plugin/thunderbird/ThunderbirdContactSourceService.java
+++ b/src/net/java/sip/communicator/plugin/thunderbird/ThunderbirdContactSourceService.java
@@ -141,7 +141,7 @@ public class ThunderbirdContactSourceService
* @see net.java.sip.communicator.service.contactsource
* .ContactSourceService#queryContactSource(java.lang.String)
*/
- public ContactQuery queryContactSource(String queryString)
+ public ContactQuery createContactQuery(String queryString)
{
Pattern pattern = null;
try
@@ -157,7 +157,7 @@ public class ThunderbirdContactSourceService
if(pattern != null)
{
- return queryContactSource(pattern);
+ return createContactQuery(pattern);
}
return null;
}
@@ -169,11 +169,11 @@ public class ThunderbirdContactSourceService
* net.java.sip.communicator.service.contactsource.ContactSourceService#
* queryContactSource(java.lang.String, int)
*/
- public ContactQuery queryContactSource(String queryString, int contactCount)
+ public ContactQuery createContactQuery(String queryString, int contactCount)
{
// XXX: The ThunderbirdContactQuery does not tqke a contactCount
// argument yet. Thus, call the default queryContactSource function.
- return queryContactSource(queryString);
+ return createContactQuery(queryString);
}
/*
@@ -183,9 +183,12 @@ public class ThunderbirdContactSourceService
* net.java.sip.communicator.service.contactsource.ExtendedContactSourceService
* #queryContactSource(java.util.regex.Pattern)
*/
- public ContactQuery queryContactSource(Pattern queryPattern)
+ public ContactQuery createContactQuery(Pattern queryPattern)
{
- return new ThunderbirdContactQuery(this, queryPattern);
+ ThunderbirdContactQuery query
+ = new ThunderbirdContactQuery(this, queryPattern);
+
+ return query;
}
/*
diff --git a/src/net/java/sip/communicator/service/contactsource/AsyncContactSourceService.java b/src/net/java/sip/communicator/service/contactsource/AsyncContactSourceService.java
index 55e5b3f..d734efb 100644
--- a/src/net/java/sip/communicator/service/contactsource/AsyncContactSourceService.java
+++ b/src/net/java/sip/communicator/service/contactsource/AsyncContactSourceService.java
@@ -18,25 +18,26 @@ public abstract class AsyncContactSourceService
implements ExtendedContactSourceService
{
/**
- * Queries this <tt>ContactSourceService</tt> for <tt>SourceContact</tt>s
+ * Creates query that searches for <tt>SourceContact</tt>s
* which match a specific <tt>query</tt> <tt>String</tt>.
*
* @param query the <tt>String</tt> which this <tt>ContactSourceService</tt>
* is being queried for
+ * @param listener the listener that receives the found contacts.
* @return a <tt>ContactQuery</tt> which represents the query of this
* <tt>ContactSourceService</tt> implementation for the specified
* <tt>String</tt> and via which the matching <tt>SourceContact</tt>s (if
* any) will be returned
* @see ContactSourceService#queryContactSource(String)
*/
- public ContactQuery queryContactSource(String query)
+ public ContactQuery createContactQuery(String query)
{
- return queryContactSource(
+ return createContactQuery(
Pattern.compile(query, Pattern.CASE_INSENSITIVE | Pattern.LITERAL));
}
/**
- * Queries this <tt>ContactSourceService</tt> for <tt>SourceContact</tt>s
+ * Creates query that searches for <tt>SourceContact</tt>s
* which match a specific <tt>query</tt> <tt>String</tt>.
*
* @param query the <tt>String</tt> which this <tt>ContactSourceService</tt>
@@ -48,9 +49,9 @@ public abstract class AsyncContactSourceService
* any) will be returned
* @see ContactSourceService#queryContactSource(String)
*/
- public ContactQuery queryContactSource(String query, int contactCount)
+ public ContactQuery createContactQuery(String query, int contactCount)
{
- return queryContactSource(
+ return createContactQuery(
Pattern.compile(query, Pattern.CASE_INSENSITIVE | Pattern.LITERAL));
}
diff --git a/src/net/java/sip/communicator/service/contactsource/ContactQuery.java b/src/net/java/sip/communicator/service/contactsource/ContactQuery.java
index 8b245c4..0a630a0 100644
--- a/src/net/java/sip/communicator/service/contactsource/ContactQuery.java
+++ b/src/net/java/sip/communicator/service/contactsource/ContactQuery.java
@@ -57,6 +57,11 @@ public interface ContactQuery
* @return the list of <tt>SourceContact</tt>s returned by this query
*/
public List<SourceContact> getQueryResults();
+
+ /**
+ * Starts the query.
+ */
+ public void start();
/**
* Cancels this query.
diff --git a/src/net/java/sip/communicator/service/contactsource/ContactSourceService.java b/src/net/java/sip/communicator/service/contactsource/ContactSourceService.java
index 886462d..ceca03a 100644
--- a/src/net/java/sip/communicator/service/contactsource/ContactSourceService.java
+++ b/src/net/java/sip/communicator/service/contactsource/ContactSourceService.java
@@ -48,24 +48,25 @@ public interface ContactSourceService
* @return the display name of this contact source
*/
public String getDisplayName();
-
+
/**
- * Queries this search source for the given <tt>queryString</tt>.
- *
+ * Creates and returns new <tt>ContactQuery</tt> instance.
+ *
* @param queryString the string to search for
- * @return the created query
+ *
+ * @return new <tt>ContactQuery</tt> instance.
*/
- public ContactQuery queryContactSource(String queryString);
-
+ public ContactQuery createContactQuery(String queryString);
+
/**
- * Queries this search source for the given <tt>queryString</tt>.
- *
+ * Creates and returns new <tt>ContactQuery</tt> instance.
+ *
* @param queryString the string to search for
* @param contactCount the maximum count of result contacts
- * @return the created query
+ * @return new <tt>ContactQuery</tt> instance.
*/
- public ContactQuery queryContactSource(String queryString,
- int contactCount);
+ public ContactQuery createContactQuery(String queryString,
+ int contactCount);
/**
* Returns the index of the contact source in the result list.
diff --git a/src/net/java/sip/communicator/service/contactsource/ExtendedContactSourceService.java b/src/net/java/sip/communicator/service/contactsource/ExtendedContactSourceService.java
index 4a06b2c..d897765 100644
--- a/src/net/java/sip/communicator/service/contactsource/ExtendedContactSourceService.java
+++ b/src/net/java/sip/communicator/service/contactsource/ExtendedContactSourceService.java
@@ -29,11 +29,11 @@ public interface ExtendedContactSourceService
extends ContactSourceService
{
/**
- * Queries this search source for the given <tt>searchPattern</tt>.
+ * Creates query for the given <tt>searchPattern</tt>.
* @param queryPattern the pattern to search for
* @return the created query
*/
- public ContactQuery queryContactSource(Pattern queryPattern);
+ public ContactQuery createContactQuery(Pattern queryPattern);
/**
* Returns the global phone number prefix to be used when calling contacts