You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by rw...@apache.org on 2006/01/09 08:24:06 UTC

svn commit: r367233 - /portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java

Author: rwatler
Date: Sun Jan  8 23:24:05 2006
New Revision: 367233

URL: http://svn.apache.org/viewcvs?rev=367233&view=rev
Log:
correct updating of root Fragment singleton collection in page: reuse removed/replaced fragments to preserve oid

Modified:
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java

Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java?rev=367233&r1=367232&r2=367233&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java Sun Jan  8 23:24:05 2006
@@ -47,6 +47,7 @@
     private List menus;
 
     private PageMenuDefinitionList menuDefinitions;
+    private FragmentImpl removedFragment;
 
     public PageImpl()
     {
@@ -187,24 +188,58 @@
      */
     public void setRootFragment(Fragment fragment)
     {
-        // delete existing fragments if required
-        if ((this.fragment != null) && !this.fragment.isEmpty())
-        {
-            this.fragment.clear();
-        }
-
-        // add new singleton fragment
+        // add new or reuse singleton fragment
         if (fragment instanceof FragmentImpl)
         {
-            // add fragment to singleton collection
+            // create singleton collection or remove existing
+            // root fragment and save for reuse
             if (this.fragment == null)
             {
                 this.fragment = new ArrayList(1);
             }
+            else if (!this.fragment.isEmpty())
+            {
+                removedFragment = (FragmentImpl)this.fragment.iterator().next();
+                this.fragment.clear();
+            }
+
+            // add new fragment or copy configuration
+            // from previously removed fragment
+            if (removedFragment != null)
+            {
+                // reuse previously removed fragment
+                FragmentImpl addFragment = (FragmentImpl)fragment;
+                fragment = removedFragment;
+                removedFragment = null;
+                // TODO: move this logic to copy methods on implementations
+                fragment.setName(addFragment.getName());
+                fragment.setTitle(addFragment.getTitle());
+                fragment.setShortTitle(addFragment.getShortTitle());
+                fragment.setType(addFragment.getType());
+                fragment.setSkin(addFragment.getSkin());
+                fragment.setDecorator(addFragment.getDecorator());
+                fragment.setState(addFragment.getState());
+                fragment.setSecurityConstraints(addFragment.getSecurityConstraints());
+                fragment.getProperties().clear();
+                fragment.getProperties().putAll(addFragment.getProperties());
+                fragment.setPreferences(addFragment.getPreferences());
+                fragment.getFragments().clear();
+                fragment.getFragments().addAll(addFragment.getFragments());
+            }
             this.fragment.add(fragment);
 
             // set page implementation in root and children fragments
             ((FragmentImpl)fragment).setPage(this);
+        }
+        else if (fragment == null)
+        {
+            // delete existing fragment if required, saving
+            // removed fragment for later reuse
+            if ((this.fragment != null) && !this.fragment.isEmpty())
+            {
+                removedFragment = (FragmentImpl)this.fragment.iterator().next();
+                this.fragment.clear();
+            }
         }
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org