Author: rwatler
Date: Fri Nov 20 23:35:35 2009
New Revision: 882786

URL: http://svn.apache.org/viewvc?rev=882786&view=rev
Log:
correct update operations in PageLayoutComponent to properly support 
manipulation of FragmentReferences in content page

Modified:
    
portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/layout/impl/PageLayoutComponentImpl.java
    
portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/om/page/impl/ContentFragmentImpl.java

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/layout/impl/PageLayoutComponentImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/layout/impl/PageLayoutComponentImpl.java?rev=882786&r1=882785&r2=882786&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/layout/impl/PageLayoutComponentImpl.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/layout/impl/PageLayoutComponentImpl.java
 Fri Nov 20 23:35:35 2009
@@ -130,7 +130,7 @@
             
             // update content page context
             ContentFragmentImpl contentFragmentImpl = 
(ContentFragmentImpl)contentFragment;
-            contentFragmentImpl.initialize(this, page, newFragment, null, 
false);
+            contentFragmentImpl.initialize(this, page, page, newFragment, 
null, false);
             if (!Utils.isNull(row))
             {
                 contentFragmentImpl.setLayoutRow(row);
@@ -178,14 +178,14 @@
             {
                 throw new IllegalArgumentException("Locked content fragment is 
not mutable");
             }
-            boolean contentFragmentDefinitionIsPage = 
(contentFragmentImpl.getDefinition() instanceof Page);
+            boolean contentFragmentDefinitionIsPage = 
((contentFragmentImpl.getDefinition() instanceof Page) && 
contentFragmentImpl.getDefinition().getPath().equals(contentFragmentImpl.getPage().getPath()));
             if (!contentFragmentDefinitionIsPage)
             {
                 throw new IllegalArgumentException("Only page fragments can be 
modified");                
             }
 
             // retrieve current page and fragment from page manager
-            Page page = 
pageManager.getPage(contentFragmentImpl.getDefinition().getPath());
+            Page page = 
pageManager.getPage(contentFragmentImpl.getPage().getPath());
             BaseFragmentElement parentFragment = 
page.getFragmentById(contentFragmentImpl.getFragment().getId());
             if (!(parentFragment instanceof Fragment))
             {
@@ -881,14 +881,14 @@
         {
             // validate content fragment
             ContentFragmentImpl contentFragmentImpl = 
(ContentFragmentImpl)contentFragment;
-            boolean contentFragmentDefinitionIsPage = 
(contentFragmentImpl.getDefinition() instanceof Page);
+            boolean contentFragmentDefinitionIsPage = 
((contentFragmentImpl.getDefinition() instanceof Page) && 
contentFragmentImpl.getDefinition().getPath().equals(contentFragmentImpl.getPage().getPath()));
             if (!contentFragmentDefinitionIsPage && 
(contentFragmentImpl.getReference() == null))
             {
                 throw new IllegalArgumentException("Only page fragments and 
fragment references are mutable");
             }
             
             // retrieve current fragment and page from page manager
-            Page page = 
pageManager.getPage(contentFragmentImpl.getDefinition().getPath());
+            Page page = 
pageManager.getPage(contentFragmentImpl.getPage().getPath());
             String pageFragmentId = (contentFragmentDefinitionIsPage ? 
contentFragmentImpl.getFragment().getId() : 
contentFragmentImpl.getReference().getId());
             BaseFragmentElement fragment = 
page.getFragmentById(pageFragmentId);
             if (fragment == null)
@@ -1034,14 +1034,14 @@
             {
                 throw new IllegalArgumentException("Locked content fragment is 
not mutable");                
             }
-            boolean contentFragmentDefinitionIsPage = 
(contentFragmentImpl.getDefinition() instanceof Page);
+            boolean contentFragmentDefinitionIsPage = 
((contentFragmentImpl.getDefinition() instanceof Page) && 
contentFragmentImpl.getDefinition().getPath().equals(contentFragmentImpl.getPage().getPath()));
             if (!contentFragmentDefinitionIsPage)
             {
                 throw new IllegalArgumentException("Only page fragments can be 
modified");                
             }
             
             // retrieve current fragment and page from page manager
-            Page page = 
pageManager.getPage(contentFragmentImpl.getDefinition().getPath());
+            Page page = 
pageManager.getPage(contentFragmentImpl.getPage().getPath());
             BaseFragmentElement foundFragment = 
page.getFragmentById(contentFragmentImpl.getFragment().getId());
             if (!(foundFragment instanceof Fragment))
             {
@@ -1083,14 +1083,14 @@
         {
             // validate content fragment
             ContentFragmentImpl contentFragmentImpl = 
(ContentFragmentImpl)contentFragment;
-            boolean contentFragmentDefinitionIsPage = 
(contentFragmentImpl.getDefinition() instanceof Page);
+            boolean contentFragmentDefinitionIsPage = 
((contentFragmentImpl.getDefinition() instanceof Page) && 
contentFragmentImpl.getDefinition().getPath().equals(contentFragmentImpl.getPage().getPath()));
             if (!contentFragmentDefinitionIsPage && 
(contentFragmentImpl.getReference() == null))
             {
                 throw new IllegalArgumentException("Only page fragments and 
fragment references are mutable");
             }
             
             // retrieve current fragment and page from page manager
-            Page page = 
pageManager.getPage(contentFragmentImpl.getDefinition().getPath());
+            Page page = 
pageManager.getPage(contentFragmentImpl.getPage().getPath());
             String pageFragmentId = (contentFragmentDefinitionIsPage ? 
contentFragmentImpl.getFragment().getId() : 
contentFragmentImpl.getReference().getId());
             BaseFragmentElement fragment = 
page.getFragmentById(pageFragmentId);
             if (fragment == null)
@@ -1186,14 +1186,14 @@
         {
             // validate content fragment
             ContentFragmentImpl contentFragmentImpl = 
(ContentFragmentImpl)contentFragment;
-            boolean contentFragmentDefinitionIsPage = 
(contentFragmentImpl.getDefinition() instanceof Page);
+            boolean contentFragmentDefinitionIsPage = 
((contentFragmentImpl.getDefinition() instanceof Page) && 
contentFragmentImpl.getDefinition().getPath().equals(contentFragmentImpl.getPage().getPath()));
             if (!contentFragmentDefinitionIsPage && 
(contentFragmentImpl.getReference() == null))
             {
                 throw new IllegalArgumentException("Only page fragments and 
fragment references are mutable");
             }
             
             // retrieve current fragment and page from page manager
-            Page page = 
pageManager.getPage(contentFragmentImpl.getDefinition().getPath());
+            Page page = 
pageManager.getPage(contentFragmentImpl.getPage().getPath());
             String pageFragmentId = (contentFragmentDefinitionIsPage ? 
contentFragmentImpl.getFragment().getId() : 
contentFragmentImpl.getReference().getId());
             BaseFragmentElement fragment = 
page.getFragmentById(pageFragmentId);
             if (fragment == null)
@@ -1263,14 +1263,14 @@
         {
             // validate content fragment
             ContentFragmentImpl contentFragmentImpl = 
(ContentFragmentImpl)contentFragment;
-            boolean contentFragmentDefinitionIsPage = 
(contentFragmentImpl.getDefinition() instanceof Page);
+            boolean contentFragmentDefinitionIsPage = 
((contentFragmentImpl.getDefinition() instanceof Page) && 
contentFragmentImpl.getDefinition().getPath().equals(contentFragmentImpl.getPage().getPath()));
             if (!contentFragmentDefinitionIsPage && 
(contentFragmentImpl.getReference() == null))
             {
                 throw new IllegalArgumentException("Only page fragments and 
fragment references are mutable");
             }
             
             // retrieve current fragment and page from page manager
-            Page page = 
pageManager.getPage(contentFragmentImpl.getDefinition().getPath());
+            Page page = 
pageManager.getPage(contentFragmentImpl.getPage().getPath());
             String pageFragmentId = (contentFragmentDefinitionIsPage ? 
contentFragmentImpl.getFragment().getId() : 
contentFragmentImpl.getReference().getId());
             BaseFragmentElement fragment = 
page.getFragmentById(pageFragmentId);
             if (fragment == null)
@@ -1330,14 +1330,14 @@
         {
             // validate content fragment
             ContentFragmentImpl contentFragmentImpl = 
(ContentFragmentImpl)contentFragment;
-            boolean contentFragmentDefinitionIsPage = 
(contentFragmentImpl.getDefinition() instanceof Page);
+            boolean contentFragmentDefinitionIsPage = 
((contentFragmentImpl.getDefinition() instanceof Page) && 
contentFragmentImpl.getDefinition().getPath().equals(contentFragmentImpl.getPage().getPath()));
             if (!contentFragmentDefinitionIsPage && 
(contentFragmentImpl.getReference() == null))
             {
                 throw new IllegalArgumentException("Only page fragments and 
fragment references are mutable");
             }
             
             // retrieve current fragment and page from page manager
-            Page page = 
pageManager.getPage(contentFragmentImpl.getDefinition().getPath());
+            Page page = 
pageManager.getPage(contentFragmentImpl.getPage().getPath());
             String pageFragmentId = (contentFragmentDefinitionIsPage ? 
contentFragmentImpl.getFragment().getId() : 
contentFragmentImpl.getReference().getId());
             BaseFragmentElement fragment = 
page.getFragmentById(pageFragmentId);
             if (fragment == null)
@@ -1633,8 +1633,8 @@
         {
             fragmentFragment[0] = 
(Fragment)fragmentDefinition.getRootFragment();
             String contentFragmentId = 
parentId+"."+fragmentFragment[0].getId();                
-            FragmentReference pageReference = ((definition == page) ? 
fragmentReference : null);
-            return newContentFragment(contentFragmentId, page, 
fragmentDefinitions, definition, fragmentFragment[0], pageReference, true);
+            FragmentReference pageFragmentReference = ((definition == page) ? 
fragmentReference : null);
+            return newContentFragment(contentFragmentId, page, 
fragmentDefinitions, fragmentDefinition, fragmentFragment[0], 
pageFragmentReference, true);
         }
         return null;
     }
@@ -1654,7 +1654,7 @@
     private ContentFragmentImpl newContentFragment(String id, Page page, Map 
fragmentDefinitions, BaseFragmentsElement definition, Fragment fragment, 
FragmentReference reference, boolean locked)
     {
         // generate content fragment hierarchy for fragment
-        ContentFragmentImpl contentFragmentImpl = new 
ContentFragmentImpl(this, id, definition, fragment, reference, locked);
+        ContentFragmentImpl contentFragmentImpl = new 
ContentFragmentImpl(this, id, page, definition, fragment, reference, locked);
         contentFragmentImpl.setName(fragment.getName());
         contentFragmentImpl.setType(fragment.getType());
 
@@ -1674,7 +1674,7 @@
             }
         }
 
-        log.debug("\tPageLayoutComponentImpl.newContentFragment(): constructed 
ContentFragment: id="+contentFragmentImpl.getId()+", 
name="+contentFragmentImpl.getName()+", 
locked="+contentFragmentImpl.isLocked());
+        log.debug("PageLayoutComponentImpl.newContentFragment(): constructed 
ContentFragment: id="+contentFragmentImpl.getId()+", 
name="+contentFragmentImpl.getName()+", 
locked="+contentFragmentImpl.isLocked());
         return contentFragmentImpl;
     }
 

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/om/page/impl/ContentFragmentImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/om/page/impl/ContentFragmentImpl.java?rev=882786&r1=882785&r2=882786&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/om/page/impl/ContentFragmentImpl.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/om/page/impl/ContentFragmentImpl.java
 Fri Nov 20 23:35:35 2009
@@ -31,6 +31,7 @@
 import org.apache.jetspeed.om.page.ContentFragment;
 import org.apache.jetspeed.om.page.Fragment;
 import org.apache.jetspeed.om.page.FragmentReference;
+import org.apache.jetspeed.om.page.Page;
 import org.apache.jetspeed.om.preference.FragmentPreference;
 import org.apache.pluto.container.PortletPreference;
 
@@ -49,6 +50,7 @@
 
     private PageLayoutComponent pageLayoutComponent;
     private String id;
+    private Page page;
     private BaseFragmentsElement definition;
     private Fragment fragment;
     private FragmentReference reference;
@@ -108,15 +110,17 @@
      * 
      * @param pageLayoutComponent PageLayoutComponent instance
      * @param id content fragment id
+     * @param page PSML page
      * @param definition PSML page, page template, or fragment definition
      * @param fragment PSML fragment
      * @param reference PSML page fragment reference
      * @param locked locked flag
      */
-    public ContentFragmentImpl(PageLayoutComponent pageLayoutComponent, String 
id, BaseFragmentsElement definition, Fragment fragment, FragmentReference 
reference, boolean locked)
+    public ContentFragmentImpl(PageLayoutComponent pageLayoutComponent, String 
id, Page page, BaseFragmentsElement definition, Fragment fragment, 
FragmentReference reference, boolean locked)
     {
         this.pageLayoutComponent = pageLayoutComponent;
         this.id = id;
+        this.page = page;
         this.definition = definition;
         this.fragment = fragment;
         this.reference = reference;
@@ -805,6 +809,16 @@
     }
     
     /**
+     * Get content page PSML page.
+     * 
+     * @return the PSML page
+     */
+    public Page getPage()
+    {
+        return page;
+    }
+
+    /**
      * Get content fragment PSML page, page template, or
      * fragment definition.
      * 
@@ -839,14 +853,16 @@
      * Initialize content fragment.
      * 
      * @param pageLayoutComponent PageLayoutComponent instance
+     * @param page PSML page
      * @param definition PSML page, page template, or fragment definition
      * @param fragment PSML fragment
      * @param reference PSML page fragment reference
      * @param locked locked flag
      */
-    public void initialize(PageLayoutComponent pageLayoutComponent, 
BaseFragmentsElement definition, Fragment fragment, FragmentReference 
reference, boolean locked)
+    public void initialize(PageLayoutComponent pageLayoutComponent, Page page, 
BaseFragmentsElement definition, Fragment fragment, FragmentReference 
reference, boolean locked)
     {
         this.pageLayoutComponent = pageLayoutComponent;
+        this.page = page;
         this.definition = definition;
         this.fragment = fragment;
         this.reference = reference;



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to