Skip to content

Commit

Permalink
Make sure we remove the proper Broadcaster, make the Broadcaster unique
Browse files Browse the repository at this point in the history
  • Loading branch information
jfarcand committed Nov 2, 2011
1 parent 61a67a6 commit a5b431f
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1045,6 +1045,51 @@ public String toString() {
.toString();
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

DefaultBroadcaster that = (DefaultBroadcaster) o;

if (broadcastOnResume != null ? !broadcastOnResume.equals(that.broadcastOnResume) : that.broadcastOnResume != null)
return false;
if (broadcasterCache != null ? !broadcasterCache.equals(that.broadcasterCache) : that.broadcasterCache != null)
return false;
if (delayedBroadcast != null ? !delayedBroadcast.equals(that.delayedBroadcast) : that.delayedBroadcast != null)
return false;
if (destroyed != null ? !destroyed.equals(that.destroyed) : that.destroyed != null) return false;
if (lifeCyclePolicy != null ? !lifeCyclePolicy.equals(that.lifeCyclePolicy) : that.lifeCyclePolicy != null)
return false;
if (name != null ? !name.equals(that.name) : that.name != null) return false;
if (policy != that.policy) return false;
if (requestScoped != null ? !requestScoped.equals(that.requestScoped) : that.requestScoped != null)
return false;
if (resources != null ? !resources.equals(that.resources) : that.resources != null) return false;
if (scope != that.scope) return false;
if (started != null ? !started.equals(that.started) : that.started != null) return false;
if (uri != null ? !uri.equals(that.uri) : that.uri != null) return false;

return true;
}

@Override
public int hashCode() {
int result = resources != null ? resources.hashCode() : 0;
result = 31 * result + (started != null ? started.hashCode() : 0);
result = 31 * result + (destroyed != null ? destroyed.hashCode() : 0);
result = 31 * result + (scope != null ? scope.hashCode() : 0);
result = 31 * result + (name != null ? name.hashCode() : 0);
result = 31 * result + (delayedBroadcast != null ? delayedBroadcast.hashCode() : 0);
result = 31 * result + (broadcastOnResume != null ? broadcastOnResume.hashCode() : 0);
result = 31 * result + (broadcasterCache != null ? broadcasterCache.hashCode() : 0);
result = 31 * result + (policy != null ? policy.hashCode() : 0);
result = 31 * result + (requestScoped != null ? requestScoped.hashCode() : 0);
result = 31 * result + (lifeCyclePolicy != null ? lifeCyclePolicy.hashCode() : 0);
result = 31 * result + (uri != null ? uri.hashCode() : 0);
return result;
}

private final static class AsyncWriteToken {

final AtmosphereResource<?, ?> resource;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -176,8 +176,11 @@ public boolean add(Broadcaster b, Object id) {
* {@inheritDoc}
*/
public boolean remove(Broadcaster b, Object id) {
logger.debug("Removing Broadcaster {} which internal reference is {} ", id, b.getID());
return store.remove(id) != null ? true : (store.remove(b.getID()) != null);
boolean removed = (store.get(b.getID()) == b);
if (removed) {
store.remove(id, b);
logger.debug("Removing Broadcaster {} which internal reference is {} ", id, b.getID());
}
}

/**
Expand Down

0 comments on commit a5b431f

Please sign in to comment.