dev@javaserverfaces.java.net

Re: Seeking Review: Make previously unsynchronized map synchronized

From: Manfred Riem <manfred.riem_at_oracle.com>
Date: Thu, 12 Sep 2013 08:25:26 -0500

See JIRA issue.

On 9/12/2013 8:18 AM, Edward Burns wrote:
> http://java.net/jira/browse/JAVASERVERFACES-2883
>
> SECTION: Modified Files
> ----------------------------
> M jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeManager.java
>
> - I think it is more correct for the view map to be synchronized,
> because in the absence of JSF 2.2 clientWindowId usage, there is a
> very good possibility that multiple tabs on the same view, which will
> share a session, will end up colliding.
>
> Thank you very much to sseidel and LaVale for the suggestion and
> diagnostic information, and for the follow through!
>
>
> SECTION: Diffs
> ----------------------------
> Index: jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeManager.java
> ===================================================================
> --- jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeManager.java (revision 12515)
> +++ jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeManager.java (working copy)
> @@ -42,6 +42,7 @@
> import com.sun.faces.application.ApplicationAssociate;
>
> import com.sun.faces.mgbean.BeanManager;
>
> import com.sun.faces.util.LRUMap;
>
> +import java.util.Collections;
>
> import java.util.Iterator;
>
> import java.util.Map;
>
> import java.util.UUID;
>
> @@ -270,7 +271,7 @@
> }
>
>
>
> if (sessionMap.get(ACTIVE_VIEW_MAPS) == null) {
>
> - sessionMap.put(ACTIVE_VIEW_MAPS, (Map<String, Object>) new LRUMap<String, Object>(size));
>
> + sessionMap.put(ACTIVE_VIEW_MAPS, (Map<String, Object>) Collections.synchronizedMap(new LRUMap<String, Object>(size)));
>
> }
>
>
>
> Map<String, Object> viewMaps = (Map<String, Object>) sessionMap.get(ACTIVE_VIEW_MAPS);
>
>
>
>
> --