Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
(" Meteor shouldn't be cached using the HttpServletRequest ")

See issue description
  • Loading branch information
jfarcand committed Oct 6, 2010
1 parent cb3722a commit 4e61f66
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 13 deletions.
Expand Up @@ -199,7 +199,7 @@ public void suspend(long timeout, boolean flushComment) {
String id = broadcaster.getID();
Class<? extends Broadcaster> clazz = broadcaster.getClass();
broadcaster = BroadcasterFactory.getDefault().lookup(clazz, id, false);
if (broadcaster == null) {
if (broadcaster == null || broadcaster.getAtmosphereResources().size() > 0) {
broadcaster = BroadcasterFactory.getDefault().lookup(clazz, id + "/" + UUID.randomUUID(), true);
}
}
Expand Down
16 changes: 6 additions & 10 deletions modules/cpr/src/main/java/org/atmosphere/cpr/Meteor.java
Expand Up @@ -63,8 +63,8 @@
*/
public class Meteor {

private final static ConcurrentHashMap<HttpServletRequest, Meteor> cache =
new ConcurrentHashMap<HttpServletRequest, Meteor>();
private final static ConcurrentHashMap<AtmosphereResource, Meteor> cache =
new ConcurrentHashMap<AtmosphereResource, Meteor>();

private final AtmosphereResource<HttpServletRequest, HttpServletResponse> r;

Expand All @@ -74,13 +74,13 @@ private Meteor(AtmosphereResource<HttpServletRequest, HttpServletResponse> r,
List<BroadcastFilter> l, Serializer s) {

this.r = r;
r.setSerializer(s);
this.r.setSerializer(s);
if (l != null) {
for (BroadcastFilter f : l) {
r.getBroadcaster().getBroadcasterConfig().addFilter(f);
this.r.getBroadcaster().getBroadcasterConfig().addFilter(f);
}
}
cache.put(r.getRequest(), this);
cache.put(this.r, this);
}

/**
Expand All @@ -101,10 +101,6 @@ public static Meteor lookup(HttpServletRequest r) {
* @return a {@link Meteor} than can be used to resume, suspend and broadcast {@link Object}
*/
public final static Meteor build(HttpServletRequest r) {

Meteor m = lookup(r);
if (m != null) return m;

return build(r, null);
}

Expand Down Expand Up @@ -201,7 +197,7 @@ public Meteor suspend(long l, boolean outputComments) {
*/
public Meteor resume() {
r.resume();
cache.remove(r.getRequest());
cache.remove(r);
return this;
}

Expand Down
Expand Up @@ -91,6 +91,7 @@ public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOExce

@Override
public void onSuspend(final AtmosphereResourceEvent<HttpServletRequest, HttpServletResponse> event){
event.getResource().getRequest().setAttribute(AtmosphereServlet.RESUME_ON_BROADCAST, "true");
}

@Override
Expand All @@ -102,8 +103,7 @@ public void onDisconnect(AtmosphereResourceEvent<HttpServletRequest, HttpServlet
}

@Override
public void onBroadcast(AtmosphereResourceEvent<HttpServletRequest, HttpServletResponse> event) {
event.getResource().getRequest().setAttribute(AtmosphereServlet.RESUME_ON_BROADCAST, "true");
public void onBroadcast(AtmosphereResourceEvent<HttpServletRequest, HttpServletResponse> event) {
}
});

Expand Down

0 comments on commit 4e61f66

Please sign in to comment.