Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/org/apache/jetspeed/portalsite/TestPortalSite.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/org/apache/jetspeed/portalsite/TestPortalSite.java?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/org/apache/jetspeed/portalsite/TestPortalSite.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/org/apache/jetspeed/portalsite/TestPortalSite.java
 Fri Nov 20 17:50:11 2009
@@ -30,8 +30,10 @@
 import org.apache.jetspeed.components.test.AbstractSpringTestCase;
 import org.apache.jetspeed.om.folder.Folder;
 import org.apache.jetspeed.om.folder.MenuDefinition;
+import org.apache.jetspeed.om.page.FragmentDefinition;
 import org.apache.jetspeed.om.page.Link;
 import org.apache.jetspeed.om.page.Page;
+import org.apache.jetspeed.om.page.PageTemplate;
 import org.apache.jetspeed.page.PageManager;
 import org.apache.jetspeed.page.document.NodeSet;
 import org.apache.jetspeed.page.document.NodeNotFoundException;
@@ -147,7 +149,7 @@
         locator.add("hostname", true, false, "dash");
         locator.add("user", true, false, "joe");
         locator.add("page", false, false, "home");
-        SiteView profileView = new SiteView(pageManager, locator);
+        SiteView profileView = new SiteView(pageManager, locator, false);
         assertEquals("/_hostname/dash/_user/joe,/_hostname/dash,/", 
profileView.getSearchPathsString());
         
         locator = new JetspeedProfileLocator();
@@ -158,7 +160,7 @@
         locator.add("hostname", true, false, "dash");
         locator.add("role", true, false, "user");
         locator.add("page", false, false, "home");
-        profileView = new SiteView(pageManager, locator);
+        profileView = new SiteView(pageManager, locator, false);
         
assertEquals("/_hostname/dash/_user/joe,/_hostname/dash/_role/user,/_hostname/dash,/",
 profileView.getSearchPathsString());
   
         locator = new JetspeedProfileLocator();
@@ -171,7 +173,7 @@
         locator.add("hostname", true, false, "localhost");
         locator.add("role", true, false, "somerole");
         locator.add("path", false, false, "home");
-        profileView = new SiteView(pageManager, locator);
+        profileView = new SiteView(pageManager, locator, false);
         
assertEquals("/__subsite-root/_hostname/localhost/_user/sublocal,/__subsite-root/_hostname/localhost/_role/somerole,/__subsite-root/_hostname/localhost,/__subsite-root",
 profileView.getSearchPathsString());                       
     }
     
@@ -276,7 +278,7 @@
         assertTrue(folderPageProxiesByPath.contains(folder0Page0Proxy));
 
         // test aggregating SiteView
-        SiteView aggregateView = new SiteView(pageManager, 
"/_user/user,/_role/role0,/_group/group,/");
+        SiteView aggregateView = new SiteView(pageManager, 
"/_user/user,/_role/role0,/_group/group,/", false);
         assertEquals("/_user/user,/_role/role0,/_group/group,/", 
aggregateView.getSearchPathsString());
         rootFolderProxy = aggregateView.getRootFolderProxy();
         assertNotNull(rootFolderProxy);
@@ -293,8 +295,11 @@
         assertEquals("/page0.psml", 
extractFileSystemPathFromId(rootPage0Proxy.getId()));
         List rootPage0ProxyMenus = rootPage0Proxy.getMenuDefinitions();
         assertNotNull(rootPage0ProxyMenus);
-        assertEquals(2 + aggregateView.getStandardMenuNames().size(), 
rootPage0ProxyMenus.size());
+        assertEquals(3 + aggregateView.getStandardMenuNames().size(), 
rootPage0ProxyMenus.size());
         Iterator menusIter = rootPage0ProxyMenus.iterator();
+        MenuDefinition rootPage0ProxyTemplateTestMenu = 
(MenuDefinition)menusIter.next();
+        assertEquals("template-test", 
rootPage0ProxyTemplateTestMenu.getName());
+        assertEquals("/page2.psml", 
rootPage0ProxyTemplateTestMenu.getOptions());
         MenuDefinition rootPage0ProxyTopMenu = 
(MenuDefinition)menusIter.next();
         assertEquals("top", rootPage0ProxyTopMenu.getName());
         assertEquals("/", rootPage0ProxyTopMenu.getOptions());
@@ -315,7 +320,7 @@
         assertEquals("/_user/user/page2.psml", 
extractFileSystemPathFromId(rootPage2Proxy.getId()));
         List rootPage2ProxyMenus = rootPage2Proxy.getMenuDefinitions();
         assertNotNull(rootPage2ProxyMenus);
-        assertEquals(2 + aggregateView.getStandardMenuNames().size(), 
rootPage2ProxyMenus.size());
+        assertEquals(3 + aggregateView.getStandardMenuNames().size(), 
rootPage2ProxyMenus.size());
         menusIter = rootPage2ProxyMenus.iterator();
         MenuDefinition rootPage2ProxyTopMenu = 
(MenuDefinition)menusIter.next();
         assertEquals("top", rootPage2ProxyTopMenu.getName());
@@ -323,6 +328,9 @@
         assertEquals(1, rootPage2ProxyTopMenu.getDepth());
         MenuDefinition rootPage2ProxyBreadCrumbMenu = 
(MenuDefinition)menusIter.next();
         assertEquals("bread-crumbs", rootPage2ProxyBreadCrumbMenu.getName());
+        MenuDefinition rootPage2ProxyTemplateTestMenu = 
(MenuDefinition)menusIter.next();
+        assertEquals("template-test", 
rootPage2ProxyTemplateTestMenu.getName());
+        assertEquals("/page0.psml", 
rootPage2ProxyTemplateTestMenu.getOptions());
         for (int i = 0; (i < aggregateView.getStandardMenuNames().size()); i++)
         {
             
assertTrue(aggregateView.getStandardMenuNames().contains(((MenuDefinition)menusIter.next()).getName()));
@@ -357,7 +365,7 @@
         assertEquals("/_user/user/folder1", 
extractFileSystemPathFromId(rootFolder1Proxy.getId()));
 
         // test degenerate aggregating SiteView
-        aggregateView = new SiteView(pageManager, "/__subsite-root");
+        aggregateView = new SiteView(pageManager, "/__subsite-root", false);
         assertEquals("/__subsite-root", aggregateView.getSearchPathsString());
         rootFolderProxy = aggregateView.getRootFolderProxy();
         assertNotNull(rootFolderProxy);
@@ -371,13 +379,13 @@
         // test SiteView construction using profile locators
         JetspeedProfileLocator locator = new JetspeedProfileLocator();
         locator.init(null, "/");
-        SiteView profileView = new SiteView(pageManager, locator);
+        SiteView profileView = new SiteView(pageManager, locator, false);
         assertEquals("/", profileView.getSearchPathsString());
         locator = new JetspeedProfileLocator();
         locator.init(null, "/");
         locator.add("user", true, false, "user");
         locator.add("page", false, false, "default-page");
-        profileView = new SiteView(pageManager, locator);
+        profileView = new SiteView(pageManager, locator, false);
         assertEquals("/_user/user,/", profileView.getSearchPathsString());
         locator = new JetspeedProfileLocator();
         locator.init(null, "/");
@@ -386,14 +394,14 @@
         locator.add("mediatype", true, false, "html");
         locator.add("language", true, false, "en");
         locator.add("country", true, false, "US");
-        profileView = new SiteView(pageManager, locator);
+        profileView = new SiteView(pageManager, locator, false);
         assertEquals("/_user/user/_mediatype/html,/_user/user,/", 
profileView.getSearchPathsString());
         locator = new JetspeedProfileLocator();
         locator.init(null, "/");
         locator.add("page", false, false, "default-page");
         locator.add("role", true, false, "role0");
         locator.add("role", true, false, "role1");
-        profileView = new SiteView(pageManager, locator);
+        profileView = new SiteView(pageManager, locator, false);
         assertEquals("/_role/role0,/_role/role1,/", 
profileView.getSearchPathsString());
         locator = new JetspeedProfileLocator();
         locator.init(null, "/");
@@ -403,7 +411,7 @@
         locator.add("navigation", false, true, "/");
         locator.add("group", true, false, "group");
         locator.add("page", false, false, "default-page");
-        profileView = new SiteView(pageManager, locator);
+        profileView = new SiteView(pageManager, locator, false);
         assertEquals("/_user/user,/_role/role0,/_group/group,/", 
profileView.getSearchPathsString());
 
         locator = new JetspeedProfileLocator();
@@ -411,13 +419,13 @@
         locator.add("hostname", true, false, "dash");
         locator.add("user", true, false, "joe");
         locator.add("page", false, false, "home");
-        profileView = new SiteView(pageManager, locator);
+        profileView = new SiteView(pageManager, locator, false);
         assertEquals("/_hostname/dash/_user/joe,/_hostname/dash,/", 
profileView.getSearchPathsString());
         
         locator = new JetspeedProfileLocator();
         locator.init(null, "/");
         locator.add("navigation", false, true, "subsite-root");
-        profileView = new SiteView(pageManager, locator);
+        profileView = new SiteView(pageManager, locator, false);
         assertEquals("/__subsite-root", profileView.getSearchPathsString());
         Map locators = new HashMap();
         locator = new JetspeedProfileLocator();
@@ -431,7 +439,7 @@
         locator.add("navigation", false, true, "/");
         locator.add("group", true, false, "group");
         locators.put("alternate-locator-name", locator);
-        profileView = new SiteView(pageManager, locators);
+        profileView = new SiteView(pageManager, locators, false);
         assertEquals("/_role/role0,/_role/role1,/_user/user,/_group/group,/", 
profileView.getSearchPathsString());
         rootFolderProxy = profileView.getRootFolderProxy();
         assertNotNull(rootFolderProxy);
@@ -483,6 +491,21 @@
         assertNotNull(requestPageProxy);
         assertEquals("page2.psml", requestPageProxy.getName());
         assertEquals("/_user/user/page2.psml", 
extractFileSystemPathFromId(requestPageProxy.getId()));
+        PageTemplate requestPageTemplateProxy = 
requestContext.getPageTemplate();
+        assertNotNull(requestPageTemplateProxy);
+        assertEquals("template.tpsml", requestPageTemplateProxy.getName());
+        assertEquals("/template.tpsml", 
extractFileSystemPathFromId(requestPageTemplateProxy.getId()));
+        Map requestFragmentDefinitionProxies = 
requestContext.getFragmentDefinitions();
+        assertNotNull(requestFragmentDefinitionProxies);
+        assertEquals(2, requestFragmentDefinitionProxies.size());
+        FragmentDefinition requestFragmentDefinitionProxy0 = 
(FragmentDefinition)requestFragmentDefinitionProxies.get("fake-fragment-definition-0");
+        assertNotNull(requestFragmentDefinitionProxy0);
+        assertEquals("definition0.fpsml", 
requestFragmentDefinitionProxy0.getName());
+        assertEquals("/definition0.fpsml", 
extractFileSystemPathFromId(requestFragmentDefinitionProxy0.getId()));
+        FragmentDefinition requestFragmentDefinitionProxy1 = 
(FragmentDefinition)requestFragmentDefinitionProxies.get("fake-fragment-definition-1");
+        assertNotNull(requestFragmentDefinitionProxy1);
+        assertEquals("definition1.fpsml", 
requestFragmentDefinitionProxy1.getName());
+        assertEquals("/_user/user/definition1.fpsml", 
extractFileSystemPathFromId(requestFragmentDefinitionProxy1.getId()));        
         Folder requestFolderProxy = requestContext.getFolder();
         assertNotNull(requestFolderProxy);
         assertEquals("/", requestFolderProxy.getName());
@@ -637,9 +660,10 @@
         assertNotNull(requestContext);
         Set customMenuNames = requestContext.getCustomMenuNames();
         assertNotNull(customMenuNames);
-        assertEquals(2, customMenuNames.size());
+        assertEquals(3, customMenuNames.size());
         assertTrue(customMenuNames.contains("top"));
         assertTrue(customMenuNames.contains("bread-crumbs"));
+        assertTrue(customMenuNames.contains("template-test"));
         Menu topMenu = requestContext.getMenu("top");
         assertNotNull(topMenu);
         assertEquals(MenuElement.MENU_ELEMENT_TYPE, topMenu.getElementType());
@@ -740,6 +764,15 @@
         assertEquals("/", ((MenuOption)breadCrumbsElements.get(0)).getUrl());
         assertEquals(MenuOption.FOLDER_OPTION_TYPE, 
((MenuOption)breadCrumbsElements.get(0)).getType());
         assertTrue(((MenuImpl)breadCrumbsMenu).isElementRelative());
+        Menu templateTestMenu = requestContext.getMenu("template-test");
+        assertNotNull(templateTestMenu);
+        assertEquals("template-test", templateTestMenu.getName());
+        assertFalse(templateTestMenu.isEmpty());
+        List templateTestElements = templateTestMenu.getElements();
+        assertNotNull(templateTestElements);
+        assertEquals(1, templateTestElements.size());
+        assertTrue(templateTestElements.get(0) instanceof MenuOption);
+        assertEquals("/page1.psml", 
((MenuOption)templateTestElements.get(0)).getUrl());
 
         // second request at /folder0
         locator = new JetspeedProfileLocator();
@@ -904,6 +937,33 @@
         assertEquals("tabs", pagesMenu.getSkin());
         assertTrue(((MenuImpl)pagesMenu).isElementRelative());
 
+        // fourth request at /page0.psml
+        locator = new JetspeedProfileLocator();
+        locator.init(null, "/page0.psml");
+        locator.add("user", true, false, "user");
+        locator.add("mediatype", true, false, "html");
+        locators = new HashMap();
+        locators.put(ProfileLocator.PAGE_LOCATOR, locator);
+        locator = new JetspeedProfileLocator();
+        locator.init(null, "/page0.psml");
+        locator.add("role", true, false, "role0");
+        locators.put("role", locator);
+        locator = new JetspeedProfileLocator();
+        locator.init(null, "/page0.psml");
+        locator.add("group", true, false, "group");
+        locators.put("group", locator);
+        requestContext = sessionContext.newRequestContext(locators);
+        assertNotNull(requestContext);
+        Menu templateTestMenu2 = requestContext.getMenu("template-test");
+        assertNotNull(templateTestMenu2);
+        assertEquals("template-test", templateTestMenu2.getName());
+        assertFalse(templateTestMenu2.isEmpty());
+        List templateTestElements2 = templateTestMenu2.getElements();
+        assertNotNull(templateTestElements2);
+        assertEquals(1, templateTestElements2.size());
+        assertTrue(templateTestElements2.get(0) instanceof MenuOption);
+        assertEquals("/page2.psml", 
((MenuOption)templateTestElements2.get(0)).getUrl());
+
         // new request at /folder1
         locator = new JetspeedProfileLocator();
         locator.init(null, "/folder1");

Added: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/_user/user/definition1.fpsml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/_user/user/definition1.fpsml?rev=882653&view=auto
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/_user/user/definition1.fpsml
 (added)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/_user/user/definition1.fpsml
 Fri Nov 20 17:50:11 2009
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<fragment-definition id="_user-user-definition1"
+    xmlns="http://portals.apache.org/jetspeed";
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
+    xsi:schemaLocation="http://portals.apache.org/jetspeed 
http://portals.apache.org/jetspeed-2/2.1/schemas/psml.xsd";>
+
+  <title>/definition1.fpsml</title>
+  <fragment id="fake-fragment-definition-1" name="fake-fragment-definition-1" 
type="fake-fragment-definition-1"/>
+</fragment-definition>

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/_user/user/page2.psml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/_user/user/page2.psml?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/_user/user/page2.psml
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/_user/user/page2.psml
 Fri Nov 20 17:50:11 2009
@@ -24,6 +24,7 @@
 
   <title>/page2.psml</title>
   <menu name="top" options="/" depth="1" skin="dhtml-pull-down"/>
-  <fragment id="fake" name="fake" type="fake"/>
-
+  <fragment id="fake" name="fake" type="fake">
+    <fragment-reference id="fake-fragment-reference" 
refid="fake-fragment-definition-1"/>
+  </fragment>
 </page>

Added: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/definition0.fpsml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/definition0.fpsml?rev=882653&view=auto
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/definition0.fpsml
 (added)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/definition0.fpsml
 Fri Nov 20 17:50:11 2009
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<fragment-definition id="definition0"
+    xmlns="http://portals.apache.org/jetspeed";
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
+    xsi:schemaLocation="http://portals.apache.org/jetspeed 
http://portals.apache.org/jetspeed-2/2.1/schemas/psml.xsd";>
+
+  <title>/definition0.fpsml</title>
+  <fragment id="fake-fragment-definition-0" name="fake-fragment-definition-0" 
type="fake-fragment-definition-0"/>
+</fragment-definition>

Added: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/definition1.fpsml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/definition1.fpsml?rev=882653&view=auto
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/definition1.fpsml
 (added)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/definition1.fpsml
 Fri Nov 20 17:50:11 2009
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<fragment-definition id="definition1"
+    xmlns="http://portals.apache.org/jetspeed";
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
+    xsi:schemaLocation="http://portals.apache.org/jetspeed 
http://portals.apache.org/jetspeed-2/2.1/schemas/psml.xsd";>
+
+  <title>/definition1.fpsml</title>
+  <fragment id="fake-fragment-definition-1" name="fake-fragment-definition-1" 
type="fake-fragment-definition-1"/>
+</fragment-definition>

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/folder.metadata
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/folder.metadata?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/folder.metadata
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/folder.metadata
 Fri Nov 20 17:50:11 2009
@@ -34,5 +34,5 @@
   <document-order>link0.link</document-order>
 
   <menu name="bread-crumbs" options="./" paths="true"/>
-
+  <menu name="template-test" options="/page0.psml"/>
 </folder>

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/page0.psml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/page0.psml?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/page0.psml
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/page0.psml
 Fri Nov 20 17:50:11 2009
@@ -24,4 +24,6 @@
 
   <title>/page0.psml</title>
   <fragment id="fake" name="fake" type="fake"/>
+
+  <menu name="template-test" options="/page2.psml"/>
 </page>

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/page2.psml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/page2.psml?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/page2.psml
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/page2.psml
 Fri Nov 20 17:50:11 2009
@@ -22,6 +22,7 @@
     xsi:schemaLocation="http://portals.apache.org/jetspeed 
http://portals.apache.org/jetspeed-2/2.1/schemas/psml.xsd";>
 
   <title>/page2.psml</title>
-  <fragment id="fake" name="fake" type="fake"/>
-
+  <fragment id="fake" name="fake" type="fake">
+    <fragment-reference id="fake-fragment-reference" 
refid="fake-fragment-definition-1"/>
+  </fragment>
 </page>

Added: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/template.tpsml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/template.tpsml?rev=882653&view=auto
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/template.tpsml
 (added)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/resources/webapp/WEB-INF/pages/template.tpsml
 Fri Nov 20 17:50:11 2009
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<page-template id="template"
+    xmlns="http://portals.apache.org/jetspeed";
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
+    xsi:schemaLocation="http://portals.apache.org/jetspeed 
http://portals.apache.org/jetspeed-2/2.1/schemas/psml.xsd";>
+
+  <title>/template.tpsml</title>
+  <fragment id="fake-template" name="fake-template" type="fake-template">
+    <page-fragment id="fake-page-fragment"/>
+    <fragment-reference id="fake-fragment-reference" 
refid="fake-fragment-definition-0"/>
+  </fragment>
+
+  <menu name="template-test" options="/page1.psml"/>
+</page-template>

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletActionSecurityConstraintsBehavior.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletActionSecurityConstraintsBehavior.java?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletActionSecurityConstraintsBehavior.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletActionSecurityConstraintsBehavior.java
 Fri Nov 20 17:50:11 2009
@@ -18,16 +18,17 @@
 
 import java.security.Principal;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.apache.jetspeed.Jetspeed;
 import org.apache.jetspeed.administration.PortalConfiguration;
-import org.apache.jetspeed.layout.PageLayoutComponent;
 import org.apache.jetspeed.layout.PortletActionSecurityBehavior;
 import org.apache.jetspeed.om.page.ContentPage;
 import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.pipeline.valve.PageProfilerValve;
 import org.apache.jetspeed.request.RequestContext;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * Abstracted behavior of security checks for portlet actions
  *
@@ -41,13 +42,13 @@
     protected Logger log = 
LoggerFactory.getLogger(PortletActionSecurityConstraintsBehavior.class);    
     protected String guest = "guest";
     
-    public PortletActionSecurityConstraintsBehavior(PageManager pageManager, 
PageLayoutComponent pageLayoutComponent)
+    public PortletActionSecurityConstraintsBehavior(PageManager pageManager, 
PageProfilerValve profilerValve)
     {
-       this( pageManager, pageLayoutComponent, Boolean.FALSE );
+       this( pageManager, profilerValve, Boolean.FALSE );
     }
-    public PortletActionSecurityConstraintsBehavior(PageManager pageManager, 
PageLayoutComponent pageLayoutComponent, Boolean 
enableCreateUserPagesFromRolesOnEdit )
+    public PortletActionSecurityConstraintsBehavior(PageManager pageManager, 
PageProfilerValve profilerValve, Boolean enableCreateUserPagesFromRolesOnEdit )
     {
-        super( pageManager, pageLayoutComponent, 
enableCreateUserPagesFromRolesOnEdit );
+        super( pageManager, profilerValve, 
enableCreateUserPagesFromRolesOnEdit );
         PortalConfiguration config = Jetspeed.getConfiguration();
         if (config != null)
         {

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletActionSecurityPathBehavior.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletActionSecurityPathBehavior.java?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletActionSecurityPathBehavior.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletActionSecurityPathBehavior.java
 Fri Nov 20 17:50:11 2009
@@ -16,16 +16,12 @@
  */
 package org.apache.jetspeed.layout.impl;
 
-import java.util.Locale;
-
 import org.apache.jetspeed.JetspeedActions;
-import org.apache.jetspeed.layout.PageLayoutComponent;
 import org.apache.jetspeed.layout.PortletActionSecurityBehavior;
 import org.apache.jetspeed.om.folder.Folder;
 import org.apache.jetspeed.om.page.ContentPage;
-import org.apache.jetspeed.om.page.Page;
 import org.apache.jetspeed.page.PageManager;
-import org.apache.jetspeed.profiler.impl.ProfilerValveImpl;
+import org.apache.jetspeed.pipeline.valve.PageProfilerValve;
 import org.apache.jetspeed.request.RequestContext;
 
 import org.slf4j.Logger;
@@ -41,17 +37,17 @@
 {
     protected Logger log = 
LoggerFactory.getLogger(PortletActionSecurityPathBehavior.class);    
     protected PageManager pageManager;
-    protected PageLayoutComponent pageLayoutComponent;
+    protected PageProfilerValve profilerValve;
     private boolean enableCreateUserPagesFromRolesOnEdit;
     
-    public PortletActionSecurityPathBehavior(PageManager pageManager, 
PageLayoutComponent pageLayoutComponent)
+    public PortletActionSecurityPathBehavior(PageManager pageManager, 
PageProfilerValve profilerValve)
     {
-       this( pageManager, pageLayoutComponent, Boolean.FALSE ) ;
+       this( pageManager, profilerValve, Boolean.FALSE ) ;
     }
-    public PortletActionSecurityPathBehavior(PageManager pageManager, 
PageLayoutComponent pageLayoutComponent, Boolean 
enableCreateUserPagesFromRolesOnEdit )
+    public PortletActionSecurityPathBehavior(PageManager pageManager, 
PageProfilerValve profilerValve, Boolean enableCreateUserPagesFromRolesOnEdit )
     {
         this.pageManager = pageManager;
-        this.pageLayoutComponent = pageLayoutComponent;
+        this.profilerValve = profilerValve;
         this.enableCreateUserPagesFromRolesOnEdit = ( 
enableCreateUserPagesFromRolesOnEdit == null ? false : 
enableCreateUserPagesFromRolesOnEdit.booleanValue() );
     }
 
@@ -101,18 +97,10 @@
                if ( isPageQualifiedForCreateNewPageOnEdit( pagePath ) )
             {
                    // create user home pages
-                       String pageName = contentPage.getName();
+                       String pageName = contentPage.getName();                
        
                 pageManager.createUserHomePagesFromRoles(context.getSubject());
-                Page page = pageManager.getPage(Folder.USER_FOLDER 
-                                                + 
context.getRequest().getUserPrincipal().getName()
-                                                + Folder.PATH_SEPARATOR 
-                                                + pageName);   // was 
Folder.FALLBACK_DEFAULT_PAGE prior to 2007-11-06
-                
-                // TODO validate effectiveness of request context reset below
-                context.setPage(pageLayoutComponent.newContentPage(page));
-                
context.getRequest().removeAttribute(ProfilerValveImpl.PORTAL_SITE_REQUEST_CONTEXT_ATTR_KEY);
-                
context.getRequest().removeAttribute(ProfilerValveImpl.PROFILED_PAGE_CONTEXT_ATTR_KEY);
-                
context.getRequest().getSession().removeAttribute(ProfilerValveImpl.PORTAL_SITE_SESSION_CONTEXT_ATTR_KEY);
                
+                // update request context with new profiler valve invocation
+                profilerValve.invoke(context, null);
             }
         }
         catch (Exception e)

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletActionSecurityPathMergeBehavior.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletActionSecurityPathMergeBehavior.java?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletActionSecurityPathMergeBehavior.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletActionSecurityPathMergeBehavior.java
 Fri Nov 20 17:50:11 2009
@@ -22,17 +22,18 @@
 
 import javax.security.auth.Subject;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.jetspeed.layout.PageLayoutComponent;
 import org.apache.jetspeed.layout.PortletActionSecurityBehavior;
 import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.pipeline.valve.PageProfilerValve;
 import org.apache.jetspeed.request.RequestContext;
 import org.apache.jetspeed.security.Role;
 import org.apache.jetspeed.security.SubjectHelper;
 import org.apache.jetspeed.security.User;
 import org.apache.jetspeed.security.impl.TransientRole;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * Abstracted behavior of security checks when used with the
  * profiling rule "user-rolecombo". This behavior merges 
@@ -47,13 +48,13 @@
 {
     protected Logger log = 
LoggerFactory.getLogger(PortletActionSecurityPathMergeBehavior.class);
     
-    public PortletActionSecurityPathMergeBehavior( PageManager pageManager, 
PageLayoutComponent pageLayoutComponent )
+    public PortletActionSecurityPathMergeBehavior( PageManager pageManager, 
PageProfilerValve profilerValve )
     {
-       this( pageManager, pageLayoutComponent, Boolean.FALSE );
+       this( pageManager, profilerValve, Boolean.FALSE );
     }
-    public PortletActionSecurityPathMergeBehavior( PageManager pageManager, 
PageLayoutComponent pageLayoutComponent, Boolean 
enableCreateUserPagesFromRolesOnEdit )
+    public PortletActionSecurityPathMergeBehavior( PageManager pageManager, 
PageProfilerValve profilerValve, Boolean enableCreateUserPagesFromRolesOnEdit )
     {
-        super( pageManager, pageLayoutComponent, 
enableCreateUserPagesFromRolesOnEdit );
+        super( pageManager, profilerValve, 
enableCreateUserPagesFromRolesOnEdit );
     }
 
     public Subject getSubject(RequestContext context)

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/profiler/impl/ProfilerValveImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/profiler/impl/ProfilerValveImpl.java?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/profiler/impl/ProfilerValveImpl.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/profiler/impl/ProfilerValveImpl.java
 Fri Nov 20 17:50:11 2009
@@ -29,6 +29,7 @@
 import org.apache.jetspeed.layout.PageLayoutComponent;
 import org.apache.jetspeed.om.page.ContentPage;
 import org.apache.jetspeed.om.page.Page;
+import org.apache.jetspeed.om.page.PageTemplate;
 import org.apache.jetspeed.page.document.NodeNotFoundException;
 import org.apache.jetspeed.pipeline.PipelineException;
 import org.apache.jetspeed.pipeline.valve.AbstractValve;
@@ -219,11 +220,9 @@
                 // and is now being reloaded in a new server), it must be
                 // replaced with a newly created session context
                 PortalSiteSessionContext sessionContext = 
(PortalSiteSessionContext)request.getSessionAttribute(PORTAL_SITE_SESSION_CONTEXT_ATTR_KEY);
-                String pipeline = request.getPipeline().getName();
                 if ((sessionContext == null) || !sessionContext.isValid())
                 {
                     sessionContext = portalSite.newSessionContext();
-                    sessionContext.setPipeline(pipeline);
                     
request.setSessionAttribute(PORTAL_SITE_SESSION_CONTEXT_ATTR_KEY, 
sessionContext);
                 }
 
@@ -237,7 +236,10 @@
                 // request context here does not select the page or build
                 // menus: that is done when the request context is
                 // accessed subsequently
-                PortalSiteRequestContext requestContext = 
sessionContext.newRequestContext(locators, requestFallback, useHistory);
+                String pipeline = request.getPipeline().getName();
+                boolean forceReservedFoldersVisibleInView = 
(pipeline.equals(PortalReservedParameters.CONFIG_PIPELINE_NAME) ||
+                                                             
pipeline.equals(PortalReservedParameters.DESKTOP_CONFIG_PIPELINE_NAME));        
+                PortalSiteRequestContext requestContext = 
sessionContext.newRequestContext(locators, requestFallback, useHistory, 
forceReservedFoldersVisibleInView);
                 request.setAttribute(PORTAL_SITE_REQUEST_CONTEXT_ATTR_KEY, 
requestContext);
 
                 // additionally save request context under legacy key
@@ -254,7 +256,9 @@
                 // the managed page here selects the current page for the
                 // request
                 Page managedPage = requestContext.getManagedPage();
-                ContentPage contentPage = 
pageLayoutComponent.newContentPage(managedPage);
+                PageTemplate managedPageTemplate = 
requestContext.getManagedPageTemplate();
+                Map managedFragmentDefinitions = 
requestContext.getManagedFragmentDefinitions();
+                ContentPage contentPage = 
pageLayoutComponent.newContentPage(managedPage, managedPageTemplate, 
managedFragmentDefinitions);
                 request.setPage(contentPage);
                 request.setProfileLocators(requestContext.getLocators());
                 
@@ -262,7 +266,10 @@
             }
 
             // continue
-            context.invokeNext(request);
+            if (context != null)
+            {
+                context.invokeNext(request);
+            }
         }
         catch (SecurityException se)
         {

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/request/JetspeedRequestContext.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/request/JetspeedRequestContext.java?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/request/JetspeedRequestContext.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/request/JetspeedRequestContext.java
 Fri Nov 20 17:50:11 2009
@@ -41,10 +41,11 @@
 import org.apache.jetspeed.container.url.PortalURL;
 import org.apache.jetspeed.layout.PageLayoutComponent;
 import org.apache.jetspeed.om.page.ContentFragment;
-import org.apache.jetspeed.om.page.impl.ContentFragmentImpl;
 import org.apache.jetspeed.om.page.ContentPage;
-import org.apache.jetspeed.om.page.impl.ContentPageImpl;
 import org.apache.jetspeed.om.page.Fragment;
+import org.apache.jetspeed.om.page.Page;
+import org.apache.jetspeed.om.page.PageTemplate;
+import org.apache.jetspeed.om.page.impl.ContentFragmentImpl;
 import org.apache.jetspeed.om.portlet.Language;
 import org.apache.jetspeed.om.portlet.PortletDefinition;
 import org.apache.jetspeed.om.window.impl.PortletWindowImpl;
@@ -583,7 +584,10 @@
             }               
             PortalSiteSessionContext sessionContext = 
(PortalSiteSessionContext)getSessionAttribute(ProfilerValveImpl.PORTAL_SITE_SESSION_CONTEXT_ATTR_KEY);
             PortalSiteRequestContext requestContext = 
sessionContext.newRequestContext(locators, true, true);
-            ContentPage cpage = 
pageLayoutComponent.newContentPage(requestContext.getManagedPage());
+            Page managedPage = requestContext.getManagedPage();
+            PageTemplate managedPageTemplate = 
requestContext.getManagedPageTemplate();
+            Map managedFragmentDefinitions = 
requestContext.getManagedFragmentDefinitions();
+            ContentPage cpage = 
pageLayoutComponent.newContentPage(managedPage, managedPageTemplate, 
managedFragmentDefinitions);
             //System.out.println("page is " + cpage.getPath());
             this.setPage(realPage);            
             this.setPath(pathSave);

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/assembly/test-layout-api.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/assembly/test-layout-api.xml?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/assembly/test-layout-api.xml
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/assembly/test-layout-api.xml
 Fri Nov 20 17:50:11 2009
@@ -34,7 +34,7 @@
         <ref bean="org.apache.jetspeed.page.PageManager"/>        
         </constructor-arg>
         <constructor-arg index='1'>
-        <ref bean="org.apache.jetspeed.layout.PageLayoutComponent"/>
+        <ref bean="profilerValve"/>
         </constructor-arg>
         </bean-->
     

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/assembly/test-layout-constraints-api.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/assembly/test-layout-constraints-api.xml?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/assembly/test-layout-constraints-api.xml
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/assembly/test-layout-constraints-api.xml
 Fri Nov 20 17:50:11 2009
@@ -34,7 +34,7 @@
         <ref bean="org.apache.jetspeed.page.PageManager"/>        
     </constructor-arg>         
     <constructor-arg index='1'>
-        <ref bean="org.apache.jetspeed.layout.PageLayoutComponent"/>
+        <ref bean="profilerValve"/>
     </constructor-arg>
 </bean-->
 

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/aggregator/TestAggregator.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/aggregator/TestAggregator.java?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/aggregator/TestAggregator.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/aggregator/TestAggregator.java
 Fri Nov 20 17:50:11 2009
@@ -200,7 +200,7 @@
                         PageLayoutComponent pageLayoutComponent = 
                             (PageLayoutComponent) 
engine.getComponentManager().getComponent(PageLayoutComponent.class);
                         assertNotNull(page);
-                        
requestContext.setPage(pageLayoutComponent.newContentPage(page));
+                        
requestContext.setPage(pageLayoutComponent.newContentPage(page, null, null));
 
                         if (!isParallelMode) {
                             pageAggregator.build(requestContext);

Modified: 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/layout/PageLayoutComponent.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/layout/PageLayoutComponent.java?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/layout/PageLayoutComponent.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/layout/PageLayoutComponent.java
 Fri Nov 20 17:50:11 2009
@@ -16,12 +16,12 @@
  */
 package org.apache.jetspeed.layout;
 
-import java.util.Locale;
 import java.util.Map;
 
 import org.apache.jetspeed.om.page.ContentFragment;
 import org.apache.jetspeed.om.page.ContentPage;
 import org.apache.jetspeed.om.page.Page;
+import org.apache.jetspeed.om.page.PageTemplate;
 
 /**
  * Page layout component interface.
@@ -106,23 +106,37 @@
     void incrementInDocumentOrder(ContentPage contentPage);
 
     /**
+     * Move fragment in page to another layout fragment in the same page.
+     *
+     * @param contentPage content page context
+     * @param fragmentId fragment id of fragment to move
+     * @param toFragmentId fragment id of new parent layout fragment
+     */
+    void moveFragment(ContentPage contentPage, String fragmentId, String 
toFragmentId);
+
+    /**
      * Move fragment from current parent layout fragment to another
      * layout fragment in the same page.
      *
      * @param contentPage content page context
      * @param fragmentId fragment id of fragment to move
-     * @param fromFragmentId fragment id of current parent layout fragment
+     * @param fromFragmentId fragment id of current parent layout fragment or
+     *                       or null if fragment to be found anywhere in page
      * @param toFragmentId fragment id of new parent layout fragment
      */
     void moveFragment(ContentPage contentPage, String fragmentId, String 
fromFragmentId, String toFragmentId);
 
     /**
-     * Construct a new content page hierarchy from PSML page.
+     * Construct a new content page hierarchy from PSML page, page
+     * templates, and fragment definitions.
      * 
      * @param page PSML page to construct content page from
+     * @param pageTemplate PSML page template to merge into content page
+     * @param fragmentDefinitions PSML fragment definitions referenced
+     *                            by page and/or page template
      * @return new content page
      */
-    ContentPage newContentPage(Page page);
+    ContentPage newContentPage(Page page, PageTemplate pageTemplate, Map 
fragmentDefinitions);
     
     /**
      * Create a new sibling folder with specified configuration and

Modified: 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/BaseFragmentsElement.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/BaseFragmentsElement.java?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/BaseFragmentsElement.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/BaseFragmentsElement.java
 Fri Nov 20 17:50:11 2009
@@ -68,4 +68,13 @@
      * @return the list of found Fragment objects or null if not found
      */
     List getFragmentsByName(String name);
+
+    /**
+     * Retrieves the fragments contained within this page, with the
+     * specified interface.
+     *
+     * @param interfaceFilter the fragment interface to match or null for all
+     * @return the list of found Fragment objects or null if not found
+     */
+    List getFragmentsByInterface(Class interfaceFilter);
 }

Modified: 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/ContentFragment.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/ContentFragment.java?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/ContentFragment.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/ContentFragment.java
 Fri Nov 20 17:50:11 2009
@@ -356,6 +356,15 @@
      */
     PageLayoutComponent getPageLayoutComponent();
     
+    /**
+     * Return is locked flag indicating whether this fragment
+     * was originally merged from a page template or fragment
+     * definition.
+     * 
+     * @return locked flag
+     */
+    boolean isLocked();
+    
     /************** PageLayoutComponent Operations **************/
 
     /**

Modified: 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/ContentPage.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/ContentPage.java?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/ContentPage.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/ContentPage.java
 Fri Nov 20 17:50:11 2009
@@ -18,6 +18,7 @@
 
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 
 import org.apache.jetspeed.layout.PageLayoutComponent;
 import org.apache.jetspeed.om.portlet.GenericMetadata;
@@ -187,6 +188,22 @@
     Page getPage();
     
     /**
+     * Access underlying concrete persistent page template or
+     * null if page is transient or constructed dynamically.
+     * 
+     * @return persistent page template or null
+     */
+    PageTemplate getPageTemplate();
+    
+    /**
+     * Access underlying concrete persistent fragment definitions
+     * map or null if page is transient or constructed dynamically.
+     * 
+     * @return persistent fragment definitions or null
+     */
+    Map getFragmentDefinitions();
+    
+    /**
      * Returns the PageLayoutComponent that generated this ContentPage
      * 
      * @return PageLayoutComponent instance.

Modified: 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portalsite/PortalSiteRequestContext.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portalsite/PortalSiteRequestContext.java?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portalsite/PortalSiteRequestContext.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portalsite/PortalSiteRequestContext.java
 Fri Nov 20 17:50:11 2009
@@ -21,6 +21,7 @@
 
 import org.apache.jetspeed.om.folder.Folder;
 import org.apache.jetspeed.om.page.Page;
+import org.apache.jetspeed.om.page.PageTemplate;
 import org.apache.jetspeed.page.document.NodeNotFoundException;
 import org.apache.jetspeed.page.document.NodeSet;
 
@@ -57,6 +58,28 @@
     Page getManagedPage() throws NodeNotFoundException;
 
     /**
+     * getManagedPageTemplate - get request profiled concrete page 
+     *                          template instance as managed by the
+     *                          page manager
+     *  
+     * @return page template
+     * @throws NodeNotFoundException if page not found
+     * @throws SecurityException if page view access not granted
+     */
+    PageTemplate getManagedPageTemplate() throws NodeNotFoundException;
+
+    /**
+     * getManagedFragmentDefinitions - get map of request profiled concrete
+     *                                 fragment definition instances as
+     *                                 managed by the page manager
+     *  
+     * @return map of fragment definitions by id
+     * @throws NodeNotFoundException if page or fragment definition not found
+     * @throws SecurityException if page view access not granted
+     */
+    Map getManagedFragmentDefinitions() throws NodeNotFoundException;
+
+    /**
      * getPage - get request profiled page proxy
      *  
      * @return page proxy
@@ -66,6 +89,25 @@
     Page getPage() throws NodeNotFoundException;
 
     /**
+     * getPageTemplate - get page template proxy for request profiled page
+     *  
+     * @return page template proxy if found or null
+     * @throws NodeNotFoundException if page not found
+     * @throws SecurityException if page view access not granted
+     */
+    PageTemplate getPageTemplate() throws NodeNotFoundException;
+
+    /**
+     * getFragmentDefinitions - get fragment definition proxy map for request
+     *                          profiled page and page template
+     *  
+     * @return map of fragment definition proxies by fragment id
+     * @throws NodeNotFoundException if page not found
+     * @throws SecurityException if page view access not granted
+     */
+    Map getFragmentDefinitions() throws NodeNotFoundException;
+
+    /**
      * getFolder - get folder proxy relative to request profiled page
      *  
      * @return page folder proxy

Modified: 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portalsite/PortalSiteSessionContext.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portalsite/PortalSiteSessionContext.java?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portalsite/PortalSiteSessionContext.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/portalsite/PortalSiteSessionContext.java
 Fri Nov 20 17:50:11 2009
@@ -60,6 +60,19 @@
     PortalSiteRequestContext newRequestContext(Map requestProfileLocators, 
boolean requestFallback, boolean useHistory);
 
     /**
+     * newRequestContext - create a new request context instance
+     *
+     * @param requestProfileLocators request profile locators
+     * @param requestFallback flag specifying whether to fallback to root 
folder
+     *                        if locators do not select a page or access is 
forbidden
+     * @param useHistory flag indicating whether to use visited page
+     *                   history to select default page per site folder
+     * @param forceReservedVisible force reserved/hidden folders visible in 
site view
+     * @return new request context instance
+     */
+    PortalSiteRequestContext newRequestContext(Map requestProfileLocators, 
boolean requestFallback, boolean useHistory, boolean forceReservedVisible);
+
+    /**
      * getPageManager - return PageManager component instance
      *
      * @return PageManager instance
@@ -73,18 +86,6 @@
      *
      * @return valid context status
      */
-    boolean isValid();
-    
-    /**
-     * set which pipeline this context is stored for 
-     * 
-     * @param pipeline
-     */
-    void setPipeline(String pipeline);
-    
-    /**
-     * get which pipeline this context is stored for
-     */
-    String getPipeline();
+    boolean isValid();    
 }
 

Modified: 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/ajax-layout.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/ajax-layout.xml?rev=882653&r1=882652&r2=882653&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/ajax-layout.xml
 (original)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/ajax-layout.xml
 Fri Nov 20 17:50:11 2009
@@ -42,7 +42,7 @@
       <ref bean="org.apache.jetspeed.page.PageManager" />
     </constructor-arg>
     <constructor-arg index='1'>
-      <ref bean="org.apache.jetspeed.layout.PageLayoutComponent" />
+      <ref bean="profilerValve" />
     </constructor-arg>
     <constructor-arg index='2'>
       <ref bean="EnableCreateUserPagesFromRolesOnEdit" />



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

Reply via email to