Reverts some of the removed synchronizes.

cefexperiments
Damian Minkov 11 years ago
parent d2351b42d9
commit b1ac93c6e3

@ -238,8 +238,6 @@ public void updateRecentMessages()
if(recentQuery == null)
return;
List<MessageSourceContact> newSourceContacts
= new ArrayList<MessageSourceContact>();
synchronized(recentMessages)
{
List<SourceContact> currentContactsInQuery
@ -256,13 +254,11 @@ public void updateRecentMessages()
evtObj.getEventObject(),
MessageSourceService.this);
newSourceContact.initDetails(evtObj.getEventObject());
newSourceContacts.add(newSourceContact);
recentQuery.addQueryResult(newSourceContact);
}
}
}
for(MessageSourceContact nsc : newSourceContacts)
recentQuery.addQueryResult(nsc);
}
/**
@ -794,8 +790,6 @@ public void contactPresenceStatusChanged(
if(recentQuery == null)
return;
List<ComparableEvtObj> toUpdate
= new ArrayList<ComparableEvtObj>();
synchronized(recentMessages)
{
for(ComparableEvtObj msg : recentMessages)
@ -803,13 +797,10 @@ public void contactPresenceStatusChanged(
if(msg.getContact() != null
&& msg.getContact().equals(evt.getSourceContact()))
{
toUpdate.add(msg);
recentQuery.updateContactStatus(msg, evt.getNewStatus());
}
}
}
for(ComparableEvtObj msg : toUpdate)
recentQuery.updateContactStatus(msg, evt.getNewStatus());
}
@Override
@ -884,13 +875,10 @@ private void handle(EventObject obj,
ProtocolProviderService provider,
String id)
{
ComparableEvtObj existingMsc = null;
MessageSourceContact newSourceContact = null;
List<ComparableEvtObj> removedItems = null;
ComparableEvtObj newMsg = null;
// check if provider - contact exist update message content
synchronized(recentMessages)
{
ComparableEvtObj existingMsc = null;
for(ComparableEvtObj msc : recentMessages)
{
if(msc.getProtocolProviderService().equals(provider)
@ -909,64 +897,59 @@ private void handle(EventObject obj,
Collections.sort(recentMessages);
oldestRecentMessage = recentMessages
.get(recentMessages.size() - 1).getTimestamp();
}
else
{
// if missing create source contact
// and update recent messages, trim and sort
newSourceContact =
new MessageSourceContact(obj, MessageSourceService.this);
newSourceContact.initDetails(obj);
// we have already checked for duplicate
newMsg = new ComparableEvtObj(obj);
recentMessages.add(newMsg);
Collections.sort(recentMessages);
oldestRecentMessage
= recentMessages.get(recentMessages.size() - 1).getTimestamp();
// trim
if(recentMessages.size() > numberOfMessages)
if(recentQuery != null)
{
removedItems = new ArrayList<ComparableEvtObj>(
recentMessages.subList(
numberOfMessages, recentMessages.size()));
recentMessages.removeAll(removedItems);
recentQuery.updateContact(
existingMsc, existingMsc.getEventObject());
recentQuery.fireContactChanged(existingMsc);
}
return;
}
}
if(existingMsc != null)
{
if(recentQuery != null)
// if missing create source contact
// and update recent messages, trim and sort
MessageSourceContact newSourceContact =
new MessageSourceContact(obj, MessageSourceService.this);
newSourceContact.initDetails(obj);
// we have already checked for duplicate
ComparableEvtObj newMsg = new ComparableEvtObj(obj);
recentMessages.add(newMsg);
Collections.sort(recentMessages);
oldestRecentMessage
= recentMessages.get(recentMessages.size() - 1).getTimestamp();
// trim
List<ComparableEvtObj> removedItems = null;
if(recentMessages.size() > numberOfMessages)
{
recentQuery.updateContact(
existingMsc, existingMsc.getEventObject());
recentQuery.fireContactChanged(existingMsc);
}
removedItems = new ArrayList<ComparableEvtObj>(
recentMessages.subList(
numberOfMessages, recentMessages.size()));
return;
}
recentMessages.removeAll(removedItems);
}
// save
if(newMsg != null)
// save
saveRecentMessageToHistory(newMsg);
// no query nothing to fire
if(recentQuery == null)
return;
// no query nothing to fire
if(recentQuery == null)
return;
// now fire
if(removedItems != null)
{
for(ComparableEvtObj msc : removedItems)
// now fire
if(removedItems != null)
{
recentQuery.fireContactRemoved(msc);
for(ComparableEvtObj msc : removedItems)
{
recentQuery.fireContactRemoved(msc);
}
}
}
recentQuery.addQueryResult(newSourceContact);
recentQuery.addQueryResult(newSourceContact);
}
}
/**

Loading…
Cancel
Save