[pal-cvs 3367] [1101] fixed ConcurrentModificationException

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2008年 8月 22日 (金) 15:46:16 JST


Revision: 1101
          http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=pal&view=rev&rev=1101
Author:   shinsuke
Date:     2008-08-22 15:46:15 +0900 (Fri, 22 Aug 2008)

Log Message:
-----------
fixed ConcurrentModificationException

Modified Paths:
--------------
    pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/portal/src/java/org/apache/jetspeed/layout/impl/MovePortletAction.java


-------------- next part --------------
Modified: pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/portal/src/java/org/apache/jetspeed/layout/impl/MovePortletAction.java
===================================================================
--- pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/portal/src/java/org/apache/jetspeed/layout/impl/MovePortletAction.java	2008-08-22 05:39:53 UTC (rev 1100)
+++ pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/portal/src/java/org/apache/jetspeed/layout/impl/MovePortletAction.java	2008-08-22 06:46:15 UTC (rev 1101)
@@ -336,29 +336,33 @@
             {
                 PortletPlacementContext placement = null;
                 Page page = requestContext.getPage();
+                synchronized (page.getId())
+                {
+                    if (currentLayoutFragment == null)
+                        currentLayoutFragment = getParentFragmentById(
+                                moveFragmentId, page.getRootFragment());
 
-                if (currentLayoutFragment == null)
-                    currentLayoutFragment = getParentFragmentById(
-                            moveFragmentId, page.getRootFragment());
+                    if (currentLayoutFragment != null)
+                        placement = new PortletPlacementContextImpl(page,
+                                registry, currentLayoutFragment);
+                    else
+                        placement = new PortletPlacementContextImpl(page,
+                                registry);
 
-                if (currentLayoutFragment != null)
-                    placement = new PortletPlacementContextImpl(page, registry,
-                            currentLayoutFragment);
-                else
-                    placement = new PortletPlacementContextImpl(page, registry);
+                    Fragment fragment = placement
+                            .getFragmentById(moveFragmentId);
+                    if (fragment == null)
+                    {
+                        success = false;
+                        resultMap.put(REASON,
+                                "Failed to find fragment for portlet id: "
+                                        + moveFragmentId);
+                        return success;
+                    }
 
-                Fragment fragment = placement.getFragmentById(moveFragmentId);
-                if (fragment == null)
-                {
-                    success = false;
-                    resultMap.put(REASON,
-                            "Failed to find fragment for portlet id: "
-                                    + moveFragmentId);
-                    return success;
+                    success = moveInFragment(requestContext, placement,
+                            fragment, null, resultMap, batch);
                 }
-
-                success = moveInFragment(requestContext, placement, fragment,
-                        null, resultMap, batch);
             }
             if (success)
             {


pal-cvs メーリングリストの案内
Back to archive index