From a63c953ea02e6c0359f1d4e8b467f71db3128928 Mon Sep 17 00:00:00 2001 From: jfarcand Date: Fri, 25 May 2012 13:41:00 -0400 Subject: [PATCH] Fix regression (cr == null) --- .../jersey/util/JerseyBroadcasterUtil.java | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/modules/jersey/src/main/java/org/atmosphere/jersey/util/JerseyBroadcasterUtil.java b/modules/jersey/src/main/java/org/atmosphere/jersey/util/JerseyBroadcasterUtil.java index 9263aeda8c8..790a0d87eda 100644 --- a/modules/jersey/src/main/java/org/atmosphere/jersey/util/JerseyBroadcasterUtil.java +++ b/modules/jersey/src/main/java/org/atmosphere/jersey/util/JerseyBroadcasterUtil.java @@ -50,26 +50,26 @@ public final static void broadcast(final AtmosphereResource r, final AtmosphereR // Make sure only one thread can play with the ContainerResponse. Threading issue can arise if there is a scheduler // or if ContainerResponse is associated with more than Broadcaster. - synchronized (cr) { - try { - cr = (ContainerResponse) request.getAttribute(FrameworkConfig.CONTAINER_RESPONSE); - boolean isCancelled = r.getAtmosphereResourceEvent().isCancelled(); - - if (cr == null || isCancelled) { - logger.debug("Retrieving HttpServletRequest {} with ContainerResponse {}", request, cr); - if (!isCancelled) { - logger.debug("Unexpected state. ContainerResponse cannot be null or already committed. The connection hasn't been suspended yet"); - } else { - logger.debug("ContainerResponse already resumed or cancelled. Ignoring"); - } + cr = (ContainerResponse) request.getAttribute(FrameworkConfig.CONTAINER_RESPONSE); + boolean isCancelled = r.getAtmosphereResourceEvent().isCancelled(); + + if (cr == null || isCancelled) { + logger.debug("Retrieving HttpServletRequest {} with ContainerResponse {}", request, cr); + if (!isCancelled) { + logger.debug("Unexpected state. ContainerResponse cannot be null or already committed. The connection hasn't been suspended yet"); + } else { + logger.debug("ContainerResponse already resumed or cancelled. Ignoring"); + } - if (DefaultBroadcaster.class.isAssignableFrom(broadcaster.getClass())) { - DefaultBroadcaster.class.cast(broadcaster).cacheLostMessage(r); - } - AsynchronousProcessor.destroyResource(r); - return; - } + if (DefaultBroadcaster.class.isAssignableFrom(broadcaster.getClass())) { + DefaultBroadcaster.class.cast(broadcaster).cacheLostMessage(r); + } + AsynchronousProcessor.destroyResource(r); + return; + } + synchronized (cr) { + try { // This is required when you change the response's type String m = null;