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 wo...@apache.org on 2011/10/04 18:14:36 UTC

svn commit: r1178850 [1/2] - in /portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java: JETSPEED-INF/spring/ org/apache/jetspeed/layout/

Author: woonsan
Date: Tue Oct  4 16:14:35 2011
New Revision: 1178850

URL: http://svn.apache.org/viewvc?rev=1178850&view=rev
Log:
JS2-1259: adding (skeletal) dbpm based page layout component test case

Added:
    portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/JETSPEED-INF/spring/test-spring-dbpm.xml   (with props)
    portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/org/apache/jetspeed/layout/AbstractTestPageLayout.java   (with props)
    portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/org/apache/jetspeed/layout/TestPageLayoutWithDBPM.java   (with props)
Modified:
    portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/org/apache/jetspeed/layout/TestPageLayout.java

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/JETSPEED-INF/spring/test-spring-dbpm.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/JETSPEED-INF/spring/test-spring-dbpm.xml?rev=1178850&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/JETSPEED-INF/spring/test-spring-dbpm.xml (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/JETSPEED-INF/spring/test-spring-dbpm.xml Tue Oct  4 16:14:35 2011
@@ -0,0 +1,190 @@
+<?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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+    
+  <!-- Page Layout Test Spring Configuration-->
+  
+  <!-- IDGenerator -->
+  <bean id="IdGenerator" 
+       class="org.apache.jetspeed.idgenerator.JetspeedIdGenerator" init-method="start" destroy-method="stop" >
+       <meta key="j2:cat" value="xmlPageManager" />
+       <!-- ID Start value -->
+       <constructor-arg index="0"><value>65536</value></constructor-arg>
+       <!-- ID Prefix -->
+       <constructor-arg index="1"><value>P-</value></constructor-arg>
+       <!-- ID Suffix -->
+       <constructor-arg index="2"><value></value></constructor-arg>
+  </bean>
+  
+  <!-- PageFileCache -->
+  <bean id="PageFileCache" 
+       class="org.apache.jetspeed.cache.file.FileCache" 
+       init-method="startFileScanner"
+       destroy-method="stopFileScanner">
+       <meta key="j2:cat" value="xmlPageManager" />
+       <!-- Scan rate for changes in cached files on the file system -->
+       <constructor-arg index="0"><value>10</value></constructor-arg>
+       <!-- Cache size -->
+       <constructor-arg index="1"><value>100</value></constructor-arg>         
+  </bean>
+    
+  <!-- DocumentHandlerFactory -->
+  <bean id="PsmlDocumentHandler"
+       class="org.apache.jetspeed.page.document.psml.CastorFileSystemDocumentHandler" >         
+       <meta key="j2:cat" value="xmlPageManager" />
+       <constructor-arg index="0"><ref bean="IdGenerator"/></constructor-arg>
+       <constructor-arg index="1"><value>/JETSPEED-INF/castor/page-mapping.xml</value></constructor-arg>
+       <constructor-arg index="2"><value>.psml</value></constructor-arg>
+       <constructor-arg index="3" ><value>org.apache.jetspeed.om.page.psml.PageImpl</value></constructor-arg>       
+       <constructor-arg index="4" ><value>${applicationRoot}/WEB-INF/pages</value></constructor-arg>
+       <constructor-arg index="5" ><ref bean="PageFileCache"/></constructor-arg>
+  </bean>
+  
+  <bean id="TpsmlDocumentHandler"
+       class="org.apache.jetspeed.page.document.psml.CastorFileSystemDocumentHandler" >         
+       <meta key="j2:cat" value="xmlPageManager" />
+       <constructor-arg index="0"><ref bean="IdGenerator"/></constructor-arg>
+       <constructor-arg index="1"><value>/JETSPEED-INF/castor/page-mapping.xml</value></constructor-arg>
+       <constructor-arg index="2"><value>.tpsml</value></constructor-arg>
+       <constructor-arg index="3" ><value>org.apache.jetspeed.om.page.psml.PageTemplateImpl</value></constructor-arg>       
+       <constructor-arg index="4" ><value>${applicationRoot}/WEB-INF/pages</value></constructor-arg>
+       <constructor-arg index="5" ><ref bean="PageFileCache"/></constructor-arg>
+  </bean>
+  
+  <bean id="DpsmlDocumentHandler"
+       class="org.apache.jetspeed.page.document.psml.CastorFileSystemDocumentHandler" >         
+       <meta key="j2:cat" value="xmlPageManager" />
+       <constructor-arg index="0"><ref bean="IdGenerator"/></constructor-arg>
+       <constructor-arg index="1"><value>/JETSPEED-INF/castor/page-mapping.xml</value></constructor-arg>
+       <constructor-arg index="2"><value>.dpsml</value></constructor-arg>
+       <constructor-arg index="3" ><value>org.apache.jetspeed.om.page.psml.DynamicPageImpl</value></constructor-arg>       
+       <constructor-arg index="4" ><value>${applicationRoot}/WEB-INF/pages</value></constructor-arg>
+       <constructor-arg index="5" ><ref bean="PageFileCache"/></constructor-arg>
+  </bean>
+  
+  <bean id="FpsmlDocumentHandler"
+       class="org.apache.jetspeed.page.document.psml.CastorFileSystemDocumentHandler" >         
+       <meta key="j2:cat" value="xmlPageManager" />
+       <constructor-arg index="0"><ref bean="IdGenerator"/></constructor-arg>
+       <constructor-arg index="1"><value>/JETSPEED-INF/castor/page-mapping.xml</value></constructor-arg>
+       <constructor-arg index="2"><value>.fpsml</value></constructor-arg>
+       <constructor-arg index="3" ><value>org.apache.jetspeed.om.page.psml.FragmentDefinitionImpl</value></constructor-arg>       
+       <constructor-arg index="4" ><value>${applicationRoot}/WEB-INF/pages</value></constructor-arg>
+       <constructor-arg index="5" ><ref bean="PageFileCache"/></constructor-arg>
+  </bean>
+  
+  <bean id="LinkDocumentHandler"       
+       class="org.apache.jetspeed.page.document.psml.CastorFileSystemDocumentHandler" >         
+       <meta key="j2:cat" value="xmlPageManager" />
+       <constructor-arg index="0"><ref bean="IdGenerator"/></constructor-arg>
+       <constructor-arg index="1"><value>/JETSPEED-INF/castor/page-mapping.xml</value></constructor-arg>
+       <constructor-arg index="2"><value>.link</value></constructor-arg>
+       <constructor-arg index="3" ><value>org.apache.jetspeed.om.page.psml.LinkImpl</value></constructor-arg>       
+       <constructor-arg index="4" ><value>${applicationRoot}/WEB-INF/pages</value></constructor-arg>
+       <constructor-arg index="5" ><ref bean="PageFileCache"/></constructor-arg>
+  </bean>
+  
+  <bean id="FolderMetaDataDocumentHandler"         
+       class="org.apache.jetspeed.page.document.psml.CastorFileSystemDocumentHandler" >         
+       <meta key="j2:cat" value="xmlPageManager" />
+       <constructor-arg index="0"><ref bean="IdGenerator"/></constructor-arg>
+       <constructor-arg index="1"><value>/JETSPEED-INF/castor/page-mapping.xml</value></constructor-arg>
+       <constructor-arg index="2"><value>folder.metadata</value></constructor-arg>
+       <constructor-arg index="3" ><value>org.apache.jetspeed.om.folder.psml.FolderMetaDataImpl</value></constructor-arg>       
+       <constructor-arg index="4" ><value>${applicationRoot}/WEB-INF/pages</value></constructor-arg>
+       <constructor-arg index="5" ><ref bean="PageFileCache"/></constructor-arg>
+  </bean>
+  
+  <bean id="PageSecurityDocumentHandler"       
+       class="org.apache.jetspeed.page.document.psml.CastorFileSystemDocumentHandler" >         
+       <meta key="j2:cat" value="xmlPageManager" />
+       <constructor-arg index="0"><ref bean="IdGenerator"/></constructor-arg>
+       <constructor-arg index="1"><value>/JETSPEED-INF/castor/page-mapping.xml</value></constructor-arg>
+       <constructor-arg index="2"><value>page.security</value></constructor-arg>
+       <constructor-arg index="3" ><value>org.apache.jetspeed.om.page.psml.PageSecurityImpl</value></constructor-arg>       
+       <constructor-arg index="4" ><value>${applicationRoot}/WEB-INF/pages</value></constructor-arg>
+       <constructor-arg index="5" ><ref bean="PageFileCache"/></constructor-arg>
+  </bean>
+  
+  <bean id="DocumentHandlerFactory"        
+       class="org.apache.jetspeed.page.document.psml.DocumentHandlerFactoryImpl" >      
+       <meta key="j2:cat" value="xmlPageManager" />
+        <constructor-arg>
+        <map>
+          <entry key=".psml">
+            <ref bean="PsmlDocumentHandler" />
+          </entry>
+          <entry key=".tpsml">
+            <ref bean="TpsmlDocumentHandler" />
+          </entry>
+          <entry key=".dpsml">
+            <ref bean="DpsmlDocumentHandler" />
+          </entry>
+          <entry key=".fpsml">
+            <ref bean="FpsmlDocumentHandler" />
+          </entry>
+          <entry key=".link">
+            <ref bean="LinkDocumentHandler" />
+          </entry>  
+          <entry key="folder.metadata">
+            <ref bean="FolderMetaDataDocumentHandler" />
+          </entry>        
+          <entry key="page.security">
+            <ref bean="PageSecurityDocumentHandler" />
+          </entry>        
+        </map>
+       </constructor-arg>
+  </bean>
+  
+  <!-- FolderHandler -->
+  <bean id="FolderHandler"         
+       class="org.apache.jetspeed.page.document.psml.FileSystemFolderHandler" >         
+       <meta key="j2:cat" value="xmlPageManager" />
+       <constructor-arg index="0"><ref bean="IdGenerator"/></constructor-arg>
+       <constructor-arg index="1"><value>${applicationRoot}/WEB-INF/pages</value></constructor-arg>
+       <constructor-arg index="2"><ref bean="DocumentHandlerFactory"/></constructor-arg>
+       <constructor-arg index="3"><ref bean="PageFileCache"/></constructor-arg>        
+  </bean>
+
+  <!-- PageManager -->
+  <bean id="org.apache.jetspeed.page.PageManager" 
+       name="pageManager"
+       class="org.apache.jetspeed.page.psml.CastorXmlPageManager" init-method="init" destroy-method="destroy">         
+       <meta key="j2:cat" value="xmlPageManager" />
+       <constructor-arg index="0"><ref bean="IdGenerator"/></constructor-arg>
+       <constructor-arg index="1"><ref bean="DocumentHandlerFactory"/></constructor-arg>
+       <constructor-arg index="2"><ref bean="FolderHandler"/></constructor-arg>
+       <constructor-arg index="3"><ref bean="PageFileCache"/></constructor-arg>        
+       <!-- permissions security enabled flag, default=false -->
+       <constructor-arg index="4"><value>false</value></constructor-arg>
+       <!-- constraints security enabled flag, default=true -->
+       <constructor-arg index="5"><value>false</value></constructor-arg>
+  </bean>
+    
+  <!-- PageLayoutComponent -->
+  <bean id="org.apache.jetspeed.layout.PageLayoutComponent"
+       name="pageLayout"
+       class="org.apache.jetspeed.layout.impl.PageLayoutComponentImpl">
+       <meta key="j2:cat" value="xmlPageManager" />
+       <constructor-arg index="0"><ref bean="org.apache.jetspeed.page.PageManager" /></constructor-arg>
+       <constructor-arg index="1"><value>jetspeed-layouts::VelocityOneColumn</value></constructor-arg>
+  </bean>
+
+</beans>

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/JETSPEED-INF/spring/test-spring-dbpm.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/org/apache/jetspeed/layout/AbstractTestPageLayout.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/org/apache/jetspeed/layout/AbstractTestPageLayout.java?rev=1178850&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/org/apache/jetspeed/layout/AbstractTestPageLayout.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/org/apache/jetspeed/layout/AbstractTestPageLayout.java Tue Oct  4 16:14:35 2011
@@ -0,0 +1,655 @@
+/*
+ * 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.
+ */
+package org.apache.jetspeed.layout;
+
+import java.security.PrivilegedAction;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.security.auth.Subject;
+
+import org.apache.jetspeed.components.test.AbstractSpringTestCase;
+import org.apache.jetspeed.om.folder.Folder;
+import org.apache.jetspeed.om.page.ContentFragment;
+import org.apache.jetspeed.om.page.ContentPage;
+import org.apache.jetspeed.om.page.DynamicPage;
+import org.apache.jetspeed.om.page.Fragment;
+import org.apache.jetspeed.om.page.FragmentDefinition;
+import org.apache.jetspeed.om.page.Page;
+import org.apache.jetspeed.om.page.PageTemplate;
+import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.security.JSSubject;
+import org.apache.jetspeed.security.JetspeedPrincipal;
+import org.apache.jetspeed.security.JetspeedPrincipalType;
+import org.apache.jetspeed.security.PrincipalsSet;
+import org.apache.jetspeed.security.SecurityAttributeType;
+import org.apache.jetspeed.security.SecurityAttributeTypes;
+import org.apache.jetspeed.security.User;
+import org.apache.jetspeed.security.impl.TransientJetspeedPrincipal;
+
+/**
+ * TestPageLayout
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public abstract class AbstractTestPageLayout extends AbstractSpringTestCase
+{
+    /**
+     * PageManager component
+     */
+    private PageManager pageManager;
+
+    /**
+     * PageLayout component
+     */
+    private PageLayoutComponent pageLayout;
+
+    /**
+     * Test user subject
+     */
+    private Subject userSubject;
+
+    /* (non-Javadoc)
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception
+    {
+        // setup components, subjects, and cleanup from previous run
+        super.setUp();
+        pageManager = (PageManager) scm.getComponent("pageManager");
+        pageLayout = (PageLayoutComponent) scm.getComponent("pageLayout");
+        Set principals = new PrincipalsSet();
+        principals.add(new TestUser("user"));
+        userSubject = new Subject(true, principals, new HashSet(), new HashSet());
+        cleanupTest();
+    }
+
+    /* (non-Javadoc)
+     * @see junit.framework.TestCase#tearDown()
+     */
+    protected void tearDown() throws Exception
+    {        
+        // cleanup from test run and teardown
+        //cleanupTest();
+        pageManager = null;
+        pageLayout = null;
+        userSubject = null;
+        super.tearDown();
+    }
+    
+    /**
+     * Cleanup test artifacts.
+     */
+    protected void cleanupTest() throws Exception
+    {
+        // cleanup test artifacts
+        if (pageManager.pageExists("/newpage.psml"))
+        {
+            pageManager.removePage(pageManager.getPage("/newpage.psml"));
+        }
+        if (pageManager.dynamicPageExists("/newcontentpage.dpsml"))
+        {
+            pageManager.removeDynamicPage(pageManager.getDynamicPage("/newcontentpage.dpsml"));
+        }
+        if (pageManager.pageTemplateExists("/newtemplate.tpsml"))
+        {
+            pageManager.removePageTemplate(pageManager.getPageTemplate("/newtemplate.tpsml"));
+        }
+        if (pageManager.fragmentDefinitionExists("/newdefinition0.fpsml"))
+        {
+            pageManager.removeFragmentDefinition(pageManager.getFragmentDefinition("/newdefinition0.fpsml"));
+        }
+        if (pageManager.fragmentDefinitionExists("/newdefinition1.fpsml"))
+        {
+            pageManager.removeFragmentDefinition(pageManager.getFragmentDefinition("/newdefinition1.fpsml"));
+        }        
+    }
+
+    /**
+     * Test PageManager test configuration
+     *
+     * @throws Exception
+     */
+    public void testPageManagerSetup() throws Exception
+    {
+        // validate test setup
+        assertNotNull(pageManager);
+        Folder folder = pageManager.getFolder("/");
+        assertNotNull(folder);
+        Page page = pageManager.getPage("/page.psml");
+        assertNotNull(page);
+        DynamicPage docPage = pageManager.getDynamicPage("/docpage.dpsml");        
+        assertNotNull(docPage);
+        DynamicPage contentPage = pageManager.getDynamicPage("/contentpage.dpsml");        
+        assertNotNull(contentPage);
+        FragmentDefinition definition0 = pageManager.getFragmentDefinition("/definition0.fpsml");        
+        assertNotNull(definition0);
+        FragmentDefinition definition1 = pageManager.getFragmentDefinition("/definition1.fpsml");        
+        assertNotNull(definition1);
+        PageTemplate template = pageManager.getPageTemplate("/template.tpsml");        
+        assertNotNull(template);
+    }
+
+    /**
+     * Test PageLayout component
+     *
+     * @throws Exception
+     */
+    public void testPageLayoutComponent() throws Exception
+    {
+        assertNotNull(pageManager);
+        assertNotNull(pageLayout);
+
+        // load definitions and templates
+        Map fragmentDefinitions = new HashMap();
+        FragmentDefinition definition0 = pageManager.getFragmentDefinition("/definition0.fpsml");        
+        assertNotNull(definition0);
+        assertEquals("fake-fragment-definition-0", definition0.getDefId());
+        fragmentDefinitions.put(definition0.getDefId(), definition0);
+        FragmentDefinition definition1 = pageManager.getFragmentDefinition("/definition1.fpsml");        
+        assertNotNull(definition1);
+        fragmentDefinitions.put(definition1.getDefId(), definition1);
+        assertEquals("fake-fragment-definition-1", definition1.getDefId());
+        PageTemplate template = pageManager.getPageTemplate("/template.tpsml");        
+        assertNotNull(template);
+
+        // create and validate content page for concrete page
+        Page page = pageManager.getPage("/page.psml");
+        assertNotNull(page);
+        ContentPage pageContentPage = pageLayout.newContentPage(page, template, fragmentDefinitions);
+        assertNotNull(pageContentPage);
+        assertEquals("/page.psml", pageContentPage.getTitle());
+        ContentFragment pageContentFragment0 = pageContentPage.getFragmentByFragmentId("fake-template");
+        assertNotNull(pageContentFragment0);
+        assertEquals("fake-template", pageContentFragment0.getId());
+        ContentFragment pageContentFragment1 = pageContentPage.getFragmentByFragmentId("fake-fragment-definition-0");
+        assertNotNull(pageContentFragment1);
+        assertEquals("fake-template__fake-fragment-reference__fake-fragment-definition-0", pageContentFragment1.getId());
+        assertEquals("fake-fragment-definition-0", pageContentFragment1.getRefId());
+        ContentFragment pageContentFragment2 = pageContentPage.getFragmentByFragmentId("fake");
+        assertNotNull(pageContentFragment2);
+        assertEquals("fake-template__fake-page-fragment__fake", pageContentFragment2.getId());
+        ContentFragment pageContentFragment3 = pageContentPage.getFragmentByFragmentId("fake-fragment-definition-1");
+        assertNotNull(pageContentFragment3);
+        assertEquals("fake-template__fake-page-fragment__fake__fake-fragment-reference__fake-fragment-definition-1", pageContentFragment3.getId());
+        assertEquals("fake-fragment-definition-1", pageContentFragment3.getRefId());
+        ContentFragment pageContentFragment4 = pageContentPage.getFragmentByFragmentId("fake-portlet");
+        assertNotNull(pageContentFragment4);
+        assertEquals("fake-template__fake-page-fragment__fake__fake-portlet", pageContentFragment4.getId());
+        
+        // create and validate content pages for concrete dynamic pages
+        DynamicPage docPage = pageManager.getDynamicPage("/docpage.dpsml");        
+        assertNotNull(docPage);
+        ContentPage docPageContentPage = pageLayout.newContentPage(docPage, template, fragmentDefinitions);
+        assertNotNull(docPageContentPage);
+        assertEquals("/docpage.dpsml", docPageContentPage.getTitle());
+        assertEquals("doc-type", docPageContentPage.getContentType());
+        assertTrue(docPageContentPage.isInheritable());
+        pageContentFragment0 = docPageContentPage.getFragmentByFragmentId("fake-template");
+        assertNotNull(pageContentFragment0);
+        assertEquals("fake-template", pageContentFragment0.getId());
+        pageContentFragment1 = docPageContentPage.getFragmentByFragmentId("fake-fragment-definition-0");
+        assertNotNull(pageContentFragment1);
+        assertEquals("fake-template__fake-fragment-reference__fake-fragment-definition-0", pageContentFragment1.getId());
+        assertEquals("fake-fragment-definition-0", pageContentFragment1.getRefId());
+        pageContentFragment2 = docPageContentPage.getFragmentByFragmentId("fake");
+        assertNotNull(pageContentFragment2);
+        assertEquals("fake-template__fake-page-fragment__fake", pageContentFragment2.getId());
+        DynamicPage contentPage = pageManager.getDynamicPage("/contentpage.dpsml");        
+        assertNotNull(contentPage);
+        ContentPage contentPageContentPage = pageLayout.newContentPage(contentPage, template, fragmentDefinitions);
+        assertNotNull(contentPageContentPage);
+        assertEquals("/contentpage.dpsml", contentPageContentPage.getTitle());
+        assertEquals("*", contentPageContentPage.getContentType());
+        assertTrue(contentPageContentPage.isInheritable());
+        pageContentFragment0 = contentPageContentPage.getFragmentByFragmentId("fake-template");
+        assertNotNull(pageContentFragment0);
+        assertEquals("fake-template", pageContentFragment0.getId());
+        pageContentFragment1 = contentPageContentPage.getFragmentByFragmentId("fake-fragment-definition-0");
+        assertNotNull(pageContentFragment1);
+        assertEquals("fake-template__fake-fragment-reference__fake-fragment-definition-0", pageContentFragment1.getId());
+        assertEquals("fake-fragment-definition-0", pageContentFragment1.getRefId());
+        pageContentFragment2 = contentPageContentPage.getFragmentByFragmentId("fake");
+        assertNotNull(pageContentFragment2);
+        assertEquals("fake-template__fake-page-fragment__fake", pageContentFragment2.getId());
+
+        // create and validate content page for page template
+        ContentPage templateContentPage = pageLayout.newContentPage(template, template, fragmentDefinitions);        
+        assertNotNull(templateContentPage);
+        assertEquals("/template.tpsml", templateContentPage.getTitle());
+        ContentFragment templateContentFragment0 = templateContentPage.getFragmentByFragmentId("fake-template", true);
+        assertNotNull(templateContentFragment0);
+        assertEquals("fake-template__fake-page-fragment__fake-template", templateContentFragment0.getId());
+        ContentFragment templateContentFragment1 = templateContentPage.getFragmentByFragmentId("fake-page-fragment", true);
+        assertNotNull(templateContentFragment1);
+        assertEquals("fake-template__fake-page-fragment__fake-template__fake-page-fragment", templateContentFragment1.getId());
+        ContentFragment templateContentFragment2 = templateContentPage.getFragmentByFragmentId("fake-fragment-definition-0", true);
+        assertNotNull(templateContentFragment2);
+        assertEquals("fake-template__fake-page-fragment__fake-template__fake-fragment-reference__fake-fragment-definition-0", templateContentFragment2.getId());
+        assertEquals("fake-fragment-definition-0", templateContentFragment2.getRefId());
+
+        // create and validate content page for page template
+        ContentPage fragmentDefinitionContentPage = pageLayout.newContentPage(definition0, template, fragmentDefinitions);        
+        assertNotNull(fragmentDefinitionContentPage);
+        assertEquals("/definition0.fpsml", fragmentDefinitionContentPage.getTitle());
+        ContentFragment fragmentDefinitionContentFragment0 = fragmentDefinitionContentPage.getFragmentByFragmentId("fake-fragment-definition-0");
+        assertNotNull(fragmentDefinitionContentFragment0);
+        assertEquals("fake-template__fake-page-fragment__fake-fragment-definition-0", fragmentDefinitionContentFragment0.getId());
+        
+        // create new PSML pages, content pages, templates, and fragment definitions
+        fragmentDefinitionContentPage.newSiblingFragmentDefinition("newdefinition1", null, "new-fake-fragment-definition-1", "/newdefinition1.fpsml", "/newdefinition1.fpsml");
+        fragmentDefinitionContentPage.newSiblingFragmentDefinition("newdefinition0", "new-fake-fragment-definition-0", "new-fake-fragment-definition-0", "/newdefinition0.fpsml", "/newdefinition0.fpsml");
+        templateContentPage.newSiblingPageTemplate("newtemplate", "new-fake-template", "/newtemplate.tpsml", "/newtemplate.tpsml");
+        contentPageContentPage.newSiblingDynamicPage("newcontentpage", "*", "new-fake", "/newcontentpage.dpsml", "/newcontentpage.dpsml");
+        pageContentPage.newSiblingPage("newpage", "new-fake", "/newpage.psml", "/newpage.psml");        
+        Map newFragmentDefinitions = new HashMap();
+        FragmentDefinition newDefinition1 = pageManager.getFragmentDefinition("/newdefinition1.fpsml");
+        assertNotNull(newDefinition1);
+        String newDefinition1Id = newDefinition1.getRootFragment().getId();
+        newFragmentDefinitions.put(newDefinition1Id, newDefinition1);
+        FragmentDefinition newDefinition0 = pageManager.getFragmentDefinition("/newdefinition0.fpsml");
+        assertNotNull(newDefinition0);
+        assertEquals("new-fake-fragment-definition-0", newDefinition0.getRootFragment().getId());
+        newFragmentDefinitions.put("new-fake-fragment-definition-0", newDefinition0);
+        PageTemplate newTemplate = pageManager.getPageTemplate("/newtemplate.tpsml");
+        assertNotNull(newTemplate);
+        DynamicPage newContentPage = pageManager.getDynamicPage("/newcontentpage.dpsml");
+        assertNotNull(newContentPage);
+        assertEquals("*", newContentPage.getContentType());
+        assertTrue(newContentPage.isInheritable());
+        Page newPage = pageManager.getPage("/newpage.psml");
+        assertNotNull(newPage);
+
+        // create and validate new content pages
+        ContentPage newFragmentDefinition1ContentPage = pageLayout.newContentPage(newDefinition1, newTemplate, newFragmentDefinitions);
+        assertNotNull(newFragmentDefinition1ContentPage);
+        List contentFragments = newFragmentDefinition1ContentPage.getFragmentsByName("new-fake-fragment-definition-1");
+        assertNotNull(contentFragments);
+        assertEquals(1, contentFragments.size());
+        assertEquals(newDefinition1Id, newDefinition1.getDefId());        
+        ContentPage newFragmentDefinition0ContentPage = pageLayout.newContentPage(newDefinition0, newTemplate, newFragmentDefinitions);
+        assertNotNull(newFragmentDefinition0ContentPage);
+        contentFragments = newFragmentDefinition0ContentPage.getFragmentsByName("new-fake-fragment-definition-0");
+        assertNotNull(contentFragments);
+        assertEquals(1, contentFragments.size());
+        assertEquals("new-fake-fragment-definition-0", ((ContentFragment)contentFragments.get(0)).getFragmentId());
+        assertEquals("new-fake-fragment-definition-0", newDefinition0.getDefId());        
+        ContentPage newTemplateContentPage = pageLayout.newContentPage(newTemplate, newTemplate, newFragmentDefinitions);
+        assertNotNull(newTemplateContentPage);
+        newTemplateContentPage.addFragmentReference("new-fake-fragment-definition-0");
+        newTemplateContentPage = pageLayout.newContentPage(newTemplate, newTemplate, newFragmentDefinitions);        
+        ContentPage newContentPageContentPage = pageLayout.newContentPage(newContentPage, newTemplate, newFragmentDefinitions);
+        assertNotNull(newContentPageContentPage);
+        ContentPage newPageContentPage = pageLayout.newContentPage(newPage, newTemplate, newFragmentDefinitions);
+        assertNotNull(newPageContentPage);
+        contentFragments = newPageContentPage.getFragmentsByName("new-fake");
+        assertNotNull(contentFragments);
+        assertEquals(1, contentFragments.size());
+        ContentFragment newPageRootFragment = (ContentFragment)contentFragments.get(0);
+        pageLayout.addFragmentReference(newPageRootFragment, newDefinition1Id, 0, 0);
+        pageLayout.addPortlet(newPageRootFragment, Fragment.PORTLET, "new-fake-portlet", 1, 0);
+        pageLayout.addFragmentReference(newPageRootFragment, "nonexistent-reference-id", 2, 0);
+        newPageContentPage = pageLayout.newContentPage(newPage, newTemplate, newFragmentDefinitions);
+        assertNotNull(newPageContentPage);
+        
+        // validate new PSML pages, content pages, templates, and fragment definitions
+        assertEquals("/newpage.psml", newPageContentPage.getTitle());
+        contentFragments = newPageContentPage.getFragmentsByName("new-fake-template");
+        assertNotNull(contentFragments);
+        assertEquals(1, contentFragments.size());
+        contentFragments = newPageContentPage.getFragmentsByName("new-fake-fragment-definition-0");
+        assertNotNull(contentFragments);
+        assertEquals(1, contentFragments.size());
+        assertEquals("new-fake-fragment-definition-0", ((ContentFragment)contentFragments.get(0)).getRefId());
+        contentFragments = newPageContentPage.getFragmentsByName("new-fake");
+        assertNotNull(contentFragments);
+        assertEquals(1, contentFragments.size());
+        contentFragments = ((ContentFragment)contentFragments.get(0)).getFragments();
+        assertNotNull(contentFragments);
+        assertEquals(3, contentFragments.size());
+        ContentFragment newPageReferenceContentFragment = null;
+        Iterator contentFragmentsIter = contentFragments.iterator();
+        while (contentFragmentsIter.hasNext())
+        {
+            ContentFragment contentFragment = (ContentFragment)contentFragmentsIter.next();
+            if (contentFragment.getType().equals(ContentFragment.PORTLET) && contentFragment.getName().equals("new-fake-portlet"))
+            {
+            }
+            else if (contentFragment.getType().equals(ContentFragment.PORTLET) && contentFragment.getName().equals("new-fake-fragment-definition-1"))
+            {
+                assertEquals(newDefinition1Id, contentFragment.getRefId());
+            }
+            else if (contentFragment.getType().equals(ContentFragment.REFERENCE))
+            {
+                assertEquals("nonexistent-reference-id", contentFragment.getRefId());
+                newPageReferenceContentFragment = contentFragment;
+            }
+            else
+            {
+                fail("Unexpected content fragment: "+contentFragment.getType()+"/"+contentFragment.getName());
+            }
+        }
+        assertEquals("/newcontentpage.dpsml", newContentPageContentPage.getTitle());
+        assertEquals("*", newContentPageContentPage.getContentType());
+        assertTrue(newContentPageContentPage.isInheritable());
+        contentFragments = newContentPageContentPage.getFragmentsByName("new-fake-template");
+        assertNotNull(contentFragments);
+        assertEquals(1, contentFragments.size());
+        contentFragments = newContentPageContentPage.getFragmentsByName("new-fake-fragment-definition-0");
+        assertNotNull(contentFragments);
+        assertEquals(1, contentFragments.size());
+        assertEquals("new-fake-fragment-definition-0", ((ContentFragment)contentFragments.get(0)).getRefId());
+        contentFragments = newContentPageContentPage.getFragmentsByName("new-fake");
+        assertNotNull(contentFragments);
+        assertEquals(1, contentFragments.size());
+        assertEquals("/newtemplate.tpsml", newTemplateContentPage.getTitle());
+        contentFragments = newTemplateContentPage.getFragmentsByName("new-fake-template", true);
+        assertNotNull(contentFragments);
+        assertEquals(1, contentFragments.size());
+        contentFragments = ((ContentFragment)contentFragments.get(0)).getFragments();
+        assertNotNull(contentFragments);
+        assertEquals(2, contentFragments.size());
+        contentFragmentsIter = contentFragments.iterator();
+        while (contentFragmentsIter.hasNext())
+        {
+            ContentFragment contentFragment = (ContentFragment)contentFragmentsIter.next();
+            if (contentFragment.getType().equals(ContentFragment.PAGE))
+            {
+            }
+            else if (contentFragment.getType().equals(ContentFragment.PORTLET) && contentFragment.getName().equals("new-fake-fragment-definition-0"))
+            {
+                assertEquals("new-fake-fragment-definition-0", contentFragment.getRefId());
+            }
+            else
+            {
+                fail("Unexpected content fragment: "+contentFragment.getType()+"/"+contentFragment.getName());
+            }
+        }
+        assertEquals("/newdefinition0.fpsml", newFragmentDefinition0ContentPage.getTitle());
+        contentFragments = newFragmentDefinition0ContentPage.getFragmentsByName("new-fake-fragment-definition-0");
+        assertNotNull(contentFragments);
+        assertEquals(1, contentFragments.size());
+        assertEquals("new-fake-fragment-definition-0", ((ContentFragment)contentFragments.get(0)).getFragmentId());        
+        assertEquals("new-fake-fragment-definition-0", newFragmentDefinition0ContentPage.getDefId());        
+        assertEquals("/newdefinition1.fpsml", newFragmentDefinition1ContentPage.getTitle());
+        contentFragments = newFragmentDefinition1ContentPage.getFragmentsByName("new-fake-fragment-definition-1");
+        assertNotNull(contentFragments);
+        assertEquals(1, contentFragments.size());
+        assertEquals(newDefinition1Id, ((ContentFragment)contentFragments.get(0)).getFragmentId());        
+        assertEquals(newDefinition1Id, newFragmentDefinition1ContentPage.getDefId());        
+
+        // update pages via content pages and fragments
+        newFragmentDefinition1ContentPage.updateTitles(null, "new-fragment-definition-1-updated");
+        ContentFragment updateContentFragment = (ContentFragment)(newFragmentDefinition1ContentPage.getFragmentsByName("new-fake-fragment-definition-1").get(0));
+        updateContentFragment.updateProperty("global-prop", "global-fragment-definition");
+        updateContentFragment.updateProperty("prop", "global-fragment-definition");
+        updateContentFragment.updateProperty("prop", "user-fragment-definition", ContentFragment.USER_PROPERTY_SCOPE, "user");
+        updateContentFragment.updateProperty("user-prop", "user-fragment-definition", ContentFragment.USER_PROPERTY_SCOPE, "user");
+        updateContentFragment.updateProperty("global-fragment-definition-prop", "global-fragment-definition");
+        updateContentFragment.updateProperty("fragment-definition-prop", "global-fragment-definition");
+        updateContentFragment.updateProperty("fragment-definition-prop", "user-fragment-definition", ContentFragment.USER_PROPERTY_SCOPE, "user");
+        updateContentFragment.updateProperty("user-fragment-definition-prop", "user-fragment-definition", ContentFragment.USER_PROPERTY_SCOPE, "user");
+        newTemplateContentPage.updateTitles(null, "new-page-template-updated");
+        updateContentFragment = (ContentFragment)(newTemplateContentPage.getFragmentsByName("new-fake-template", true).get(0));
+        updateContentFragment.updateProperty("global-prop", "global-template");
+        updateContentFragment.updateProperty("prop", "global-template");
+        updateContentFragment.updateProperty("prop", "user-template", ContentFragment.USER_PROPERTY_SCOPE, "user");
+        updateContentFragment.updateProperty("user-prop", "user-template", ContentFragment.USER_PROPERTY_SCOPE, "user");        
+        updateContentFragment = (ContentFragment)(newTemplateContentPage.getFragmentsByName("new-fake-fragment-definition-0", true).get(0));
+        updateContentFragment.updateProperty("global-prop", "global-template");
+        updateContentFragment.updateProperty("prop", "global-template");
+        updateContentFragment.updateProperty("prop", "user-template", ContentFragment.USER_PROPERTY_SCOPE, "user");
+        updateContentFragment.updateProperty("user-prop", "user-template", ContentFragment.USER_PROPERTY_SCOPE, "user");
+        newPageContentPage.updateTitles(null, "new-page-updated");
+        updateContentFragment = newPageContentPage.getRootFragment();
+        updateContentFragment.updateProperty("user-prop", "user-page", ContentFragment.USER_PROPERTY_SCOPE, "user");        
+        updateContentFragment = (ContentFragment)(newPageContentPage.getFragmentsByName("new-fake").get(0));
+        updateContentFragment.updateProperty("global-prop", "global-page");
+        updateContentFragment.updateProperty("prop", "global-page");
+        updateContentFragment.updateProperty("prop", "user-page", ContentFragment.USER_PROPERTY_SCOPE, "user");
+        updateContentFragment.updateProperty("user-prop", "user-page", ContentFragment.USER_PROPERTY_SCOPE, "user");
+        updateContentFragment = (ContentFragment)(newPageContentPage.getFragmentsByName("new-fake-fragment-definition-0").get(0));
+        updateContentFragment.updateProperty("user-prop", "user-page", ContentFragment.USER_PROPERTY_SCOPE, "user");        
+        updateContentFragment = (ContentFragment)(newPageContentPage.getFragmentsByName("new-fake-fragment-definition-1").get(0));
+        updateContentFragment.updateProperty("global-prop", "global-page");
+        updateContentFragment.updateProperty("prop", "global-page");
+        updateContentFragment.updateProperty("prop", "user-page", ContentFragment.USER_PROPERTY_SCOPE, "user");
+        updateContentFragment.updateProperty("user-prop", "user-page", ContentFragment.USER_PROPERTY_SCOPE, "user");
+        newPageReferenceContentFragment.updateRefId("fake-fragment-definition-0");
+        newContentPageContentPage.updateTitles(null, "new-content-page-updated");
+        newContentPageContentPage.updateContent("new-doc-type", false);
+        
+        // continue test case as user
+        Exception exception = (Exception)JSSubject.doAsPrivileged(userSubject, new PrivilegedAction()
+        {
+            public Object run()
+            {
+                try
+                {
+                    // reload PSML pages, content pages, templates, and fragment definitions
+                    Map newFragmentDefinitions = new HashMap();
+                    FragmentDefinition definition0 = pageManager.getFragmentDefinition("/definition0.fpsml");
+                    assertNotNull(definition0);
+                    newFragmentDefinitions.put(definition0.getDefId(), definition0);
+                    FragmentDefinition newDefinition1 = pageManager.getFragmentDefinition("/newdefinition1.fpsml");
+                    assertNotNull(newDefinition1);
+                    newFragmentDefinitions.put(newDefinition1.getDefId(), newDefinition1);
+                    FragmentDefinition newDefinition0 = pageManager.getFragmentDefinition("/newdefinition0.fpsml");
+                    assertNotNull(newDefinition0);
+                    newFragmentDefinitions.put(newDefinition0.getDefId(), newDefinition0);
+                    PageTemplate newTemplate = pageManager.getPageTemplate("/newtemplate.tpsml");
+                    assertNotNull(newTemplate);
+                    Page newPage = pageManager.getPage("/newpage.psml");
+                    assertNotNull(newPage);
+                    DynamicPage newContentPage = pageManager.getDynamicPage("/newcontentpage.dpsml");
+                    assertNotNull(newContentPage);
+                    
+                    // verify content page and fragment updates
+                    ContentPage newFragmentDefinition1ContentPage = pageLayout.newContentPage(newDefinition1, newTemplate, newFragmentDefinitions);
+                    assertNotNull(newFragmentDefinition1ContentPage);
+                    assertEquals("new-fragment-definition-1-updated", newFragmentDefinition1ContentPage.getShortTitle());
+                    ContentFragment updatedContentFragment = (ContentFragment)(newFragmentDefinition1ContentPage.getFragmentsByName("new-fake-fragment-definition-1").get(0));
+                    assertEquals("global-fragment-definition", updatedContentFragment.getProperty("global-prop"));
+                    assertEquals("user-fragment-definition", updatedContentFragment.getProperty("prop"));
+                    assertEquals("user-fragment-definition", updatedContentFragment.getProperty("user-prop"));
+                    assertEquals("global-fragment-definition", updatedContentFragment.getProperty("global-fragment-definition-prop"));
+                    assertEquals("user-fragment-definition", updatedContentFragment.getProperty("fragment-definition-prop"));
+                    assertEquals("user-fragment-definition", updatedContentFragment.getProperty("user-fragment-definition-prop"));
+                    ContentPage newFragmentDefinition0ContentPage = pageLayout.newContentPage(newDefinition0, newTemplate, newFragmentDefinitions);
+                    assertNotNull(newFragmentDefinition0ContentPage);
+                    ContentPage newTemplateContentPage = pageLayout.newContentPage(newTemplate, newTemplate, newFragmentDefinitions);
+                    assertNotNull(newTemplateContentPage);
+                    assertEquals("new-page-template-updated", newTemplateContentPage.getShortTitle());
+                    updatedContentFragment = newTemplateContentPage.getRootFragment();
+                    assertEquals("global-template", updatedContentFragment.getProperty("global-prop"));
+                    assertEquals("user-template", updatedContentFragment.getProperty("prop"));
+                    assertEquals("user-page", updatedContentFragment.getProperty("user-prop"));
+                    updatedContentFragment = (ContentFragment)(newTemplateContentPage.getFragmentsByName("new-fake-template", true).get(0));
+                    assertEquals("global-template", updatedContentFragment.getProperty("global-prop"));
+                    assertEquals("user-template", updatedContentFragment.getProperty("prop"));
+                    assertEquals("user-page", updatedContentFragment.getProperty("user-prop"));
+                    updatedContentFragment = (ContentFragment)(newTemplateContentPage.getFragmentsByName("new-fake-fragment-definition-0", true).get(0));
+                    assertEquals("global-template", updatedContentFragment.getProperty("global-prop"));
+                    assertEquals("user-template", updatedContentFragment.getProperty("prop"));
+                    assertEquals("user-page", updatedContentFragment.getProperty("user-prop"));
+                    ContentPage newPageContentPage = pageLayout.newContentPage(newPage, newTemplate, newFragmentDefinitions);
+                    assertNotNull(newPageContentPage);
+                    assertEquals("new-page-updated", newPageContentPage.getShortTitle());
+                    updatedContentFragment = newPageContentPage.getRootFragment();
+                    assertEquals("global-template", updatedContentFragment.getProperty("global-prop"));
+                    assertEquals("user-template", updatedContentFragment.getProperty("prop"));
+                    assertEquals("user-page", updatedContentFragment.getProperty("user-prop"));
+                    updatedContentFragment = (ContentFragment)(newPageContentPage.getFragmentsByName("new-fake").get(0));
+                    assertEquals("global-page", updatedContentFragment.getProperty("global-prop"));
+                    assertEquals("user-page", updatedContentFragment.getProperty("prop"));
+                    assertEquals("user-page", updatedContentFragment.getProperty("user-prop"));
+                    updatedContentFragment = (ContentFragment)(newPageContentPage.getFragmentsByName("new-fake-fragment-definition-0").get(0));
+                    assertEquals("global-template", updatedContentFragment.getProperty("global-prop"));
+                    assertEquals("user-template", updatedContentFragment.getProperty("prop"));
+                    assertEquals("user-page", updatedContentFragment.getProperty("user-prop"));
+                    updatedContentFragment = (ContentFragment)(newPageContentPage.getFragmentsByName("new-fake-fragment-definition-1").get(0));
+                    assertEquals("global-page", updatedContentFragment.getProperty("global-prop"));
+                    assertEquals("user-page", updatedContentFragment.getProperty("prop"));
+                    assertEquals("user-page", updatedContentFragment.getProperty("user-prop"));
+                    assertEquals("global-fragment-definition", updatedContentFragment.getProperty("global-fragment-definition-prop"));
+                    assertEquals("user-fragment-definition", updatedContentFragment.getProperty("fragment-definition-prop"));
+                    assertEquals("user-fragment-definition", updatedContentFragment.getProperty("user-fragment-definition-prop"));
+                    List contentFragments = newPageContentPage.getFragmentsByName("new-fake");
+                    assertNotNull(contentFragments);
+                    assertEquals(1, contentFragments.size());
+                    contentFragments = ((ContentFragment)contentFragments.get(0)).getFragments();
+                    assertNotNull(contentFragments);
+                    assertEquals(3, contentFragments.size());
+                    Iterator contentFragmentsIter = contentFragments.iterator();
+                    while (contentFragmentsIter.hasNext())
+                    {
+                        ContentFragment contentFragment = (ContentFragment)contentFragmentsIter.next();
+                        if (contentFragment.getType().equals(ContentFragment.PORTLET) && contentFragment.getName().equals("new-fake-portlet"))
+                        {
+                        }
+                        else if (contentFragment.getType().equals(ContentFragment.PORTLET) && contentFragment.getName().equals("new-fake-fragment-definition-1"))
+                        {
+                            assertEquals(newDefinition1.getDefId(), contentFragment.getRefId());
+                        }
+                        else if (contentFragment.getType().equals(ContentFragment.PORTLET) && contentFragment.getName().equals("fake-fragment-definition-0"))
+                        {
+                            assertEquals("fake-fragment-definition-0", contentFragment.getRefId());
+                        }
+                        else
+                        {
+                            fail("Unexpected content fragment: "+contentFragment.getType()+"/"+contentFragment.getName());
+                        }
+                    }
+                    ContentPage newContentPageContentPage = pageLayout.newContentPage(newContentPage, newTemplate, newFragmentDefinitions);
+                    assertNotNull(newContentPageContentPage);
+                    assertEquals("new-content-page-updated", newContentPageContentPage.getShortTitle());
+                    assertEquals("new-doc-type", newContentPageContentPage.getContentType());
+                    assertFalse(newContentPageContentPage.isInheritable());
+
+                    return null;
+                }
+                catch (Exception e)
+                {
+                    return e;
+                }
+                finally
+                {
+                    JSSubject.clearSubject();
+                }
+            }
+        }, null);
+        if (exception != null)
+        {
+            throw exception;
+        }
+    }
+    
+    public void testUpdateSecurityConstraints() throws Exception {
+        assertNotNull(pageManager);
+        assertNotNull(pageLayout);
+
+        Page page = pageManager.getPage("/page.psml");
+        assertNotNull(page);
+        ContentPage pageContentPage = pageLayout.newContentPage(page, pageManager.getPageTemplate("/template.tpsml"), Collections.emptyMap());
+        assertNotNull(pageContentPage);
+        ContentFragment contentFrag = pageContentPage.getFragmentByFragmentId("fake-portlet");
+        assertNotNull(contentFrag);
+        
+        pageLayout.updateSecurityConstraints(contentFrag, null);
+        assertNull(contentFrag.getSecurityConstraints());
+    }
+
+    public static abstract class AbstractTestPrincipal extends TransientJetspeedPrincipal
+    {
+        private static final SecurityAttributeTypes attributeTypes = new SecurityAttributeTypes()
+        {
+
+            public Map<String, SecurityAttributeType> getAttributeTypeMap()
+            {
+                return Collections.emptyMap();
+            }
+
+            public Map<String, SecurityAttributeType> getAttributeTypeMap(String category)
+            {
+                return Collections.emptyMap();
+            }
+
+            public boolean isExtendable()
+            {
+                return false;
+            }
+
+            public boolean isReadOnly()
+            {
+                return true;
+            }
+        };
+        
+        private JetspeedPrincipalType type;
+        
+        private static final long serialVersionUID = 1L;
+        
+
+        public AbstractTestPrincipal(final String type, String name)
+        {
+            super(type, name);
+            this.type = new JetspeedPrincipalType()
+            {               
+                public SecurityAttributeTypes getAttributeTypes()
+                {
+                    return attributeTypes;
+                }
+
+                public String getClassName()
+                {
+                    return null;
+                }
+
+                public String getName()
+                {
+                    return type;
+                }
+
+                public Class<JetspeedPrincipal> getPrincipalClass()
+                {
+                    return null;
+                }
+            };
+        }
+
+        public synchronized JetspeedPrincipalType getType()
+        {
+            return type;
+        }
+    }
+    
+    public static class TestUser extends AbstractTestPrincipal implements User
+    {
+        private static final long serialVersionUID = 1L;
+
+        public TestUser(String name)
+        {
+            super(JetspeedPrincipalType.USER, name);
+        }
+    }
+}

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/org/apache/jetspeed/layout/AbstractTestPageLayout.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



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